Windows の VPN を 2 本同時に使う:既定ルートを保持するのはどちらのプロファイルか
Windows の VPN プロファイル 2 つが同じ既定ルートを奪い合います。チェックを 1 つ外し、それが覆っていたプレフィックスを追加し、両方を信頼する前に DNS を確認します。
二本目のトンネルを接続すると一本目が沈黙するのに、両方のクライアントは健全な接続を報告し続けます。Windows が渡せる既定ルートは 一 つだけで、それを主張するプロファイルがもう一方から奪い取ります。症状は VPN の障害に見えますが、実体は 二 つのプロファイルによるルーティングの取り合いです。どちらのトンネルがそのルートを持つべきかを決めれば、残りの構成はそれに従います。
最良の既定ルートになれるエントリは 一 つだけ
IPv4 ルーティング テーブルは、より具体的な一致がない宛先に対して勝者となるルートを 一 つだけ保持します。独自のルートをインストールする VPN プロファイルは、接続した瞬間に前のルートを置き換え、以前は一本目のトンネルに入っていたトラフィックが今は二本目から出ていきます。一本目のトンネルは上がったままで、消えるのは一般的な宛先に使われるはずだったパケットです。
クライアントの状態アイコンはそれを示せません。トンネルが確立したことしか報告せず、どのプレフィックスがまだそこへルーティングされているかは分からないため、利用者には緑のアイコンが 二 つと、あるアプリでのタイムアウトが見えます。障害時に route print -4 を読むほうが、どの VPN ログよりも情報量が多くなります。
名前解決は 二 つ目の独立した競合であり、ルーティング テーブルだけを直しても解決しません。
チェックボックスが入れるもの、外すもの
このオプションは各 VPN プロファイルのアダプターのプロパティ、IPv4 の詳細設定にあり、リモート ネットワークで既定ゲートウェイを使用する、という表現になっています。有効にすると、接続のたびにトンネル経由の既定ルートが追加され、そのインターフェイスが一般トラフィックの順番に入ります。無効にすると、Windows はトンネル自身のサブネットのルートを保持し、テーブルの残りには手を触れません。
多くの人がつまずくのはチェックを外すときです。リモート サイトには通常 一 つ以上のプレフィックスがあり、そのどれもがアダプターのサブネット内ではないため、ファイル サーバーや管理用アドレスが応答しなくなります。チェックボックスがトンネルを壊したのではなく、すべてを覆っていた広いルートを取り除いたのです。
混在した構成は正当で一般的で、社内プロファイルはチェックを入れたまま全トンネルとし、ラボのプロファイルは分割して社内の既定を押しのけないようにします。
各トンネルが何を運ぶべきかで選ぶ
三 つの問いが配置を決めます。このトンネルは通常のインターネット トラフィックを運ぶ必要があるのか、それとも自分のサイト内のアドレスだけでよいのか。二 つのサイトは重ならないプライベート範囲を使っているか。そしてプロファイルを雇用主が管理しているなら、そのルーティング動作を変更してよいのか。
一方を全トンネルにするなら、その側が既定ルートを持ち、もう一方は分割でなければなりません。どちらも一般のインターネット トラフィックを必要としないなら、両方のチェックを外し、物理アダプターに既定ルートを保たせます。範囲が重なるなら、172.22.0.0/16 が社内側の一台とラボ側のもう一台を同時に意味することはできず、チェックボックスでは解決しないため中止してください。
決定はプロファイル名の横に記録します。そうしなければ、次の四半期に追加する 三 本目の VPN が同じ調査を最初から繰り返します。
足りないプレフィックスを追加して結果を検証する
分割トンネルごとに、公開サーバーのアドレスではなくそのアダプターに表示されるピア アドレスを使って、リモート範囲を明示的に追加します。
> route add 172.22.0.0 mask 255.255.0.0 172.20.4.1
> route print -4
> Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Sort-Object RouteMetric
PPP アダプターはピア アドレスを次のホップとして使い、TAP アダプターは通常そのインターフェイスに表示されるゲートウェイを使うので、ガイドから数字を写すのではなくアダプターの詳細を読みます。固定フラグはルートが正しいと確認できてから付け、置き換えを追加する前に古い固定エントリを削除します。管理されたクライアントは独自のルートをインストールして保護することがあり、その場合はプロファイルの所有者が変更を行う必要があります。
DNS には別の手順が必要です。どちらのトンネルもリゾルバーを押し付けることができ、Windows はインターフェイスごとに優先順位付きの一覧を持つため、二つ目のネットワークの名前が一つ目のリゾルバーへ送られることがあるので、修正を選ぶ前に各アダプターが実際に何を受け取ったかを見ます。
> Get-DnsClientServerAddress -AddressFamily IPv4
> Resolve-DnsName files.corp.internal -Server 172.20.4.1
ドメインごとの名前解決ポリシーのほうが、マシン上のすべてのアプリが共有し黙って変えれば無関係な照会まで移動してしまうグローバルなリゾルバー一覧を置き換えるより通常は優れています。
各リモート ネットワークでアドレスにより到達できるリソースが一つ、それぞれでの名前照会、インターネットの既定が依然として物理アダプターを指していること、二本目の接続が上がっても維持されるリモート デスクトップ セッション、この四つの確認で構成を受け入れます。