通过 VPN 连接的 Windows 10 DNS 解析不起作用

ECC*_*Dan 64 dns vpn windows-10

在 Windows 10 中,当连接到启用了拆分隧道(禁用网关)的 VPN 时,DNS 解析始终使用 LAN DNS 服务器,而忽略 VPN 连接上设置的 DNS 服务器和 DNS 后缀。

预期行为是使用 VPN 的 DNS 服务器,否则将无法解析远程网络(例如域计算机)上的 DNS 条目。

这在以前版本的 Windows 中工作正常。

这在微软的回答线程上得到了广泛的讨论。

ECC*_*Dan 70

我通过手动将 LAN 连接的指标设置为高于 (15) 比分配给我的 VPN 的一个窗口 (11) 来永久解决此问题。

这可以通过两种方式完成:

  • 通过 GUI:网络连接、属性、TCP/IP v4 属性、高级、将指标设置为 15;
  • 命令行: netsh int ip set interface interface="LAN CONNECTION NAME" metric=15

效果是立竿见影的(至少在使用命令行时)并且 DNS 查找现在按预期通过我的 VPN。

这适用于拆分隧道,并且是跨重新连接和重新启动的永久修复。

请注意,您还可以更改 VPN 的指标而不是 LAN 连接,但这不会是永久性的,因为 Windows 在建立连接时会重置指标。

根据您的环境,您的 LAN 和 VPN 连接可能有不同的默认指标。只需进行相应调整,使您的 VPN 的指标低于 LAN 连接的指标。

此外,如果您发现无法编辑 VPN 的 TCP/IP 属性,因为这在 Windows 10 中也已损坏,您可以通过 Powershell 设置大多数属性

1. Get-VpnConnection
2. Set-VpnConnection -Name "myVPN" -SplitTunneling $True
3. Set-VpnConnection -Name "myVPN" -DnsSuffix yourdomain.local
Run Code Online (Sandbox Code Playgroud)

  • 这为我们解决了这个问题(我们已经解决了一段时间),还有一个重要的额外步骤 - 禁用 IPv6。我们的 VPN 不支持 IPv6,但我的理解是 _any_ IPv6 解析器将优先于 IPv4 解析器。一旦我们在适配器上禁用 IPv6,然后调整指标拆分隧道 DNS 恢复工作。如果您的 VPN 支持 IPv6,这可能不需要,并且如果度量调整本身修复了 DNS,您可以在适配器上启用 IPv6。 (4认同)
  • 对我来说这不起作用......我有两台装有 Windows 10 的机器,一台工作正常,另一台 VPN 有问题。我能够解析启用 SplitTunneling 的默认网关,但是当我更改指标时,VPN 的 DNS 仍然无法识别... (2认同)

Lik*_*k47 16

在我拥有的每台物理 Win10 机器上看到此问题后,我在 VM 中重新安装了 Windows 10 以进行测试。我测试了这个线程中的所有答案,但没有一个有效。我发现解决方案是结合“Keenans”和“ECC-Dan”在此处发布的答案:

http://answers.microsoft.com/en-us/windows/forum/windows_10-networking/win-10-dns-resolution-of-remote-network-via-vpn/513bd​​eea-0d18-462e-9ec3-a41129eec736?页=1

控制面板 > 网络和共享中心 > 更改适配器设置 > 右键单击​​您的以太网或 Wifi 适配器 > 属性 > 双击 IPv4 > 高级 > 取消选中自动度量 > 为接口度量输入 15 > 确定 > 确定。

在同一个“属性”页面上,双击 IPv6 > 高级 > 取消选中自动度量 > 为接口度量输入 15 > 确定 > 确定。

只有在更改这两个设置后才能解决问题。我测试了换回任何一个,它又坏了。更改两者后,我从命令行运行 nslookup 并返回 VPN 连接到的远程网络上的 DNS 服务器,否则它将返回本地 DNS 服务器。然后我在以太网接口上使用 Wireshark 捕获,对随机网站进行了一些 ping,并验证没有捕获到 DNS 数据包。这证明进行更改后,DNS 查询仅通过 VPN 连接发送,而不是同时通过所有连接发送(这称为 Win10 DNS 泄漏)。所以这也是解决Win10 DNS泄漏的一部分:

https://medium.com/@ValdikSS/beware-of-windows-10-dns-resolver-and-dns-leaks-5bc5bfb4e3f1#.7ppsn1nda

请注意,要修复 DNS 泄漏,您首先需要执行上述步骤。然后您需要设置两个注册表值。链接的文章只列出了一篇,它本身并不能解决较新版本的 Win10 中的问题。设置这些注册表值:

Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient
Value:  DisableSmartNameResolution
Data:  1

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
Value: DisableParallelAandAAAA
Data:  1
Run Code Online (Sandbox Code Playgroud)

只有在完成所有这些之后,您的 DNS 客户端行为才会恢复到它在 Win7 中的方式。您一定想知道这是如何通过 Microsoft 的 QA 的。


小智 5

其它的办法:

找出网络索引

Get-NetIPInterface | select ifindex,*int*

ifIndex InterfaceAlias              InterfaceIndex InterfaceMetric
------- --------------              -------------- ---------------
     26 vEthernet (Default Switch)              26            5000
     11 VPN - VPN Client                        11               1
      7 Ethernet                                 7              25
      1 Loopback Pseudo-Interface 1              1              75
Run Code Online (Sandbox Code Playgroud)

我的是索引为 11 的 VPN

将 VPN“interfaceMetric”从 1 更改为 30

Get-NetIPInterface -InterfaceIndex 11 | Set-NetIPInterface -InterfaceMetric 30
Run Code Online (Sandbox Code Playgroud)

验证更改:

Get-NetIPInterface | select ifindex,*int*

ifIndex InterfaceAlias              InterfaceIndex InterfaceMetric
------- --------------              -------------- ---------------
     26 vEthernet (Default Switch)              26            5000
     11 VPN - VPN Client                        11              30
      7 Ethernet                                 7              25
      1 Loopback Pseudo-Interface 1              1              75
Run Code Online (Sandbox Code Playgroud)