* OpenVPNの設定 [#m51a6e22] OpenVPNは、SSLVPNを実現するソフトウェアです。 本ページは、多くを下記の情報に頼って書いています。より正確な内容をお求めの場合は、原著のほうをご参照ください。 - [[OpenVPN 2.0 Japanese Translation:http://freescitech.net/2/ovpn2_howto_ja.html]] ** 何ができる? [#bb313ced] 具体的に、うちが実現している環境は、以下の通りです。 外部PC[仮想IP:10.8.0.6] -----> ルータ -----> 内部サーバ[仮想IP:10.8.0.1] 10.8.0.1 に対しては、LAN 環境にいるのと同様にアクセスができます。具体的には、どのポートにも自由に接続できます。 ** インストール [#l4d36f03] まずは、サーバ側に OpenVPN をインストールします。 # apt-get install openvpn 続いてクライアント側にも OpenVPN をインストールします。うちは Windows でしたので、GUI版クライアントをインストールしました([[ダウンロード:http://openvpn.se/files/install_packages/]]) ** 証明書や鍵の生成 [#r150e022] インストールを終えたら、VPN に必要な証明書や鍵の用意を行います。この作業は、openvpn に添付されているスクリプトを使うと、便利です。"easy-rsa" というディレクトリがあるので、それを "/etc/openvpn" などへコピーしてください。もし、見つからない場合は、locate コマンドなどで探してみてください。 続いて、鍵の生成を行ないます。"easy-rsa" ディレクトリへ移動します。 cd /etc/openvpn/easy-rsa vars ファイルを開いて、KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL の値を入れてください。いずれの項目も空欄にしないように注意してください。 # . ./vars NOTE: when you run ./clean-all... vars を実行して、環境変数の設定を行ないます。"NOTE:" とメッセージを出力しますが、これは正常です。(恥ずかしながら、これがエラーメッセージであると勘違いして、少しハマリました) # ./clean-all keys ディレクトリが生成されます。 # ./build-ca このスクリプトは対話式で、認証局の証明書と鍵を生成します。ほとんどの項目にデフォルト値が入っていますが、CommonName は手動で入れる必要があります。 続いて、サーバの証明書と鍵を生成します。 # ./build-key-server server 基本的に、./build-ca と同じ流れで進みますが、最後に2回質問があるので、そこはきちんと [Y] を入力して、Return してください。何も入力しないで Return すると、作成に失敗します。 Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n] 続いて、クライアントの証明書と鍵を作成します。複数のクライアントが必要な場合は、"client2", "client3" というように、適宜増やしてください。 # ./build-key client1 次に、鍵共有のための DH の設定を行ないます。サーバクライアント間で実際の暗号鍵を受け渡しするさいの、暗号経路を作るさいに利用するものです。 # ./build-dh 少し時間がかかります。うちの環境では、2分程度でした。 以上の処理により、easy-rsa/keys ディレクトリ配下に、必要な鍵と証明書ができています。 |ca.crt|認証局の証明書| |ca.key|認証局の鍵| |dh.pem|DH パラメータ| |server.crt|サーバ証明書| |server.key|サーバ鍵| |client.crt|クライアント証明書| |client.key|クライアント鍵| ** 設定ファイル [#d1551768] *** サーバの設定 [#jdffdb23] まず、サーバの設定を行ないます。"sample-config-files" ディレクトリを探します。見つからなければ、locate コマンドなどで探してください。 そのなかにある server.conf を、適当な場所に移動してください。 cp server.conf /etc/openvpn/ 移動したあとは、編集を行ないます。ca、cert、key、dh を、それぞれ前節で生成したファイルに指定してください。 そして、server 項目で、サーバの VPN 用仮想IPアドレスを指定できますが、&color(red){実際の LAN で使っているプライベートネットワークは指定してはいけません};。ルーティングがおかしくなり、外部から参照がまったくできなくなります。リモートで作業している場合は致命的…。現地で対応しない限り、復旧不可です。 *** クライアントの設定 [#z6cc8871] 続いて、クライアントの設定を行ないます。前節で作成した証明書や鍵を、クライアントPCへコピーしてください。このさい、なるべく安全な経路を使うことが望ましいです。必要なものは、以下の3つです。 - 認証局の証明書 (サーバと共通) - クライアント証明書 - クライアント鍵 次に、設定ファイルを開きます。"C:\Program Files\OpenVPN\config\client.ovpn" になります。ca、cert、key を、正しいパスで設定してください。 次に、設定ファイルを開きます。client.ovpn を "C:\Program Files\openVPN\sample-config" から "C:\Program Files\OpenVPN\config\" へコピーしてください。そして、client.ovpn を編集します。 - ca、cert、key を、正しいパスで設定してください - remote my-server-1 を、正しい vpn サーバのアドレスに変更してください ** 起動 [#e0bde9b2] サーバを起動します。 # openvpn /etc/openvpn/server.conf & クライアントを起動します。タスクトレイにあるopenvpnのアイコン (パソコンモニタが2台並んだようなアイコン) をダブルクリックしてください。アイコンが緑色になれば接続成功です。黄色のままの場合は、問題があって、うまく接続できていません。 ** トラブルシューティング [#j72488eb] *** 証明書の作成ミス [#n0b20406] サーバで以下のようなログで失敗した場合、.crt ファイルがサイズ0 になっていないか確認してください。crt ファイル生成のときに、最後のほうの質問で [y/n] を正しく答えていないと、下記のような失敗が起きます。 Wed Jun 3 21:48:47 2009 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jun 11 2008 Wed Jun 3 21:48:47 2009 Diffie-Hellman initialized with 1024 bit key Wed Jun 3 21:48:47 2009 Cannot load certificate file /etc/openvpn/easy-rsa/keys/server.crt: error:0906D06C:PEM routines:PEM_read_bio:no start line: error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib Wed Jun 3 21:48:47 2009 Exiting *** 名前解決ミス [#t9043f6f] クライアントで、以下のようなログで失敗した場合、hosts ファイルにそのホスト名に対応する IP アドレスが正しく登録されているか確認して下さい。 クライアントで、以下のようなログで失敗した場合、 Tue Jul 13 08:33:43 2010 RESOLVE: Cannot resolve host address: my-server-1: [NO_DATA] The requested name is valid but does not have an IP address. 上記の例の場合、hosts ファイルに以下を追加します。xx.yy.zz.aa は、VPNサーバのあるグローバルIPアドレスです。 xx.yy.zz.aa my-server-1 余談ですが、Windows7 で hosts ファイルを編集するには、メモ帳を管理者権限で実行して、ファイルメニューから辿って開くと良いです。 ** ルーティングテーブルなどの設定 [#dda34c74] 外部 PC や内部サーバのルーティングテーブルを設定することで、より自由にアクセスができます。 また、DNS による名前解決を偽装したい場合は、hosts ファイルを使うと便利です。具体的には、以下のように設定します。 sub.omoshiro-joho.com 10.8.0.1 これにより、sub.omoshiro-joho.com へのアクセスは、素のインターネット経由ではなく、SSLVPN 経由になります。sub.omoshiro-joho.com が LAN 側からのアクセスしか許可しない設定になっているときや、内部 DNS でのみ名前解決されている場合に、有用です。 余談ですが、Windows7 で hosts ファイルを編集するには、メモ帳を管理者権限で実行して、ファイルメニューから辿って開くと良いです。 ---- ** 履歴 [#u2c24a02] - 2010/07/13 ぼくぴ クライアント側の内容を追記 - 2009/06/18 ぼくぴ 新規追加