2007年12月28日金曜日

OpenVPNを使ってみた

2004/夏頃作成

openvpnでVPN張って見ました。かなり苦労しました。一番苦労したところは、そもそもVPNが良くわかってなかったところです。

接続は
サーバ
FreeBSD 5.2.1
dion adsl
固定IPではなく、ダイナミックDNS
クライアント
WindowsXP
NAT内
で行いました。

openvpnはportsからインストールしました。場所は/usr/ports/security/openvpn/です。

インストールが終わったら、まず何をしていいのかがわからなかったです。今までは、設定ファイルのサンプルやconfigファイルフォルダが自動的に作られていたのですが、openvpnはぜんぜん作られていません。
/usr/local/etc/rc.d/にtapデバイス用のスクリプトがあるのですが、tapを使わない場合は必要ないです。

インストールが終わって、何をしたかというと。設定ファイルの準備です。
まずconfigファイル置き場を作ります。私の場合は、/usr/local/etc/openvpnにしました。
次に設定ファイルのサンプルをコピーします。設定ファイルのサンプルは、/usr/ports/security/openvpn/work/openvpn-1.6.0/sample-config-files/にあります。

使用する設定ファイルは、opensslを使って暗号化する場合
サーバ
tls-office.conf
クライアント
tls-home.conf
です。
サーバは/usr/local/etc/openvpn、クライアントはC:\Program Files\OpenVPN\configにコピーします。クライアントがWin版の場合は、ファイル名の拡張子がovpnのようなので一応tls- home.ovpnに変更しておきます。

ここで気をつけるのが設定ファイルの内容です。サーバとクライアントのMTUとcomp-lzoの設定が違うと怒られます。特にMTUは設定しておいたほうが無難です。設定していないとサーバとクライアントが勝手にMTUの値を設定してしまうので設定が違うと怒られます。

次にSSLの設定です。SSLについてはOpenSSLを使ったCAの構築 を参考にして、CAを作って、サーバの証明書を作って、クライアント用の証明書を作って、DHファイルを作って、という作業を行います。
CAを作ると、CAの証明書が出来ますので、CAの証明書とクライアント用の証明書とクライアント用の鍵(秘密鍵)をクライアントにコピーします。
あとは設定ファイルの証明書のところのパスを変更するだけで動きます。パスは絶対パスが間違いないです。

起動は、
サーバ
openvpn --config /usr/local/etc/openvpn/tls-office.conf
クライアント
openvpn --config C:\Program Files\OpenVPN\config\tls-home.ovpn
です。起動すると、いろいろメッセージが出ますが
Peer Connection Initiated with IPアドレス:ポート番号
というメッセージが表示されれば通信ができています。それまでにエラーが出た場合は、エラーの箇所を修正してください。

一番引っかかったのは、サーバとクライアントの設定が違うというエラーです。最初は何のことかわからなかったのですが、「相手の設定は(設定)です、この設定にしてください(設定)」というメッセージが出て通信が出来ませんでした。このメッセージは、設定がサーバとクライアント違っている場合に表示されます。MTUとかを適当に設定していたり、設定しなかったりすると、このメッセージがでます。

最後に通信確認です。サーバとクライアントそれぞれで相手にpingが飛べば接続できてます。Peer Connection Initiatedというメッセージが出ているのに通信できないときは、何かエラー出ていないかを確認してください。

0 件のコメント: