多宿主 Windows 10 DNS 解析超时

多宿主 Windows 10 DNS 解析超时

我有许多加入 Windows 2012 R2 域的多宿主 Windows 10 客户端虚拟机。以太网 1 连接到具有域控制器的 LAN(没有转发器,也无法访问根服务器),以太网 2 连接到可以访问互联网的 LAN,以太网 0 和以太网 3 的介质均已断开连接。域控制器的记录查询返回正常,但互联网的记录查询需要 10 秒,再加上我的 ISP 的 DNS 服务器返回响应所需的时间。如果我直接通过nslookup名称查询我的 ISP 的 DNS 服务器,名称会立即解析(< 1 秒),如果我在不指定 DNS 服务器的情况下运行,nslookup查询会超时,并且名称永远不会解析,如果我尝试 ping DNS 名称,则需要 10 秒以上才能解析名称。

我查看了 Technet,但似乎还没有关于 Windows 10 的任何文档。我发现的最好的是:

http://blogs.technet.com/b/networking/archive/2009/06/26/dns-client-resolver-behavior.aspx http://blogs.technet.com/b/stdqry/archive/2011/12/15/dns-clients-and-timeouts-part-2.aspx

这意味着我应该期望我的客户端查询以太网 1 的主 DNS 服务器,等待 1 秒钟以等待响应超时,然后查询以太网 1 的辅助 DNS 服务器和以太网 2 的主 DNS 服务器,但这似乎没有发生。文档继续说,10 秒后(以及超过 3 轮超时时间更长的 DNS 查询)所有适配器的 DNS 解析将完全失败,但客户端的行为给人的印象是它甚至花了 10 秒钟才尝试使用第二个适配器的 DNS 服务器。

如果没有我(或您)打开 Wireshark 并嗅探线路,或者盲目修改,HKLM\System\CurrentControlSet\Services\dnscache\Parameters\DNSQueryTimeouts是否有人知道 Windows 10 应该如何运行,更重要的是,我该如何配置行为?我愿意忍受约 1 秒的解析时间,但 10 秒太残酷了。

ipconfig

Ethernet adapter Ethernet1:

   Connection-specific DNS Suffix  . : intranet.mydomain.net
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #2
   Physical Address. . . . . . . . . : 00-0C-29-CC-E8-93
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::999b:3e21:749b:6f55%7(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.2.0.20(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Lease Obtained. . . . . . . . . . : Sunday, September 6, 2015 8:17:00 AM
   Lease Expires . . . . . . . . . . : Sunday, September 13, 2015 8:17:00 AM
   Default Gateway . . . . . . . . . :
   DHCP Server . . . . . . . . . . . : 10.2.0.2
   DHCPv6 IAID . . . . . . . . . . . : 83889193
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1D-74-AB-6A-00-0C-29-CC-E8-89
   DNS Servers . . . . . . . . . . . : 10.2.0.1
                                       10.2.0.2
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Ethernet2:

   Connection-specific DNS Suffix  . : internet.mydomain.net
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #3
   Physical Address. . . . . . . . . : 00-0C-29-CC-E8-9D
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::944:ded1:dc53:cec4%6(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.1.116(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, September 6, 2015 8:17:04 AM
   Lease Expires . . . . . . . . . . : Monday, September 7, 2015 8:17:04 AM
   Default Gateway . . . . . . . . . : 192.168.1.1
   DHCP Server . . . . . . . . . . . : 192.168.1.1
   DHCPv6 IAID . . . . . . . . . . . : 83889193
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1D-74-AB-6A-00-0C-29-CC-E8-89
   DNS Servers . . . . . . . . . . . : 75.75.75.75
                                       75.75.76.76
                                       8.8.8.8
   NetBIOS over Tcpip. . . . . . . . : Enabled

nslookup

C:\Users\username>nslookup www.google.com 75.75.75.75
Server:  cdns01.comcast.net
Address:  75.75.75.75

Non-authoritative answer:
Name:    www.google.com
Addresses:  2607:f8b0:4001:c07::69
          74.125.196.106
          74.125.196.104
          74.125.196.147
          74.125.196.105
          74.125.196.99
          74.125.196.103


C:\Users\username>nslookup www.google.com
DNS request timed out.
    timeout was 2 seconds.
Server:  UnKnown
Address:  10.2.0.1

DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
*** Request to UnKnown timed-out

更新

以防其他人想知道,我将具有相同网络适配器配置的 Win7 SP1(无补丁)VM 添加到域中,将其移至与其他 VM 相同的 OU,并在客户端上更新组策略以防万一。它能够立即解析来自 DC 的 DNS 服务器和我的 ISP 的 DNS 查询。因此,这似乎是 Windows 10 DNS 客户端特有的行为。

更新 2

所以事情变得越来越奇怪。看起来 Win10 默认会并行发出查询,但它不会将响应传递给请求它的任何进程,直到所有查询超时。出于某种原因,我的第二个域控制器上的 DNS 服务器无法正常工作。有人知道如何禁用此行为吗?

Wireshark 数据包跟踪

答案1

微软在 Windows 10 中对 DNS 解析器进行了大幅修改或重写。

最大的变化是同时向所有适配器发出 DNS 查询,然后取第一个到达的答案。不幸的是,新代码包含错误和遗漏,似乎它不是取第一个答案,而是等待所有答案。如果其中一个 DNS 查询超时,这意味着在 DNS 解析之前需要等待 10 秒钟。

这个错误无疑将在 Windows 10 的未来更新中得到修复。在此之前,为了尽可能地将行为恢复到以前的 Windows 版本,存在以下注册表修改:

禁用智能名称解析(双字)

在注册表项中 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient
值为 1 表示禁用,0 表示启用智能解析。
关闭智能多宿主名称解析

指定多宿主 DNS 客户端应优化跨网络的名称解析。此设置通过在所有网络上发出并行 DNS 链接本地多播名称解析 (LLMNR) 和 TCP/IP 上的 NetBIOS (NetBT) 查询来提高性能。如果收到多个肯定响应,则使用网络绑定顺序来确定要接受哪个响应。如果启用此策略设置,DNS 客户端将不会执行任何优化。将首先在所有网络上发出 DNS 查询。如果 DNS 查询失败,则将发出 LLMNR 查询,如果 LLMNR 查询失败,则发出 NetBT 查询。如果禁用此策略设置或未配置此策略设置,则在发出 DNS LLMNR 和 NetBT 查询时将优化名称解析。

禁用ParallelA和AAAA(双字)

在注册表项中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
值为 0 表示启用,值为 1 表示禁用 DNS A 和 AAAA 查询在所有配置的 DNS 服务器上并行执行,理论上最快的响应会被首先接受。

答案2

来源

与 Windows 8 相比,Windows 10 中的 SMHNR 略有变化。在 Windows 10 中,您无法通过注册表将其关闭。

对于 Windows 10,您可以使用“本地策略”停用该功能。请按照以下步骤操作:

  • 按 WIN+R 并输入 gpedit.msc
  • 展开管理模板 展开网络
  • 单击DNS客户端双击“关闭智能多宿主名称解析”
  • 勾选“已启用”
  • 单击“全部应用”,然后单击“确定”

答案3

由于您的域 DNS 服务器无法访问根服务器,并且您没有设置转发,因此您需要从 DNS 服务器中删除无法访问的根提示,以加快查询其未托管的地址的速度。这应该会加快超时速度,进而加快客户端解析速度。否则,它会在放弃之前继续尝试联系根服务器。

在 2008 R2 上删除根提示的步骤是记录在这里

相关内容