今更ながら、VPN環境が整ったので、その手順をメモしておきます。
VPNには、接続先の端末と1対1でつながるルーティング方式と、接続先のLAN環境に参加するブリッジ方式があります。
今回はルーティング方式についてのお話です。
また、VPNはさまざまな環境で利用可能ですが、今回のOS環境はWindowsとします。接続元となるクライアント環境はWindows 7で、接続先のサーバ環境はWidows XPとします。
さらに、接続に利用するポート番号はデフォルトの1194と仮定します。
VPNソフトをインストールする
VPNソフトはいろいろありますが、有償のものが多いです。フリー版もありますが、ほとんどの場合が機能制限付です。
そんな中でも、コストパフォーマンスの高い「OpenVPN」を今回は利用します。
OpenVPN – Open Source VPN
こちらのサイトで迷子になることがあるのですが、クライアント、サーバいずれも、以下のページの「Installers and source packages」の「Windows Installer」からソフトをダウンロードします。
http://openvpn.net/index.php/download.html
ダウンロードした実行ファイルをクリックし、ナビゲーション通りに進めればインストールは完了します。
ちなみに、今回の例でのOpenVPNでのバージョンは「2.2.2」です。
インストール時に、ネットワークアダプタが追加されます。通常では「ローカル エリア接続2」などとして追加されますが、以後に扱いやすくするために名前を「Tap」などに変更しておきます。
証明書と鍵を作成する
VPN接続には証明書と鍵は必要であり、また、それにより高いセキュリティでの接続を実現します。
証明書と鍵はサーバサイドで作成します。
コマンドプロンプトを開き、コマンド「cd」で「C:(インストール先)OpenVPNeasy-rsa」へ移動します。
そして、以下のコマンドを順に実行します。
init-config vars clean-all build-ca
「init-config」実行時の設定項目は空白にしないようにしましょう。
「build-ca」の対話形式ですが、以下のように「Common Name」は設定するようにします。他の項目は任意です。
Common Name (eg, your name or your server's hostname) []:(任意)
次にサーバ証明書と鍵を作成します。
build-key-server server
この時にいくつか質問がありますが、「y(Yes)」でよいでしょう。
続けて、クライアント証明書と鍵を作成します。
build-key client1
「client1」はユニークで任意のクライアント名とし、接続元が複数の場合は、名前を変えて、その数だけ実行します。
最後に以下のコマンドを実行します。
build-dh
「keys」ディレクトリに複数のファイルが生成されています。USBなど安全な方法でクライアント端末に「ca.crt」をコピー、「client1.crt」と「client1.key」を移動させます。
サーバ設定
インストールディレクトリの「OpenVPNsample-config」から、ファイル「server.ovpn」を「OpenVPNconfig」にコピーします。
「server.ovpn」をテキストエディタで開き、以下の項目を設定します。
先ほど変更したネットワークデバイス名を設定します。
dev-node TAP
ルーティング方式では接続元と接続先で仮想ネットワーク空間を構築するのですが、任意でそのアドレス空間を設定します。
server 192.168.100.0 255.255.255.0
この場合、サーバは自動的に「192.168.100.1」が割り振られます。
クライアント設定
インストールディレクトリの「OpenVPNsample-config」から、ファイル「client.ovpn」を「OpenVPNconfig」にコピーします。また、先ほどサーバで生成した証明書と鍵も同ディレクトリに設置します。
「client.ovpn」をテキストエディタで開き、以下の項目を設定します。
先ほど変更したネットワークデバイス名を設定します。
dev-node Tap
接続先サーバを指定します。こちらの設定では接続先の端末が固定IPであるか、もしくはルータ経由で特定できる必要があります。
remote XXX.XXX.XXX.XXX 1194 ;remote my-server-2 1194
各クライアント用に生成した証明書と鍵のファイル名を指定します。
ca ca.crt cert client1.crt key client1.key
OpenVPNを起動する
まずはサーバから、先ほどの設定ファイル「server.ovpn」を右クリックし、「Start OpenVPN on this config file」をクリックします。
コマンドプロンプトが起動してメッセージが表示されますが、特にエラーメッセージなどが含まれておらず「Initialization Sequence Completed」と表示されていれば、ひとまず成功と考えてよいでしょう。
次にクライアントですが、同様に、先ほどの設定ファイル「client.ovpn」を右クリックし、「Start OpenVPN on this config file」をクリックします。
これも同様にエラーがなく「Initialization Sequence Completed」と表示されれば成功です。
実際にpingなどを打ってみて、接続が成功しているか確認します。今回の例だと、以下のようにコマンドを実行します。
ping 192.168.100.1
pingの応答があり問題なく接続が確立された場合、今後はバックグラウンドで自動で接続できるようにしましょう。
OpenVPNはインストール時にサービスが登録されているので、そちらから自動起動が可能です。
コントロールパネルからサービスを開き、「OpenVPN Service」のプロパティを開き、スタートアップの種類を「自動」にします。
サービスでコントロールするとコマンドプロンプトを開かないので、ウィンドウが邪魔にならなくて良いです。
逆に、繋がらない場合は、初めの方法で起動し、コマンドプロンプトからエラーの原因を取得できます。
ルータの設定
通常、VPNのサーバとなる端末は、セキュリティの面からもネットワーク上で直接接続できる位置には置かないと思われます。特に今回のようにWindowsとなればなおさらですね。
たいていの場合は、ルータ経由で任意のネットワーク内にあるVPNサーバに接続に行くと考えらえますが、そのためにはIPマスカレード、NATなどの技術を使って、ルータに穴を開ける必要があります。
今回、その方法は割愛しますが、ルータ設定の専門知識は必要になるでしょう。
OpenVPNは管理者権限で実行
Windows Vista以降の環境では、OpenVPNを管理者権限で実行しないとエラーになってしまいます。
Windows Vista、Windows 7では「OpenVPNbin」の「openvpn.exe」と「openvpn-gui-1.0.3.exe」を右クリックでプロパティを開き、特権レベルの「管理者としてこのプログラムを実行する」にチェックを入れておきましょう。