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


49

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

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

在以前的Windows版本中,此功能正常运行。

此Microsoft Answers线程对此进行了广泛讨论。


从您的问题尚不清楚,这是什么问题(您是否要使用VPN指定的DNS服务器?),请对其进行编辑。
马塔·朱哈斯(MátéJuhász)2015年

根据建议进行编辑。
ECC-Dan

tbh:那么您的服务器出了点问题。第一个DNS请求应该总是命中本地服务器。仅当主机不可解析时,系统才应尝试查询Remote-DNS。您的问题可能是本地网络和远程网络在同一子网中运行,因此本地网络声称“能够解决查询”,但提供“找不到主机”吗?(如果配置为服务于子网abcd的服务器无法解析主机,则除非主服务器处于脱机状态,否则不会查询该子网的其他dns服务器,因为它们应该同步-因此,假定主机是未知的)
dognose

Answers:


55

我已通过手动将我的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指标低于局域网连接。

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

1. Get-VpnConnection
2. Set-VpnConnection -Name "myVPN" -SplitTunneling $True
3. Set-VpnConnection -Name "myVPN" -DnsSuffix yourdomain.local

2
对我来说,这不起作用...我有两台Windows 10机器,一台一切正常,其他问题与VPN无关。我能够解析启用SplitTunneling的默认网关,但是当我更改指标时,VPN的DNS仍然无法识别...
ceinmart 2015年

3
这为我们解决了这个问题(我们已经进行了一段时间的斗争),其中还有一个重要的附加步骤-禁用IPv6。我们的VPN不支持IPv6,但我的理解是,任何 IPv6解析器都将优先于IPv4解析器。一旦我们在适配器上禁用了IPv6,就可以调整指标,分割隧道DNS恢复工作。如果您的VPN支持IPv6,则可能不需要这样做,并且度量标准调整本身可以修复DNS,因为您可以在适配器上启用IPv6。
亚当·斯特罗

有趣的事实:对我来说,问题是“反之亦然”-连接到VPN时,Windows无法解析本地FQDN ...正在将“ VPN-连接”的默认度量标准设置为1-因此,我将本地连接一个较低的数字,这解决了我的问题。(我的本地服务器配置正确,因此将在“第二优先级”的连接上查询任何无法解析的名称-现在这使得本地和远程DNS都能在VPN建立时按预期工作。)
dognose

知道为什么仅通过一个ISP而不通过另一个ISP(均连接了同轴电缆)连接时才需要此修复程序吗?
盖亚

不知何故,我一开始就遇到了相反的问题:我的本地Win10笔记本电脑自动(大多数时间)仅使用VPN中的DNS,并且由于(尚未)配置该内部VPN中的DNS,因此我可以在我的VPN启用期间没有浏览任何互联网网站。因此,我以相反的方式使用此解决方案,即将我的本地LAN连接设置为与一样小的数字1,目前看来已经解决了该问题。FWIW,但是我不知道我的VPN连接的度量标准值,因为在VPN连接属性弹出窗口中没有“高级”按钮。
RayLuo

11

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

http://answers.microsoft.com/zh-CN/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数据包。这证明,进行更改后,仅通过VPN连接发送DNS查询,而不同时通过所有连接发送DNS查询(这称为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

只有在完成所有这些操作之后,您的DNS客户端行为才能恢复到Win7中的状态。您必须想知道这是如何通过Microsoft的质量检查获得的。


1

当客户端通过UTP电缆连接且本地LAN支持IPv6协议时,即使我更改了IPv4和IPv6的指标并使用注册表Windows DisableSmartNameResolution和DisableParallelAandAAAA与当前的Windows 10 Edu(截至2018年12月),它也不起作用。客户端具有公共/全局IPv6地址)。

在用于VPN的UTP / LAN接口上禁用IPv6协议即可使其正常工作(在客户端上删除/不使用全局IPv6地址)就足够了。

当客户端通过Wi-Fi连接到Internet并且IPv6可用时(客户端具有全局IPv6地址并且没有UTP / LAN连接),它可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.