通常VPN使用時はすべての通信がVPN経由で流れますが、特定の宛先だけ VPN経由で通信させる設定です。なお、Windowsでの設定です。
次の記事では route コマンドでの設定方法ですが、本記事では PowerShell上での設定方法です。
特定の宛先だけ VPN経由で通信させる
設定は、デフォルトで VPN経由で通信しないようにした上で、特定の宛先だけ VPN経由で通信させるようにします。
デフォルトで VPN経由で通信しないようにする
VPN接続のプロパティで、ネットワーク タブを選択します。
[インターネットプロトコルバージョン 4(TCP/IPv4)] を選択して「プロパティ」ボタンを押し、「詳細設定」を押します。
次のような画面になるので、[リモートネットワークでデフォルトゲートウェイを使う] のチェックを外し、[クラスベースのルートの追加を無効にする] にチェックを付けます。
これで、デフォルトで VPN経由で通信しないようになります。
以下説明ですが、飛ばす場合は、「特定の宛先だけ VPN経由で通信させる」まで進んでください。
[リモートネットワークでデフォルトゲートウェイを使う] は、もし、チェックが付いていると、すべての通信がVPN経由で流れます。
デフォルトで VPN経由で通信しないようにしたいので、チェックを外します。
[クラスベースのルートの追加を無効にする] は、もし、チェックが外れていると、VPNと同じネットワークアドレス宛の通信は、全てVPN経由で流れます。
つまり、ローカルネットワークとVPNで同じネットワークアドレスの場合、ローカルネットワーク宛の通信がVPN経由で流れてしまいます。
チェックを付けると、宛先個別に設定しないと、VPN経由で流れません。
特定の宛先だけ VPN経由で通信させたいので、チェックを付けます。
宛先個別の設定は、次の項で説明します。
特定の宛先だけ VPN経由で通信させる
PowerShellで次を実行します。
「VPN名」の箇所は、各自のVPN接続名に置き換えてください。
VPN名にスペースや()を含む場合は、”” でくくってください。
Add-VpnConnectionRoute "VPN名" -DestinationPrefix "宛先アドレス" -PassThru
例えば、次のようにすると、宛先が 192.168.100.0/24 または 10.8.46.95 の場合は、VPN「VPN_test」経由で通信されます。
Add-VpnConnectionRoute "VPN_test" -DestinationPrefix "192.168.100.0/24" -PassThru Add-VpnConnectionRoute "VPN_test" -DestinationPrefix "10.8.46.95/32" -PassThru
設定後に VPNに接続すると、上記が反映されます。
既にVPN接続していた場合は、いったん切断した後に、接続しなおしてください。
この設定は、コマンドで削除(後述)まで有効です。
設定内容の確認は、VPNに接続後、
Get-NetRoute -InterfaceAlias "VPN名"
を実行します。
「VPN名」の箇所は、各自のVPN接続名に置き換えてください。
VPN名にスペースや()を含む場合は、”” でくくってください。
下記のように、追加した設定が表示されます。
(RouteMetric列の値が 1 の行です)
ifIndex DestinationPrefix NextHop RouteMetric ifMetric Po li cy St or e ------- ----------------- ------- ----------- -------- -- 44 255.255.255.255/32 0.0.0.0 256 35 Ac 44 224.0.0.0/4 0.0.0.0 256 35 Ac 44 192.168.11.128/32 0.0.0.0 256 35 Ac 44 192.168.100.0/24 0.0.0.0 1 35 Ac 44 10.8.46.95/32 0.0.0.0 1 35 Ac
追加した設定を削除する場合は、下記のようにVPN名と、削除する宛先を指定してコマンドを実行します。
Remove-VpnConnectionRoute -ConnectionName "VPN_test" -DestinationPrefix "10.8.46.95/32" -PassThru
コメント