Page 1 of 1

Clientによるルーティングテーブルの書き換えが完了しない(Windows)

Posted: Fri Jan 06, 2017 8:03 am
by vpner
以下が現在の構成です。
1. SoftEther VPN Server (Ver 4.22, Build 9634)
 VPSで運用,グローバルIPアドレスあり(例:42.124.126.11)
 仮想HUB1: NET_HUB, 仮想NAT/DHCPサーバ有効(192.168.100.0/24)
 仮想HUB2: BRIDGE_HUB, SecureNAT無効
2. SoftEther VPN Bridge (Ver 4.22, Build 9634)
 192.168.10.0/24空間に配置
 192.168.10.1が物理的ルータ・デフォルトゲートウェイ・DHCPサーバ
 外側は更に172.16.0.0/24のプライベート空間で、さらに外側がインターネット
 BRIDGE_HUBにカスケード接続、ローカルブリッジあり
3. SoftEther VPN Client (Ver 4.22, Build 9634) @ Windows10
 10.0.0.0/24のプライベート空間で、外側がインターネット
 デフォルトゲートウェイは10.0.0.1、Clientは10.0.0.2
 アカウント1: User@NET_HUB
 アカウント2: User@BRIDGE_HUB
この場合、User@NET_HUBはSecureNATからDHCPによりIPアドレスを配布され、
User@BRIDGE_HUBは192.168.10.1からDHCPによりIPアドレスを配布されます。

当方で発生している問題点は、Clientがルーティングテーブルの書き換えを正常に行えていない(PCがある)ことです。
例えば正常に接続が完了した場合、User@NET_HUBは192.168.100.10などを受け取りその旨を表示するはずですが、「VPN内で使用するIPアドレスを決定中…」のままとなってしまいます。ここでルーティングテーブルを見ると、
 宛先 ネットマスク ゲートウェイ インターフェイス メトリック
 0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.2 40
 0.0.0.0 0.0.0.0 192.168.100.1 192.168.100.10 2
 42.124.126.11 255.255.255.255 192.168.100.1 192.168.100.10 2
 (以下略)
となっています。つまり、IPアドレスを受け取れているのに途中で処理が止まっているようなのです。
このままでは、VPN経由で外へ通信しようとしても行き止まりになってしまって結局10.0.0.1経由の通信となってしまいます。

正常な場合は以下のようになると認識していますし、メーカー・機種・ウイルス対策ソフトに至るまで同等の他のPCにおいてはこのように動作しています。
 宛先 ネットマスク ゲートウェイ インターフェイス メトリック
 0.0.0.0 0.0.0.0 192.168.100.1 192.168.100.10 2
 42.124.126.11 255.255.255.255 10.0.0.1 10.0.0.2 2
 (以下略)
すなわち、Serverに向かうときのみ本来のゲートウェイを通過し、その他の通信は全て仮想LANカードを通過する、というテーブルになっています。

User@BRIDGE_HUBから192.168.10.0/24空間に出ようとしても全く同じ現象が起きてしまい、Bridgeを介した通信ができません。
本現象はPCの個体差のみにより発生し、アカウントを変更しても再インストールしてもサーバーをリセットして環境を作り直してもルーティングテーブルの調整処理のチェックボックスをどうしようともSoftEtherのバージョンを変更しようとも全く改善されません。
仕方ないので毎度コマンドプロンプトに以下のコマンドをコピペしての接続と切断を余儀なくされていますが、非常に不便です。
【接続時】
for /F "tokens=3" %f in ('route print -4 ^| findstr "\<0\.0\.0\.0\> * \<0\.0\.0\.0\>"') do set dgw=%f
"C:\Program Files\SoftEther VPN Client\vpncmd_x64.exe" localhost /CLIENT /CMD AccountConnect "Internet thru VPN"
set svr=42.124.126.11
route ADD %svr% MASK 255.255.255.255 %dgw%
route DELETE 0.0.0.0 MASK 0.0.0.0 %dgw%
【切断時】
"C:\Program Files\SoftEther VPN Client\vpncmd_x64.exe" localhost /CLIENT /CMD AccountDisconnect "Internet thru VPN"
route DELETE %svr%
route ADD 0.0.0.0 MASK 0.0.0.0 %dgw%

どなたか解決法に心当たりはありませんでしょうか?

Re: Clientによるルーティングテーブルの書き換えが完了しない(Windows)

Posted: Fri Jan 06, 2017 9:26 am
by cedar
VPN Client は、基本的に接続後には IP アドレスの設定には関与しません。
(経路の書き換え機能は、仮想 LAN カード側にデフォルトゲートウェイが移行した時に VPN 接続が切れないようにするために、接続前に VPN サーバーへの経路を静的に設定する機能です。)

OS の設定で仮想 LAN カードが DHCP で IP アドレスを取得する設定になっている場合には、DHCP の要求を送信できていないか、DHCP の応答を正常に受け取れていないと思われます。
パケットキャプチャなどで、正常にDHCPの送受信が行えているか確認してみてください。

Re: Clientによるルーティングテーブルの書き換えが完了しない(Windows)

Posted: Fri Jan 06, 2017 2:36 pm
by vpner
返信ありがとうございます。
確かに仮想LANカードはDHCPでIPアドレスを取得する設定になっています。発行した側のルータを確認しても、SecureNATのログを確認しても、実際にDHCPを介してIPアドレスを受け取っていて、仮想LANカードへの割り振りも行われています。先ほどの例示にも含まれていましたが、VPN Server接続後のルーティングテーブルには
 宛先 ネットマスク ゲートウェイ インターフェイス メトリック
 0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.2 40
 0.0.0.0 0.0.0.0 192.168.100.1 192.168.100.10 2
 42.124.126.11 255.255.255.255 192.168.100.1 192.168.100.10 2
と、DHCPから割り振られたIPアドレス(この場合192.168.100.10)をインターフェイスとした経路が設定されているのです。接続がうまくいっている端末のルーティングテーブルには
 0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.2 40
に相当する経路が削除されていて、VPN Serverへの接続が192.168.100.1ではなく10.0.0.1がゲートウェイになっています。このようなルーティングテーブルの書き換えの違いがなぜ生まれるのかが分からないのです。

Re: Clientによるルーティングテーブルの書き換えが完了しない(Windows)

Posted: Fri Jan 06, 2017 4:50 pm
by cedar
デフォルトゲートウェイが 2 つ見える事自体は、特に異常ではありません。
http://www.atmarkit.co.jp/ait/articles/ ... ws002.html

ただ、正常であれば、メトリックの大きい側のデフォルトゲートウェイは使用されません。
実際に tracert などで、インターネット上のホストへの通信の経路を確認されたでしょうか。

それでもメトリックが大きい方のデフォルトゲートウェイが使用されているようであれば、
Windows が SecureNAT 経由でインターネットへの通信が行えなかったと判定している
可能性が考えられます。
そうすると、パケットロスなど、IP アドレスの割り当て以外の問題があるかもしれません。