Locked History Actions

Diff for "OpenVPN/OpenSource"

Differences between revisions 5 and 6
Deletions are marked like this. Additions are marked like this.
Line 62: Line 62:




Sample
Sample
Sample
Sample
Sample
Line 78: Line 78:




Sample
Sample
Sample
Sample
Sample

オープンソース版

CentOS release 6.5(Final)へインストールする。このサーバに接続できればよい、他のオプションは一切不要。

yum install openvpn

でインストール(epelリポジトリの追加が必要だったかも)。

現在のバージョンはopenvpn-2.3.12。 /usr/share/doc/openvpn-2.3.12/にドキュメント、サンプルファイルが格納される。

認証方式の選択

とりあえず一人で使うので認証方法は静的キーにしようと思ったのだが、この方式ではクライアントがただ一つしか接続できないとのこと。しかし、どうも試してみると、「クライアント」ではなく対等な関係の1対1のようである。 つまり、サーバ・クライアントの区別は無く、クライアント側も通信ポートのTCPあるいはUDPの1194を開けておく必要がある模様(定かではない)。これでは役に立たないので静的キーはやめた。 ちなみに、設定ファイルには1対1の記述しかできないが、複数の設定ファイルを作成して(おそらくポートやIPアドレスは異なっている必要がある)、複数のインスタンスを作成できるので、一つのサーバマシンに対して1つのクライアントしか接続できないということは無い模様。つまり、認証方式n一つとして静的キーという選択があるのではなく、クライアント・サーバという動作ではなくなってしまうものと思われる。

検証するのも面倒なので以上は単なる推測。

やりたいこととしては

  • ただ一つのキーファイルあるいはただ一つのユーザアカウントを複数クライアントに配れば、それらクライアントが同時に接続できる。
  • Windowsクライアントのファイアウォール設定をいじる必要は無い。
  • サーバからクライアントに対して何らかの操作をすることはない(sサーバ側からクライアントにあるウェブページを見るなど)。
  • サーバは特にいわゆるクラウドでも無いので、そのサブネットにアクセスする必要はない。
  • クライアント側からの一般的なネット接続(一般のウェブサイト閲覧など)はサーバを経由する必要はない(させたくない)。
  • クライアントどうしがやりとりする必要はない。
  • サーバの機能(全ポート)には、特に設定することもなく自由にアクセスできる。

要するに、LANの中にファイアウォールを全解放したサーバがあるかのように扱えればよい。

ID/パスワード認証によるサーバ側設定

参考としてあげたURLを参照してID/パスワード認証とする。ただし、そのままではない。いろいろと不都合な点があるのでそれは適宜変更してある。

この方式では、

  • キーファイルや証明書が必要になるが、opensslがあれば簡単に作成できる。
  • それらの証明書等は、複数クライアントで同じものを配っておけばよい。
  • 対象サーバの中のユーザアカウント情報を、そのままクライアントの認証情報として使用できる。

この方式で使用するソフトは以下。

  • もちろんopenvpnであるが、サーバ側はyumでインストールしたもの。クライアント側はvpnux clientを使う。クライアント用のopenvpnよりも楽ができる。
  • openssl
  • サーバのファイアウォールをいじるためにopensslを使う。

opensslをアップデートしておく。

yum update openssl

サーバ側:キーファイルの作成

openvpnをインストールすると、/etc/openvpnディレクトリが作成されるので(空のはず)、そこに以下のスクリプトを、例えばcreatekeysとして作成、「sh createkeys」で実行してキーファイルを作る。

echo generating CA
openssl genrsa 2048 > ca.key 2> /dev/null
openssl req -utf8 -new -key ca.key -out ca.csr 2> /dev/null << EOT
JP
Sample
Sample
Sample
Sample
Sample




EOT
openssl x509 -in ca.csr -out ca.crt -req -signkey ca.key -days 3650 -sha256 2> /dev/null
echo generating server certificate
openssl genrsa 2048 > server.key 2> /dev/null
openssl rsa -in server.key -out server.key 2> /dev/null
openssl req -utf8 -new -key server.key -out server.csr 2> /dev/null << EOT
JP
Sample
Sample
Sample
Sample
Sample




EOT
openssl x509 -in server.csr -out server.crt -req -CA ca.crt -CAkey ca.key -days 3650 -sha256 -CAcreateserial 2> /dev/null
chmod 400 *.key

echo generating dh2048.pem
openssl dhparam -out dh2048.pem 2048 2> /dev/null

echo generating ta.key
openvpn --genkey --secret ta.key 2> /dev/null
echo done!

参考