Windows XPをVPNゲートウェイにする
出典: Fukudat
Private LAN内のWindows XPマシンでVPNクライアント(Virtual Private Network Client)を動かしている(左図,物理構成参照)ので,当然このマシンだけからはVPNにアクセスできる.しかし,他のホストからはVPNにはアクセスできない.不便である.
そこで,物理的なネットワークで接続を共有するときと同じように,VPN Clientが動いているWindows XPでインターネット接続共有 (Internet Connection Sharing or ICS) を構成してやれば,他のホストからもVPNにアクセスできることがわかった(右図,論理構成参照).
以下にその設定方法を示す.
目次 |
接続の共有
まず最初に,以下の手順でVPNとの接続を共有する.
- VPNの論理接続をダブルクリック --> プロパティをクリック --> 詳細設定タブをクリック
- インターネット接続の共有のセクションにある「ネットワークのほかのユーザに,このコンピュータのインターネット接続をとおしての接続を許可する」をチェックする.
静的アドレスに変更
インターネット接続共有を行うと,このWindowsマシンのIPアドレスが自動的に192.168.0.1となってしまう.物理的ブロードバンドルーターのIPアドレスとぶつかってしまうので,別の静的アドレスに固定してしまうことにする.(もともと静的アドレスだったとしても,接続の共有を行うと 192.168.0.1 に勝手に変更されるので,このセクションの変更が必要となる).
- スタート --> マイネットワーク を右クリック --> プロパティ を開く.
- VPN Clientが構成されているので,2個以上の LANまたは高速インターネット アイコンが存在するはず.
- 1つはPrivate LANへの物理接続をあらわし,
- もう1つはVPNへの論理接続をあらわしている.
- Private LANへの物理接続をダブルクリック --> プロパティをクリック --> 「この接続は次の項目を使用します」のリストから TCP/IP を選択して,プロパティ をクリック.
- 「IPアドレスを自動的に取得する」ではなく,「次のIPアドレスを使う」を選択して,適切な値を設定する.ここでは,以下の値を用いている.
- IPアドレス: 192.168.0.33
- サブネットマスク: 255.255.255.0
- デフォルトゲートウェイ: 192.168.0.1
- 優先DNSサーバー: 192.168.0.11
- 代替DNSサーバー: 192.168.0.12
DHCPサーバーの無効化
前節の接続の共有の設定を行うと,このVPNゲートウェイはDHCPサーバー兼DDNSサーバーとしても動き出してしまう.我が家のLANには既にDHCPサーバーが動いているので余計な御世話だ.このことにより次の問題が生じる.
- このDHCPによりIPアドレスをアサインされたクライアントは,DDNSとの連携がないため,名前でアドレス解決ができない.
- 複数の連携していないDHCPサーバーが存在することにより,IPアドレスの衝突が起こる可能性がある.
一方,次のようなメリットもある.
- このDHCPによりIPアドレスをアサインされたクライアントは,default gatewayがこのゲートウェイになるため,次節のルーティングの設定をしなくてもVPNにアクセスできる.
このため,常にこのVPNゲートウェイが動いているのであれば,既存のDHCPサーバーを止めてしまうという選択肢もなくはない.もう少しconfigurableでだったらよかったのだが.
さて既存のDHCPサーバー, DDNSサーバーを生かしたいならば,このDHCPサーバーはなんとかして無効化しなければならない.独立したサービスであれば,サービスを無効化すればよいのだが,残念ながらDHCPサーバーは独立したサービスではないのでサービスとして停止させることはできないようだ.そこで,DHCPサーバーがlistenしている bootp のUDPポート (67, 68)をふさいでしまうことにする.
考えられる手段として,ファイアーウォールのソフトウェアがインストールされていればそれを使えばよい.何も入っていない場合でも,以下のように設定することによりDHCPのポートをふさぐことができた.
- Private LANへの物理接続をダブルクリック --> プロパティ --> インターネットプロトコル(TCP/IP)を選んでプロパティボタンをクリック
- 詳細設定...をクリック --> オプションタブを選択 --> TCP/IPフィルタリングを選択し,プロパティボタンをクリック
- UDPポートの上の「一部許可する」ラジオボタンを選び,その下の「追加...」を押して bootp (67, 68) 以外のポートをできるだけ追加する.私のマシンでは,以下のポートを追加したら問題なく動いている.
22, 42, 53, 123, 137, 138, 389, 443, 445, 500, 636, 1027, 1040, 1046, 1047, 1900, 4500, 10000
ルーティング設定
Private LAN内にあるVPNに接続したいマシンで,VPN向けのIP routingを設定する必要がある.
Windowsマシンなら,
C\> route add <VPNのネットアドレス> mask <VPNのネットマスク> <ゲートウェイマシンのIPアドレス>
を実行する.例えば 10.x.x.x/24 がVPNであれば,
C\> route add 10.0.0.0 mask 255.0.0.0 192.168.0.33
となり,10.x.x.x との通信は 192.168.0.33を経由することとなる.
Linuxマシンでも同様に
# route add -net 10.0.0.0 mask 255.0.0.0 gw 192.168.0.33
とする.
上手く設定できていれば,これでVPNとIP reachableのはずである. (DNSはまだ設定していないので)VPN内で生きているIPアドレスをゲートウェイで調べて, ping が通るか確かめてみよう.
C\> ping 10.0.4.1
ping は通らないこともあるので,ウェブサーバーにブラウザで接続してみる方がよい確認方法かもしれない(その場合もホスト名ではなくIPアドレスを用いること).
これらの設定はリブートすると消えてしまうので,永続的な静的ルーティングを参照して,永続的な設定を行う.
DNSの設定
毎回IPアドレスを直打ちするわけには行かないので,bind の VPNとNAT接続したときの設定を参照してDNSの設定をしておこう.
以上で,Private LANのどのマシンからでも透過的にVPNにアクセスできるようになった.
