Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
44
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

【Windows】指定した宛先の通信のみVPN経由にする

WindowsでVPN接続すると、デフォルトではすべての宛先がVPN経由になる。
それだと相手方の帯域を食うし、使い方次第ではセキュリティ的にもよろしくないので、業務上必要なトラフィックのみVPN経由となるよう、ルーティングを見直すことにした。

手順

すべての宛先でVPNを使わないようにする

いったん、外向きの通信すべて、VPNに流さないようにする。
これはWindowsのGUI画面から設定できる。

ネットワーク接続を開く

[ファイル名を指定して実行] からncpa.cplと入力する。
image.png
該当するVPN接続を選び、右クリックからプロパティを開く。

TCP/IPのプロパティを開く

image.png

詳細設定を開く

image.png

リモートネットワークのGWを使わないようにする

デフォルトの設定では、VPN接続中の外向き通信はすべてリモートネットワークのゲートウェイを経由するようになっているので、これを無効にする。

  • [リモートネットワークでデフォルトゲートウェイを使う] のチェックを外す
  • [クラスベースのルートの追加を無効にする] のチェックを入れる

image.png

[クラスベースのルートの追加を無効にする] にチェックを入れない場合、VPNと同じネットワークアドレス宛の通信は、すべてVPNに流れることになる。
ローカルネットワークとリモートネットワークで、ネットワークアドレス(例:192.168.1.0/24)が同じ場合、これでは都合が悪いのでチェックを入れること。

VPN経由の宛先を設定

VPN経由で通信させたい宛先を個別に追加していく。
コマンドベースで設定することになるが、これには2通りの方法があるので両方紹介しよう。

なお、ここでは、ローカルのネットワークアドレスが192.168.11.0/24、リモートのネットワークアドレスが192.168.1.0/24にあるものとして説明する。

PowerShellから追加する方法

Windows8以降のOSではAdd-VpnConnectionRouteコマンドレットが使える。
VPN接続時にルートを自動で追加し、VPN切断時にルートを自動で削除してくれるので、一度だけ実行すれば良い。

【例1】宛先ネットワークを追加

社内に沢山あるサーバにアクセスする必要があり、それがローカルのネットワークアドレスと被らなければ、この書き方が簡単で良い。

Add-VpnConnectionRoute "VPN接続名" -DestinationPrefix 10.0.0.0/8
Add-VpnConnectionRoute "VPN接続名" -DestinationPrefix 192.168.1.0/24

【例2】宛先ホストごとに追加

ローカルのネットワークアドレスと被る場合や、接続元IPアドレスを制限しているインターネットのサーバにアクセスする目的でVPNを経由している場合は、ホストごとに追加する。

Add-VpnConnectionRoute "VPN接続名" -DestinationPrefix 13.114.178.6/32

※例示の 13.114.178.6 は qiita.com のアドレスである。

PowerShellではCIDR表記で書ける。
VPN接続名は、GUIで確認する以外に、Get-VpnConnectionコマンドレットでも確認できる。
設定されているルート情報は(Get-VpnConnection "VPN接続名").Routesで見れる。
削除はRemove-VpnConnectionRouteコマンドレットで行う。(PowerShellのコマンドレットではAddに対してはRemoveという暗黙ルールがあるので覚えておこう)

コマンドプロンプトから追加する方法

サポートが終了しているWindows7以前のOSでは、昔からお馴染みのroute addコマンドを使う。
-pオプションが恒久指定になるので一度だけ実行すれば良いが、PowerShellの書き方と比べると少し面倒くさい。
先述のPowerShellと同じことをroute addで記述すると、次のようになる。

route -p add 10.0.0.0 mask 255.0.0.0 (VPNサーバのアドレス) metric 1 if (インターフェース番号)
route -p add 192.168.1.0 mask 255.255.255.0 (VPNサーバのアドレス) metric 1 if (インターフェース番号)
route -p add 13.114.178.6 mask 255.255.255.255 (VPNサーバのアドレス) metric 1 if (インターフェース番号)

VPN仮想NICのインターフェース番号はroute printで確認すること。
削除はroute deleteで行う。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
44
Help us understand the problem. What are the problem?