VPN使用時にインターネットにアクセスできない問題を解決する方法

自宅でVPN(Windows Server RRAS設定、AlwaysOnVPN、OpenVPNなど)に接続すると、奇妙な問題が発生することがあります。つまり、「接続」ボタンを押すと、インターネットが突然切断されてしまうのです。ブラウジングもストリーミングも一切できず、トラフィックはVPNトンネルの内側に閉じ込められてしまいます。面白いことに、これはWindowsがデフォルトですべてのトラフィックをVPN経由でルーティングするように設定されているために発生します。VPNがスプリットトンネリングに対応していない場合は、この設定が少々過剰になることがあります。あるいは、VPNサーバーがインターネットアクセスを完全にブロックしている場合もあります。ユーザーは、メインの接続を切断せずに会社のリソースにアクセスしたいだけという場合もあります。この問題を解決するのは、まるで自業自得のように思えますが、幸いなことに、接続するたびにインターネットが切断されないようにするための正当な方法がいくつかあります。

WindowsでVPNインターネットアクセスの問題を解決する方法

方法1:Windowsのネットワーク設定でスプリットトンネリングを有効にする

これは、あなたのビルドで動作すれば、間違いなく最も簡単な方法です。Windowsに、一部のトラフィックのみをVPN経由で送信し、実際のインターネットアクセスには影響を与えないように指示するだけです。リモートネットワークのデフォルトゲートウェイオプションが有効になっている場合、すべてのトラフィックがそのトンネルを経由します。これを無効にすると、接続中でもインターネット接続が維持されます。これは「ネットワーク接続」パネルで確認できます。「コントロールパネル」>「ネットワークとインターネット」>「ネットワーク接続」、または「ファイル名を指定してncpa.cpl実行」からアクセスできます。

  1. VPN 接続を右クリックし、[プロパティ]に移動します。
  2. [ネットワーク]タブに切り替えて、[インターネット プロトコル バージョン 4 (TCP/IPv4)]を選択し、[プロパティ]をクリックします。
  3. [詳細設定]をクリックし、 [リモート ネットワークでデフォルト ゲートウェイを使用する]というチェックボックスを探します。
  4. そのボックスのチェックを外してください。これはスプリットトンネリングと呼ばれるもので、WindowsにすべてのトラフィックをVPN経由でルーティングしないように指示します。

その後、再接続してください。Windows 10/11のビルドは時々不安定になることがあります。設定が保存されなかったり、ボックスがグレー表示になったりすることがあります。その場合は、次の方法に進んでください。Windowsは必要以上に難しくする必要があるからです。

方法2: rasphone.pbkファイルを手動で調整する

ちょっと厄介な方法ですが、GUIでデフォルトゲートウェイのオプションを無効にできない場合は、設定ファイルを手動で編集できます。rasphone.pbkファイルにVPNプロファイルのすべての設定が保存されており、通常は以下の場所にあります。

  • C:\ProgramData\Microsoft\Network\Connections\pbk\– 全ユーザー接続用
  • C:\Users\yourusername\AppData\Roaming\Microsoft\Network\Connections\Pbk– ユーザー固有のもの

適切なrasphone.pbkをメモ帳などのプレーンテキストエディタで開きます。IpPrioritizeRemoteのような行を探します。デフォルトでは1に設定されており、すべてのトラフィックがVPNを経由することを意味します。これを0に変更して保存し、VPNを切断して再接続してください。

なぜこれが役立つのか?それは、このちょっとした変更によってWindowsがリモートIPを優先しないように指示し、インターネットを再び使えるようになるからです。通常は「IpPrioritizeRemote = 0」でうまくいきますが、このファイルの編集には注意が必要です。試行錯誤が必要になることもあります。

方法3: PowerShellを使用してスプリットトンネリングを切り替える

この方法はより柔軟性が高く、スクリプト作成や自動化に適しています。PowerShell経由でVPNがスプリットトンネリングをサポートしているかどうかを確認するには、次のコマンドを実行します。

Get-VpnConnection

接続にSplitTunneling: Falseと表示される場合は、次のコマンドを実行して有効にすることができます。

Set-VpnConnection -Name "YourVPNName" -SplitTunneling $true

「YourVPNName」を接続名に置き換えてください。このコマンドを実行すると、Windows は「デフォルトゲートウェイを使用する」設定をクリアし、インターネットと VPN の内部リソースの両方が正常に動作するはずです。ただし、ビルドによっては、この設定を有効にするために再起動または VPN 接続の再確立が必要になる場合があることにご注意ください。正直なところ、少し奇妙に感じるのですが、ある設定では再起動後に動作しましたが、別の設定では手動でルートを切断/追加する必要がありました。

VPNネットワークへの静的ルートの追加

スプリットトンネリングだけでは不十分な場合もあります。特に、VPNサーバーに割り当てられたIPアドレス範囲が企業ネットワークのアドレスと一致しない場合はなおさらです。その場合は、Windowsにトラフィックのルーティング方法を手動で指示する必要があります。PowerShellまたはrouteコマンドを使って静的ルートを設定できます。例えば、ルートを追加するには次のようにします。

Add-VpnConnectionRoute -ConnectionName "YourVPNName" -DestinationPrefix 10.0.0.0/16 -PassThru

または、Cisco や Checkpoint などのサードパーティの VPN クライアントを使用している場合は、おそらく従来の方法を使用する必要があります。

route add 192.168.31.0 mask 255.255.255.0 192.168.200.1

この行は、Windows に 192.168.31.0/24 宛てのトラフィックを 192.168.200.1 の VPN ゲートウェイ IP 経由で送信するよう指示します。-p再起動後もルートが維持されるようにするには、最後に追加することをお勧めしますが、これは設定と管理者権限によって異なります。

Windows が現在どのようなルートを持っているか確認したいですか? を実行してくださいroute print。インターネットまたは VPN トラフィックに使用されているルートまたはインターフェースをトラブルシューティングするには、Get-NetRoute -DestinationPrefix 0.0.0.0/0または を使用してくださいtracert myCorpPCName。また、Windows がトラフィックのルーティングを誤る場合は、ネットワーク アダプターの優先順位を確認してください。

場合によっては、DNSも影響することがあります。VPNが隔離されたネットワークにあるDNSサーバーを割り当てている場合、外部名解決に失敗し、ルーティングに問題がなくてもオフラインのように見えることがあります。このような場合は、DNS設定を再確認するか、DNSリークの問題を調べてください。

特にサードパーティの VPN クライアントが関係している場合は、Windows の設定を無視する独自のルーティング ロジックがある可能性があるため、すべてが複雑になる可能性があります。

これにより、いじくり回す時間が短縮され、VPN がアクティブなときにインターネットが復旧することを願っています。