作者の趣味、気になることをつづるblogです

10 月
2009
25

VPNの導入

以前から以下のようなことがしたいと考えていました。

・外出先から自宅デスクトップへのVNCアクセス
・実家の両親と写真をWindowsのファイル共有をつかって共有する

そんなこともあり、今回ソフトによるVPN回線の導入を行ってみました。

まず試したのが、簡単そうだった TinyVPNです。サーバー側にフルセット版をインストールし、クライアント側には仮想NICのみをインストールします。設定も分かりやすく、簡単に導入できました。ところが、大きなトラブルが2つ発生しました。

1.ブリッジ接続
我が家では、192.168.x.xのクラスCのプライベートアドレスをDHCPにて振り分けています。当初は、VPNを等してサーバーに直接にアクセスできればよいとかんがえていたので10.8.x.xのようなクラスAのアドレスをVPN側には個別に振ってあげればよいと考えていました。

ところが、サーバーにインストールしてあった、リビングで音楽や録画したテレビの動画を配信するためのソフトがこの状態では正常に動作しなくなりました。このソフトはサーバーに設定されているIPアドレスを、メディアプレイヤー側に配信しているようなのですが、どうやらクラスAの方のアドレスを通知してしまい、その結果メディアプレイヤーはそのIPアドレスに対してアクセスをしてしまっているようです。ソフト側の設定をいろいろ眺めてみましたが、回避策がなさそうです。

というわけで、VPNの仮想NICには既存の物理ネットワークと同じサブネットのアドレスを振る必要がでてきました。ここまでであれば、単純にXPが標準機能として持つ、ブリッジ接続機能を使えば同じサブネットにすることができたのですが…

XPのブリッジ接続機能は2つ以上のNICを統合し、新たなNICを仮想的に作り出します。しかしこの方法をとってしまうと、別の問題が発生することが分かりました。いままで自宅では、サーバーPCをWOLで起動させていたのですが、ブリッジ機能により新規のNICが作り出されてしまうと、それが使えなくなってしまいます。

いろいろ調べたところ、Ethernet Bridgeというソフトを発見し、NICを統合せずにブリッジ接続環境を立ち上げることができました。

2.Vistaからの通信
さて、仮想NICがブリッジ接続できました。いろいろと確認テストを行っていたのですが以下のような問題が起きました。

・VPN経由で接続してくるクライアント側(Vista)にDHCPサーバーがIPアドレスをリースできない
・クライアント側(Vista)にPINGが通らない

ドライバの設定見直しやファイアウォールを一時的に無効にしてみたりといろいろ試したのですが、改善の見込みがありません。DHCPサーバーのログをみると、発行のリクエストまではサーバーの来ているものの、それをクライアント側が受け入れるという処理にまで行っていないようです。いろいろ試行錯誤したのですが、全く原因がわからないので、しかたなく押し入れで眠っていたXPのノートPCを取り出して、試験的につなげてみました。全く問題なく動作したことから、どうやらVistaがおかしいという結論になりました。

といっても回避策がみつかるわけでもなく、別のソフトで試してみることにしました。

次に試したのは、オープンソースであるOpenVPNです。公開秘密鍵方式の暗号化が基本であることや、資料の多くがLinux向けだったことから、導入を躊躇していました。

しかし実際にやってみると、http://www.openvpn.jp/の資料と、そこで配布されている日本語版GUIツールを利用することで、インストール自体は簡単に行えました。また以前にApacheサーバーを構築する際に自己認証局をつくったこともあったので、open_sslに関する作業もなんとなく理解しながら進めることができました。(open_ssl単独で使うよりはかなり簡単に利用できるように整備されているところは感動しました)

細かいところで分からなかったことが2つほど。

1.サーバー側のDHCPの管理
基本的にはOpenVPN自身がDHCPサーバーになろうとします。既存の物理LANにDHCPサーバーが存在し、同じサブネット上にDHCPサーバーをもう一つ立てるということはしたくなかったので、仮想VPN側もまとめて、既存のDHCPサーバーにIPアドレスの管理をさせようとしました。しかし、そのあたりのドキュメントが少なく、どうしようか困っていましたが、OpenVPNが表示するエラーメッセージを手掛かりに、いくつかのディレクティブを消していったら、動作するようになりました。

2.クライアント側(Vista)のUAC(ユーザーアカウント制御)
クライアント側は、OpenVPN GUIを利用することで、好きな時にVPN接続をかけることができます。ただログをみると、いくつかのエラーが出ていたり、接続が不安定だったりします。UACにより必要な処理に制限がかけれていたようです。管理者として、OpenVPN GUIを起動するとあとは問題ないようです。

さて上記問題をクリアした後、
・サーバーのVPNをサービス化する
・ルーターに穴をあけ、外部からの接続を可能にする
といった作業をおこない、ためしにダイアルアップ接続でサーバーにつなげてみました。

結論的には…遅すぎて使えない状態です。56kモデムでは無理があるのでしょう。そのうち実家に帰省するので、その時に期待するパフォーマンスが出るかどうか試してみます。

いままで仕事ではVPNをつかっていましたが、そのロジックなどは良く分かっていませんでした。今回ソフトウエアによる導入でしたが、L2トンネリングとかブリッジ接続とか、ちょっぴり知識が上がりました。

トラックバック・ピンバックはありません

ご自分のサイトからトラックバックを送ることができます。

コメントをどうぞ


PR