![多个 DNS,服务器优先级](https://linux22.com/image/801072/%E5%A4%9A%E4%B8%AA%20DNS%EF%BC%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BC%98%E5%85%88%E7%BA%A7%20.png)
当在客户端上设置多个 DNS 服务器时,我一直认为它的工作原理如下:
如果主 DNS 服务器可用,则始终使用它,而只有在主 DNS 服务器不可用时才使用辅助 DNS 服务器。我的理解正确吗?
询问的原因是我刚刚从微软发现了这一点:
如果您使用多个 DNS 服务器,即使第一个服务器可用,客户端有时也可能会查询辅助服务器
让我看看是否可以更好地表述这个问题:
如果主 DNS 在线且正常工作,为什么 DNSCache 有时似乎仍使用辅助 DNS 服务器?我的理解是这种情况不应该发生。
据微软称:
如果您使用多个 DNS 服务器,即使第一个服务器可用,客户端有时也可能会查询辅助服务器
那么具有多个 DNS 服务器的客户端应该如何表现?这是 Win8 DNSCache 中的错误吗?
但微软的这篇文章似乎颠覆了一切: http://support.microsoft.com/kb/320760
出现此行为的原因是 Windows XP DNS 客户端服务 (Dnscache) 在决定使用 TCP/IP 属性中配置的 DNS 服务器的顺序时遵循某种算法。如果 DNS 服务器列表重新排列优先级,Windows XP DNS 客户端服务会定期重置服务器优先级。默认情况下,服务器优先级每 15 分钟重置一次
这表明 DNSCache 并不将主/次要 DNS 服务器视为不同的优先级,而只是将其视为具有同等优先级的备选 DNS 服务器。
可以更改 ServerPriorityTimeLimit=0 注册表设置来修复此行为。
这是否意味着 MS DNSCache 已损坏,需要修复此注册表才能使其再次正常工作?
答案1
如果可以访问主服务器,它将仅查询该服务器。如果查询未返回任何内容,它将把查询发送到其转发器,但如果转发器未返回任何内容,它将在此时失败。它不会继续查询辅助 DNS 服务器。
如果主 DNS 服务器根本没有响应 DNS 查询,则使用辅助 DNS 服务器。
如果主 DNS 服务器不知道答案,则辅助 DNS 服务器不会作为后备查询(转发器)存在。
另外,Evan 和 Joe: Windows 如何决定在解析名称时使用哪个 DNS 服务器?
还:
https://serverfault.com/questions/130608/when-is-a-secondary-nameserver-hit