Windows 7正在跳过主DNS服务器并直接移动到备用DNS服务器

我在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 dnscachenet 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技术预览系统上工作!