2008年02月

2008年02月09日

OpenVPNの導入

このエントリーをはてなブックマークに追加
お手軽にHTTPトンネルのVPNを張れるSoftEther1.0は、ダウンロードが廃止になった今でもよく利用するんですが、最近、家のVISTAのマシンで動かなくなってしまいました。

そんなわけで、この機会にOpenVPNへ移行することにしました。

以前からも乗り換えようかとは考えていたものの、SoftEther 1.0の方が設定が楽なのと、OpenVPNの速度の評判があまり良くない事から保留していました。

そのあたりも含めて、Windows間でVPNを構築する、お手軽な設定手順と動作レポを書いておこうかと。

設定には下記の日本語訳サイトを参考にしました。
以降の手順も下記から一部引用しています。

OpenVPN 2.0 HOWTO 日本語訳

OpenVPN Static Key Mini-HOWTO 日本語訳

【インストール・設定手順】

1.ダウンロード

    Windows版 OpenVPN 2.0をここからダウンロード
    
2.インストール
  
  ダウンロードしたインストーラ
  openvpn-2.0.x-install.exeを実行し、サーバ、クライアントのマシンに
  それぞれインストール。

  デフォルトの設定で、インストールすると、OpenVPNのサービスと、
  TAP-Win32 Adapterという、OpenVPN用の仮想Ethernetアダプタがインストールされます。
  インストールの途中、そのドライバに署名が無い警告が出ますが、無視。
  OpenSSLもインストールされます。

3.設定

  OpenVPNはX509 PKI(証明書と秘密鍵を用いる公開鍵基盤)を通常使って
  認証を行うのですが、ここではお手軽設定を目指して、静的鍵方式を使います。

  (1) 鍵の作成
     OpenVPNをインストールしたマシンのいずれかで、下記コマンドを実行します。

     openvpn --genkey --secret static.key(作成する鍵ファイル名)

  
  作成された鍵ファイル(staitc.kei)をサーバ、クライアントの任意のところに置きます。
    ここではOpenVPNの設定ファイルのディレクトリ
    (デフォルトはC:\Program Files\OpenVPN\config)に置きます。

    (2) サーバの設定ファイルの編集
     OpenVPNの設定ファイルのサンプルファイル
     (デフォルトはC:\Program Files\OpenVPN\sample-config\sample.ovpn)
     を設定ファイルディレクトリにコピーし、server.ovpnの名前に変更して、
     下記部分を変更します。

            # Change 'myremote' to be your remote host,
            # or comment out to enter a listening
            # server mode.
            ;remote myremote  ← コメントアウトする。

            # Uncomment this line to use a different
            # port number than the default of 1194.
            port 1194 ← VPNの通信で使用するポート番号を記載する。

            # This is a 'dev tap' ifconfig that creates
            # a virtual ethernet subnet.
            # 10.3.0.1 is the local VPN IP address
            # and 255.255.255.0 is the VPN subnet.
            # Only define this option for 'dev tap'.
            ;ifconfig 10.3.0.1 255.255.255.0 ← コメントアウトする。
            
             上記は、SoftEtherと違い、OpenVPNの場合は
            インターフェースのIPアドレスの設定をこちらに記載できるようです。
             ここではWindows側で設定させるためにコメントアウトします。

            # You can generate a static OpenVPN key
            # by selecting the Generate Key option
            # in the start menu.
            #
            # You can also generate key.txt manually
            # with the following command:
            #   openvpn --genkey --secret key.txt
            #
            # key must match on both ends of the connection,
            # so you should generate it on one machine and
            # copy it to the other over a secure medium.
            # Place key.txt in the same directory as this
            # config file.
            secret "C:\\Program Files\\OpenVPN\\config\\static.key" 
           ↑作成した鍵ファイルのパスをフルパスで記載する。

            Windowsの場合、\がエスケープ文字のため、パス区切りは\\で記載します。
     (注:\は半角¥です。)
            コメントには設定ファイルと同じディレクトリに置くと説明がありますが、
            そこに置いても、フルパスで記載しないと読み込みませんでした。

    (3) クライアントの設定ファイルの編集
     サーバと同じサンプルの設定ファイルを設定ファイルディレクトリにコピーし、
     client.ovpnの名前に変更して、下記部分を変更します。


            # Change 'myremote' to be your remote host,
            # or comment out to enter a listening
            # server mode.
            remote hoge.hoge.com ← 接続先のサーバ名を記載する。

            # Uncomment this line to use a different
            # port number than the default of 1194.
            port 1194 ← サーバ側で設定したポート番号を記載する。

            # This is a 'dev tap' ifconfig that creates
            # a virtual ethernet subnet.
            # 10.3.0.1 is the local VPN IP address
            # and 255.255.255.0 is the VPN subnet.
            # Only define this option for 'dev tap'.
            ;ifconfig 10.3.0.1 255.255.255.0 ← コメントアウトする。

            # You can generate a static OpenVPN key
            # by selecting the Generate Key option
            # in the start menu.
            #
            # You can also generate key.txt manually
            # with the following command:
            #   openvpn --genkey --secret key.txt
            #
            # key must match on both ends of the connection,
            # so you should generate it on one machine and
            # copy it to the other over a secure medium.
            # Place key.txt in the same directory as this
            # config file.
            secret "C:\\Program Files\\OpenVPN\\config\\static.key" 
           ↑作成した鍵ファイルのパスをフルパスで記載する。


    (4) 動作確認

     設定が正しく有効になっているか、動作確認を行います。
     Windowsの場合、サービスから起動できますが、
     最初は状況確認のため、コマンドラインから起動してみます。

     まず、Windowsのネットワーク接続の設定で、作成されたTAP-Win32 Adapterに
     IPアドレスをサーバ、クライアントそれぞれ設定します。

     次に下記コマンドでサーバ側を起動します。

     openvpn "C:\Program Files\OpenVPN\config\server.ovpn"(設定ファイル名)

     エラー終了せず下記の表示がでれば起動完了。

     UDPv4 link local
     UDPv4 link remote:     

           次にクライアント側を起動します。

     
      サーバへの接続が成功し、サーバ、クライアント共に、
      Initialization Sequence Completed
      のログが表示されれば、接続成功です。

              サーバ、クライアントに設定したアドレスに対し、pingで疎通確認します。

      うまく接続ができない場合はWindowsのネットワーク設定や、
      ルータの設定を見直しましょう。

      動作確認完了後はコマンドプロンプトからF5キーを押して終了させます。
      
      あとは、サーバ、クライアント共に、WindowsのOpenVPNのサービスを
      自動起動に変更し、起動させます。

      サービスから起動しても、通信できるか確認できたら設定完了です。


【SoftEther1.0との比較】

ここで自分が感じたざっくりSoftEtherとの主な違いをあげてみると、

・設定ツールがない。
 設定ファイルを手で書き換えねばならないのが若干面倒です。

・通信にUDPを使用する。
 TCPも使用できますが、デフォルトはUDPです。

・IPアドレスが設定ファイルで設定可能
 ここはLayer2のVPNとしては、かえって混乱しそうなポイントでした。

・認証に鍵ファイルが必須。
 出先でダウンロードしてインストールっていうのは難しそうです。

・通信速度

これについては同じサーバ、ネットワーク上に張ったそれぞれのVPN上で、pingの応答速度と、HTTPのダウンロード速度をアバウトに比較してみました。

暗号化の設定は両方ともデフォルトです。

・OpenVPN

 ping

  Reply from 10.x.x.x: bytes=32 time=28ms TTL=128
  Reply from 10.x.x.x: bytes=32 time=17ms TTL=128
  Reply from 10.x.x.x: bytes=32 time=13ms TTL=128
  Reply from 10.x.x.x: bytes=32 time=31ms TTL=128

 ダウンロード
  約560KB/秒
 
・SoftEther

 ping

  Reply from 172.16.x.x: bytes=32 time=12ms TTL=128
  Reply from 172.16.x.x: bytes=32 time=13ms TTL=128
  Reply from 172.16.x.x: bytes=32 time=13ms TTL=128
  Reply from 172.16.x.x: bytes=32 time=13ms TTL=128


 ダウンロード
  約510KB/秒
 
【まとめ】

SoftEtherと比べてとっつきにくいと思っていた、OpenVPNですが、
実際設定してみると、最小限の通信設定には、
それほど手間はかからないようです。

あと、環境によっては、HTTP-Proxy経由の接続も必要になるかと思うので、
そのあたりも動作検証していこうかと。

以上



zeroaka at 21:00|PermalinkComments(1)TrackBack(0)このエントリーを含むはてなブックマーク │設定情報 | PC