Mat*_*att 13 windows dns timeout multi-homed windows-10
我有许多加入 Windows 2012 R2 域的多宿主 Windows 10 客户端 VM。Ethernet1 与域控制器(没有转发器或访问根服务器)连接到 LAN,Ethernet2 连接到可以访问 Internet 的 LAN,Ethernet0 和 Ethernet3 都断开了媒体连接。来自域控制器的记录查询返回得很好,但来自 Internet 的记录查询需要 10 秒加上我的 ISP 的 DNS 服务器返回响应所需的时间。如果我直接通过nslookup名称查询我的 ISP 的 DNS 服务器会被迅速解析(< 1 秒),如果我只是在nslookup没有指定 DNS 服务器的情况下运行,则查询超时并且名称永远不会解析,如果我尝试 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
这表示我应该期望我的客户端查询 Ethernet1 的主 DNS 服务器,等待 1 秒响应超时,然后查询 Ethernet1 的辅助 DNS 服务器和 Ethernet2 的主 DNS 服务器,但这似乎不是正在发生。该文档继续说,在 10 秒后(以及更多 3 轮超时更长的 DNS 查询),所有适配器的 DNS 解析都将完全失败,但客户端的行为给人的印象是它甚至在尝试之前花费了 10 秒将 DNS 服务器用于第二个适配器。
如果没有我(或你)打开 Wireshark 并嗅探线路,或者盲目修改,有HKLM\System\CurrentControlSet\Services\dnscache\Parameters\DNSQueryTimeouts没有人知道 Windows 10 应该如何运行,更重要的是我如何配置行为?我愿意忍受大约 1 秒的解析时间,但 10 秒相当残酷。
配置文件
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
更新
如果其他人想知道,我将具有相同网络适配器配置的 Win7 SP1(无补丁)VM 加入域,将其移到与其他 VM 相同的 OU 中,并在客户端上更新组策略以防万一。它能够立即解析来自 DC 的 DNS 服务器和我的 ISP 的 DNS 查询。所以看起来这是特定于 Windows 10 DNS 客户端的行为。
更新 2
所以事情变得越来越陌生。看起来 Win10 默认情况下会并行发出查询,但在所有查询超时之前,它不会将响应传递给请求它的任何进程。由于某种原因,我的第二个域控制器上的 DNS 服务器无法正常工作。有谁知道如何禁用这种行为?
har*_*ymc 13
Microsoft 在 Windows 10 中大幅修改或重写了 DNS 解析器。
最大的变化是并行向所有适配器发出 DNS 查询,然后采用第一个到达的答案。不幸的是,新代码包含错误和遗漏,它似乎没有接受第一个答案,而是等待所有答案。如果其中一个 DNS 查询超时,这意味着在解析 DNS 之前需要等待 10 秒。
这个错误无疑会在未来的 Windows 10 更新中得到修复。 在此之前,为了尽可能地将行为恢复到以前的 Windows 版本,存在以下注册表修改:
DisableSmartNameResolution (DWORD)
在注册表项中
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient。
值为 1 表示禁用,0 表示启用智能分辨率。
从关闭智能多宿主名称解析:
指定多宿主 DNS 客户端应优化跨网络的名称解析。该设置通过跨所有网络发出并行 DNS 链接本地多播名称解析 (LLMNR) 和 NetBIOS over TCP/IP (NetBT) 查询来提高性能。如果收到多个肯定响应,网络绑定顺序将用于确定接受哪个响应。如果启用此策略设置,DNS 客户端将不会执行任何优化。DNS 查询将首先在所有网络上发出。如果 DNS 查询失败,则会发出 LLMNR 查询,如果 LLMNR 查询失败,则会发出 NetBT 查询。如果禁用此策略设置或未配置此策略设置,将在发出 DNS LLMNR 和 NetBT 查询时优化名称解析。
禁用ParallelAandAAAA (DWORD)
在注册表项中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters。
该值为 0 表示启用,1 表示禁用 DNS A 和 AAAA 查询在所有配置的 DNS 服务器上并行执行,理论上最快的响应首先被接受。
| 归档时间: |
|
| 查看次数: |
20049 次 |
| 最近记录: |