Windows 7 跳过主 DNS 服务器,直接转到备用 DNS 服务器

Windows 7 跳过主 DNS 服务器,直接转到备用 DNS 服务器

我的网络上的多台 Windows 7 机器遇到了一个奇怪的问题。

这些机器当前配置为使用本地 DNS 服务器 192.168.1.42 作为其主 DNS 服务器。Google 的公共 DNS 8.8.8.8 配置为备用 DNS 服务器。

偶尔,本地 FQDN 的解析会完全失败。因此,假设我 ping test.loc,我会收到“无法找到主机”错误。Google DNS 中有记录的 FQDN 可以正常解析。

加载 Wireshark 并检查此次 ping 尝试期间的实际流量,显示对 test.loc 发出 8.8.8.8 的查询,但显然未找到该查询。

然而,如果在这个问题仍然存在的情况下,我运行,比如说,nslookup 测试.loc,我可以看到 DNS 查询被发送到主 DNS 服务器 192.168.1.42。这是问题仍然存在的唯一情况,其中使用了主 DNS 服务器。在任何其他情况下(ping 请求、尝试访问 test.loc 上的 Web 资源等),Windows 都会立即跳转到备用 DNS 服务器。

我可以通过重新启动 DNS 客户端服务来暂时解决此问题(停止 dnscache网络启动 dnscache),或者重置我的网络适配器(我只尝试通过 GUI 执行此操作),但问题似乎经常重现(尽管没有任何明显的规律)。

如果您能告诉我为什么 Windows 拒绝使用我的主 DNS 服务器进行非 nslookup 名称解析,我将不胜感激!

(我们不在 AD 域中,因此任何故障排除都应牢记这一点。)

答案1

不幸的是,这个问题似乎还没有解决办法。当 Windows 无法连接其主 DNS 服务器时,就会发生这种情况,并在内部更改 DNS 优先级以优先使用辅助 DNS 服务器。在 Windows 7 中重置 DNS 服务器优先级的唯一方法是重新启动 DNS 客户端服务。

答案2

首先,您应该确定主 DNS 服务器响应问题的原因(或客户端无法从主 DNS 服务器接收响应的原因)。除此之外,唯一的选择是按照以下步骤强制 Windows 始终先尝试主 DNS 服务器(如果主 DNS 服务器确实发生故障,这将降低速度)。

以下是上面链接的 MS KB 文章的相关部分:

修改注册表中的以下键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

DWORD创建一个名为的新值ServerPriorityTimeLimit并将值设置为0(那是一个零)。

当您设置ServerPriorityTimeLimit0时,服务器优先级会在 DNS 客户端服务决定使用哪个 DNS 服务器之前重置。您必须重新启动 Windows 以使这些更改生效。在此字段中使用的任何其他值都会导致默认行为。只有 0 值才会更改默认行为。所有其他值都会导致默认行为。

答案3

这显然适用于 Win 7(也可能适用于其他系统):

http://support2.microsoft.com/default.aspx?scid=kb;en-us;320760

它确实在我的 Windows 10 技术预览版系统上运行良好!

相关内容