Windows 10 で VPN 経由の DNS 解決が機能しない

Admin

VPN 接続用に構成された DNS サーバーとサフィックスは、Windows 10 で DNS を使用して名前を解決するために使用されます。 フォーストンネリング モード (「リモートネットワークでデフォルトゲートウェイを使用する」オプションが有効になっている場合)、VPN 接続がアクティブである場合。 この場合、ローカル ネットワークで DNS 名を解決したり、内部 LAN を使用してインターネットにアクセスしたりすることはできません。

同時に、LAN 上の任意のリソースに ping を送信できます (ゲートウェイ、隣接するコンピューター、またはプリンターの IP アドレスに ping を実行してみてください)。 これらは IP アドレスによってのみ使用可能であり、ホスト名によっては使用できません。 実際、Windows 10 は、VPN 接続設定で指定された DNS サーバーを通じてローカル ネットワーク内のホスト名を解決しようとしています。

ローカル (LAN) インターフェイスの IPv6 プロトコルを無効にするための推奨事項をいくつか見つけました。強制トンネリング モードを使用する場合に役立ちます。

使用している場合 スプリットトンネリング (「」リモートネットワークでデフォルトゲートウェイを使用する」オプションがオフになっている場合)VPN 接続では、ローカル ネットワークからインターネットにアクセスできますが、リモート VPN ネットワークの DNS アドレスを解決できません(ここでは IPv6 を無効にしても役に立ちません)。

Windows は、最も高い優先順位 (インターフェイス メトリックの値が低い) を持つネットワーク インターフェイスから DNS クエリを送信することを理解しておく必要があります。 たとえば、VPN 接続はスプリット トンネリング モードで動作します (LAN および企業リソースから VPN 経由でインターネットにアクセスしたい場合)。

PowerShell からすべてのネットワーク インターフェイス メトリックの値を確認します。

Get-NetIPInterface | Sort-Object Interfacemetric

Interfacemetric を使用した Get-NetIPInterface

上のスクリーンショットは、ローカル イーサネット接続のメトリック (25) が VPN インターフェイス (100) よりも低いことを示しています。 したがって、DNS トラフィックは、より低いメトリック値を持つインターフェイスを通過します。 これは、DNS リクエストが VPN 接続用の DNS サーバーではなく、ローカル DNS サーバーに送信されることを意味します。 この構成では、接続されている外部 VPN ネットワーク内の名前解決はできません。

さらに、Windows 8.1 および Windows 10 用の DNS クライアントの新機能についてもここで説明します。 スマートなマルチホーム名前解決 (SMHNR) は、DNS 要求に対する応答を高速化するために、これらの OS バージョンに追加されました。 デフォルトでは、SMHNR はシステムに認識されているすべての DNS サーバーに同時に DNS 要求を送信し、最初に受信した応答を使用します (LLMNR と NetBT クエリも送信されます)。 外部 DNS サーバー (VPN 接続用に指定) が DNS トラフィック (DNS リクエストの漏洩) を参照できる可能性があるため、安全ではありません。 Windows 10 では、GPO 経由で SMHNR を無効にできます: [コンピューターの構成] -> [管理用テンプレート] -> [ネットワーク] -> [DNS クライアント] -> スマート マルチホーム名前解決をオフにする = 有効。

GPO - スマート マルチホーム名前解決をオフにする

または、次のコマンドを使用して SMHNR を無効にすることもできます (Windows 8.1 の場合)。

Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -Name DisableSmartNameResolution -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWord

Windows 10 Creators Update (1709) 以降では、DNS 要求はすべての既知の DNS サーバーに 1 つずつ (並列ではなく) 送信されます。 特定の DNS のメトリクスを低くすると、その優先度を上げることができます。

したがって、インターフェイス メトリックを変更すると、名前解決が最も優先される接続 (LAN または VPN) 経由で DNS リクエストを送信できるようになります。

したがって、インターフェイス メトリックの値が低いほど、接続の優先順位は高くなります。 Windows は、IPv4 インターフェイスの速度と種類に応じて、IPv4 インターフェイスのメトリックを自動的に割り当てます。 たとえば、速度が 200 Mbit/s を超える LAN 接続のメトリック値は 10 になり、速度が 50 ~ 80 Mbit/s の Wi-Fi 接続のメトリック値は 50 になります (表を参照) https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes).

インターフェイス メトリックは、Windows GUI、PowerShell、または ネットシュ 指図。

たとえば、DNS リクエストを VPN 接続経由で送信したいとします。 LAN 接続のメトリックを増やして、値が 100 を超えるようにする必要があります (私の例では)。

に行きます コントロールパネル -> ネットワークとインターネット -> ネットワーク接続、イーサネット接続のプロパティを開き、TCP/IPv4 プロパティを選択して、 詳細な TCP/IP 設定 タブ。 チェックを外します 自動メトリクス オプションを選択し、インターフェイス メトリックを次のように変更します。 120.

Windows 10でインターフェイスメトリックを手動で設定してDNS優先度を変更する

次の PowerShell コマンドを使用して同じことを行うことができます (PowerShell コマンドで取得できる LAN インターフェイスのインデックスを使用します)。 Get-NetIPInterface コマンドレット):

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

または使用して ネットシュ (LAN 接続の名前を指定します):

netsh int ip set interface interface="Ethernet0" metric=120

同様に、VPN 接続のプロパティでメトリック値を減らすことができます。

Windows 10でVPNインターフェースメトリックを変更する

また、できます VPN 接続の設定を変更する モードをスプリット トンネリングに変更し、PowerShell を使用して接続用の DNS サフィックスを指定します。

Get-VpnConnection
Set-VpnConnection -Name "VPN_work" -SplitTunneling $True
Set-VpnConnection -Name "VPN_work" -DnsSuffix yourdomainname.com

Windows10で「オーディオ出力デバイスがインストールされていない」を修正する方法
Windows10で「オーディオ出力デバイスがインストールされていない」を修正する方法

Windows 10のシステムトレイに赤いX字型の記号が付いたボリュームアイコンが表示されますか? その上にカーソルを置くと、「オーディオ出力デバイスがインストールされていません」というエラー通...

32ビットまたは64ビットのWindowsを使用しているかどうかを確認する4つの方法
32ビットまたは64ビットのWindowsを使用しているかどうかを確認する4つの方法

徐々に完全な64ビットPCの世界に移行していますが、現在、すべての人が64ビットバージョンのWindowsを実行しているわけではありません。 一部のソフトウェア、特にドライバーのインストールに関...

Windows10で古いハードドライブ上のファイルにアクセスする方法
Windows10で古いハードドライブ上のファイルにアクセスする方法

別のコンピューターから古いハードドライブを見つけたので、何が入っているのかを必死に知りたいと思っています。 メモリレーンをたどって、完全に忘れてしまった古いデータを見つけるのは楽しいかもしれませ...