我在networking上遇到了很多Windows 7计算机的奇怪问题。
这些机器当前configuration为使用本地DNS服务器192.168.1.42作为其主DNS服务器。 Google的公共DNS(8.8.8.8)被configuration为备用DNS服务器。
偶尔地,偶尔地,本地FQDN的解决完全失败。 所以,假设我ping test.loc,我会得到一个“无法find主机”的错误。 在Google的DNS中有logging的FQDN可以正常parsing。
加载Wireshark和检查实际的stream量,在这个ping尝试显示一个查询到8.8.8.8为test.loc,显然,这是没有find。
但是,如果这个问题仍然存在,我运行nslookup test.loc ,我可以看到DNS查询被发送到主DNS服务器192.168.1.42。 这是唯一的情况,而问题仍然存在,使用主DNS服务器。 在任何其他情况下 – ping请求,尝试访问test.loc上的Web资源等 – Windows立即跳到备用DNS服务器。
我可以通过重新启动我的DNS客户端服务( net stop dnscache , net start dnscache )或重新设置我的networking适配器(我只通过GUI尝试过)暂时解决这个问题,但是这个问题似乎经常发生任何明显的模式)。
任何想法,为什么Windows拒绝使用我的主DNS服务器非nslookup名称parsing将不胜感激!
(我们不在AD域,所以任何故障排除都应该记住。)
不幸的是,似乎没有解决这个问题。 它发生在Windows无法联系其主DNS服务器,并在内部更改DNS优先级以优先使用辅助DNS服务器。 在Windows 7中重置DNS服务器优先级的唯一方法是重新启动DNS客户端服务。
首先,您应该确定主DNS服务器响应问题的原因(或者为什么客户端无法从主DNS服务器接收响应)。 除此之外,唯一的select是按照以下步骤强制Windows始终首先尝试您的主DNS服务器(如果主DNS服务器确实失败,将会降低速度)。
以下是上面链接的MS KB文章的相关部分:
修改registry中以下项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
使用名称ServerPriorityTimeLimit创build一个新的DWORD值,并将该值设置为0 (即零)。
当您将ServerPriorityTimeLimit设置为0 ,DNS客户端服务决定使用哪个DNS服务器之前服务器优先级被重置。 您必须重新启动Windows才能使这些更改生效。 此字段中使用的任何其他值都将导致默认行为。 只有值为0才会更改默认行为。 所有其他值导致默认行为。
这显然适用于Win 7(可能还有其他):
http://support2.microsoft.com/default.aspx?scid=kb;en-us;320760
它绝对在我的Windows 10技术预览系统上工作!