OpenVPN
SoftEther(現PacketiX)が有料になって使えなくなったので、OpenVPNを試してみた。PacketiXみたいなゴテゴテしたGUIはないけど、OpenVPN GUI for Windowsというツール(?)もあるので、Windowsでも結構簡単に使えた(というか、今のところサーバーもクライアントもWindows→ Linuxクライアントも追加(2006年4月17日))。
○環境(IPは本当のIPではない)
・サーバー
Windows 2000 Professional SP4
ブリッジ(bridged)は使わないでルート(routed)モードにした
物理IF 192.168.20.20/24
NATで、外からは43.244.202.178に見える。
・クライアント1
Windows XP Professional SP2
物理IF 192.168.30.30/24
・クライアント2
Linux(CentOS 4.3)
物理IF 192.168.30.1/24
VPNは192.168.40.0/24
構成図はこんな感じ。
どちらもOpenVPN GUI for Windows 1.0.3 with OpenVPN 2.0.5を使用。GUIツールとOpenVPNが一緒になったパッケージ。
○サーバー
OpenVPN GUI for Windowsをインストール。特に難しい事はないと思う。自動的にTAPデバイスもインストールされる。
次に設定ファイルや鍵を作らなければいけない。バッチファイルが用意されているので、手順通りにやれば難しくないんだけど、このあたりもインストーラでやってくれると非常に便利なソフトになるんじゃないかって気がする。
・鍵の作成
通常の環境だと以下のフォルダにバッチファイル類がある。
C:Program FilesOpenVPNeasy-rsa
以下の順番に実行していけばよい。ダブルクリックだとうまく動かなかった気がするので、コマンドプロンプトを立ち上げて、cdコマンドでそのフォルダに移動しないとダメだった。
c: cd Program FilesOpenVPNeasy-rsa init-config
以下のコマンドを実行すると、いくつか質問される。SSLの認証鍵とか作った事ある人なら大体分かると思う。その後にもいくつかコマンドを実行して鍵を作る。このページに書いてある説明が割と分かりやすかった。
vars clean-all build-ca build-key-server server build-dh
作成された鍵は、easy-rsakeysフォルダに入っているので、以下の鍵をconfフォルダにコピー
- ca.crt
- ca.key
- dh1024.pem
- server.crt
- server.key
・クライアント用の鍵を作成。
各クライアント毎に個別の鍵を作成する必要がある。これもサーバー側で実行
build-key client1
・ネットワーク接続名の変更
作成されたTAPデバイスのネットワーク接続は「ローカルエリア接続 2」とかなってると思うので、それを分かりやすい名前に変更。後ほど設定ファイルでその名前を指定する事になるので。とりあえず自分の場合は「Tap」にした。
・設定ファイルの作成
設定ファイルは、sample-configフォルダの中のserver.ovpnファイルをconfフォルダーにコピーして、それを修正する。最低限必要な設定は以下の通りだと思う。
# TAPデバイスの名前 dev-node Tap #VPNのネットワークアドレス server 192.168.40.0 255.255.255.0
この設定により、VPNサーバーのTAPデバイスは192.168.40.1に設定される。
この設定だけだと、VPNクライアント(192.168.40.x)からはVPNサーバー(192.168.40.1)は見えるけど、接続先のLANにはアクセスできない。従って以下のようなルーティング情報を設定ファイルに追加。
push "route 192.168.20.0 255.255.255.0" push "route 192.168.1.0 255.255.255.0"
・起動
OpenVPNはWindowsサービスとして登録されている。
自分の場合は、最初server.ovpnを右クリックし「Start OpenVPN on this config file」を選択して起動してみた。コマンドプロンプトが開いてメッセージが表示されるから、エラーがあればすぐ分かるので。
特にエラーがなければ、通常のWindowsサービスと同様に「マイコンピュータ」を右クリック→「管理」を選択。その後、左側のメニューで「サービスとアプリケーション」→「サービス」を選んで「OpenVPN Service」をダブルクリック
- 「開始」ボタンをクリックしてサービスを起動。
- 「スタートアップの種類」を自動にし、コンピュータの再起動後もサービスが自動的に立ち上がるようにする。
○クライアント
OpenVPN GUI for Windowsをインストール。サーバー側と特に変わらず。
・鍵ファイルのコピー
サーバー側で作成した鍵ファイルをクライアントに安全な方法でコピー。遠隔地ならSSH、物理的に近ければUSBメモリとか。以下のファイルをクライアントのconfigフォルダにコピー
- ca.crt
- client1.key
- client1.csr
・設定ファイルの作成
sample-configフォルダからclient.ovpnをconfigフォルダにコピー。
以下の箇所を修正する必要あり。
#OpenVPNサーバーのIPアドレス・ポート remote 43.244.202.178 1194 #鍵関係のファイル、ファイル名が違う場合は直す ca ca.crt cert client1.crt key client1.key
・接続
タスクトレイに常駐しているOpenVPN GUIのアイコンを右クリックして「Connect」を選択する。上手くいかない場合は「View Log」でログを確認。
○クライアント2(Linux)
・インストール
必要なパッケージをいくつか入れなければいけない
- openssl-devel
- pam-devel
- lzo
最後のLZOのみソースからインストール。その他はyumで。
その後はOpenVPNのインストール。configure, make, make installと、特に問題はないはず。
・設定ファイル
UNIX系固有の設定はとりあえず以下のところだけ。
user nobody group nobody
設定ファイルと、この後作る鍵ファイルは/usr/local/etcに置いた。
・鍵の作成
Windowsの場合と同じ。後からクライアントの鍵だけ作る場合は、サーバー側で以下のように作る。
>cd "C:Program FilesOpenVPNeasy-rsa"
>vars.bat
>build-key client2
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.......................++++++
..................................++++++
writing new private key to 'keysclient-susanoo.key'
ユティリティ
FrontPage > ユティリティ ユティリティ ツール ↑Skype ↑(1) Skype スカイプという無…
ユティリティ
FrontPage > ユティリティ ユティリティ ツール ↑Skype ↑(1) Skype スカイプという無…