3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

L2TP/IPSecでWindowsサーバとVPN張る時のルーティング情報

(WindowsServer2008)会社と自宅間で L2TP/IPSec VPNを構築してみた で、L2TP/IPSec VPNの構築したんですが、VPNに接続すると、インターネットの通信全てがVPN接続先を経由してしまいます。

また、接続元PCと同じLAN内にある別セグメント(ルータを挟んでる)に接続できなくなりました。(Pingを飛ばしても届きません)

もしやと思って、IP設定情報とPCのルーティング情報を確認してみました。

まず、VPN接続前の状態です。

C:\Documents and Settings\test>ipconfig /all

Ethernet adapter ローカル エリア接続 2:

(省略)

IP Address. . . . . . . . . . . . : 10.0.2.15

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.0.2.2

DHCP Server . . . . . . . . . . . : 10.0.2.2

DNS Servers . . . . . . . . . . . : 10.1.1.1

(省略)

C:\Documents and Settings\test>route print

===========================================================================

(省略)

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 10.0.2.2 10.0.2.15 20

10.0.2.0 255.255.255.0 10.0.2.15 10.0.2.15 20

10.0.2.15 255.255.255.255 127.0.0.1 127.0.0.1 20

10.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 20

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

224.0.0.0 240.0.0.0 10.0.2.15 10.0.2.15 20

255.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 1

Default Gateway: 10.0.2.2

===========================================================================

Persistent Routes:

None

↑はまぁ普通のセッティングですね。同じサブネットじゃないIP(0.0.0.0)はルータである 10.0.2.2 にパケットを投げるように設定されています。

次に、VPNに接続した後のネットワーク設定情報です。

C:\Documents and Settings\devlop>ipconfig /all

Ethernet adapter ローカル エリア接続 2:

(省略)

IP Address. . . . . . . . . . . . : 10.0.2.15

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.0.2.2

DHCP Server . . . . . . . . . . . : 10.0.2.2

DNS Servers . . . . . . . . . . . : 10.1.1.1

(省略)

PPP adapter test:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface

Physical Address. . . . . . . . . : 00-53-45-00-00-00

Dhcp Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.0.54

Subnet Mask . . . . . . . . . . . : 255.255.255.255

Default Gateway . . . . . . . . . : 192.168.0.54

DNS Servers . . . . . . . . . . . : 192.168.0.1

C:\Documents and Settings\devlop>route print

===========================================================================

(省略)

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 10.0.2.2 10.0.2.15 21

0.0.0.0 0.0.0.0 192.168.0.54 192.168.0.54 1

10.0.2.0 255.255.255.0 10.0.2.15 10.0.2.15 20

10.0.2.15 255.255.255.255 127.0.0.1 127.0.0.1 20

10.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 20

61.45.22.204 255.255.255.255 10.0.2.2 10.0.2.15 20

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

192.168.0.54 255.255.255.255 127.0.0.1 127.0.0.1 50

192.168.0.255 255.255.255.255 192.168.0.54 192.168.0.54 50

224.0.0.0 240.0.0.0 10.0.2.15 10.0.2.15 20

224.0.0.0 240.0.0.0 192.168.0.54 192.168.0.54 1

255.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 1

255.255.255.255 255.255.255.255 192.168.0.54 192.168.0.54 1

Default Gateway: 192.168.0.54

===========================================================================

Persistent Routes:

None

↑同じサブネットじゃないIP(0.0.0.0)が、VPN接続先(192.168.0.54)に行くようになってしまっています。デフォルトゲートウェイVPN接続先になっていますね。

(ちなみに、Metric は同じルートが複数存在する場合、どれを優先するかを決めるために使われます。値が小さい方が優先になるので、0.0.0.0宛てのパケットは 10.0.2.2 ではなくメトリックの値の小さい 192.168.0.54 に行くようになってしまっています)

このせいで、インターネットの通信が、VPN接続先を介し、接続元PCと同じLAN内にある別セグメント(ルータを挟んでる)に接続できなくばってしまっていたわけですね。

これを解決するためには、0.0.0.0 宛てのパケットを 10.0.2.2 に行くようにすればいいわけです。

具体的には、0.0.0.0 が 192.168.0.54 に行くように定義している静的ルートを削除してしまえばいいわけですね。

下記コマンドを打つとそうできます。

route delete 0.0.0.0 mask 0.0.0.0 192.168.0.54

いちいちVPN接続するたびにコマンド打つの面倒だなと思ったらWindowsの設定でありました。

クライアントのVPNの接続のTCP/IPのプロパティの詳細設定で、「リモートネットワークでデフォルトゲートウェイを使う」のチェックを除ければいいだけでした。

下記に詳しい解説が載っていました。

TechNet:インターネットおよびイントラネットへの同時アクセスのためのスプリット トンネリング

参考先:

MSフォーラム:リモート ネットワークでデフォルト ゲートウェイを使用

@IT:>ルーティング・テーブルを操作するルーティング・テーブルを操作する

@IT:route ~ルーティングテーブルの表示/設定を行う