什么时候使用辅助DNS服务器?

Dar*_*ong 5 dns macos router system-preferences

在我们的路由器上,我们将主DNS设置为运行Windows Server 2008和内置DNS服务器的本地IP。我们使用它来将域解析为本地服务器,如果在本地找不到该域,我们将设置转发器以查询外部名称服务器。

如果本地DNS服务器已关闭,则路由器上的辅助DNS将设置为ISP的主要DNS。

我们办公室中的mac客户端可以从路由器正确地选择DNS服务器,但是关于它使用什么DNS服务器似乎非常随机。例如,将加载本地站点,但不会加载某些图像。如果我将我的DNS地址硬编码为本地DNS服务器,则一切正常。

所以我的问题是,mac客户端何时会使用辅助DNS服务器?我是否仅在主DNS不可用时才使用它?

谢谢!

Mec*_*cki 8

辅助 DNS 服务器的总体思路是,如果主 DNS 服务器没有回复(例如它离线、无法访问、重新启动等),系统可以回退到辅助 DNS 服务器,因此它不会在此期间无法解析 DNS 名称。不回复意味着“根本没有回复”,当主说一个名字未知时它不会询问次要。回答姓名未知一种答复。

这里的问题是 DNS 使用 UDP,而 UDP 是无连接的。因此,如果 DNS 服务器处于离线状态,系统不会因为没有收到来自它的回复而注意到其他服务器。由于 UDP 数据包也可能丢失并且往返时间 (RTT) 未知,因此它必须重新发送请求几次,每次等待几秒钟,然后才能最终得出该服务器的结论死了。这意味着如果第一个 DNS 服务器死机,解析 DNS 名称可能需要一整分钟或更长时间。

由于这似乎是不可接受的,不同的操作系统开发了不同的策略来更好地处理这个问题。由于两个 DNS 服务器都应该为同一个域提供相同的结果(如果不是,您的设置实际上存在缺陷,因为辅助服务器应该是主要服务器的 1 对 1 替换),所以哪个是无关紧要的正在使用。有些系统可能会向主系统发送请求,但如果几秒钟内没有回复,它们就不会重新发送给它,而是先尝试次要系统(然后重新发送给主系统,依此类推)。有些人也可能同时查询两者,让更快的一个获胜,然后继续使用那个(直到他们开始另一场比赛,看看它是否仍然是更快的)。有些人可能更喜欢主要的,但如果当前有超过一定数量的查询在主要查询上挂起,则会进行某种负载平衡并切换到次要查询。有些只是作为穷人的负载平衡在它们之间交替。所有这些实际上都是允许的。

但是,在您的情况下,我担心您的主服务器有问题,因为默认情况下,macOS 只会使用主服务器。如果它不断地回退到次要,它可能会认为主要的太慢了。每次发生这种情况时,辅助服务器都会成为主要服务器,请参阅这篇较旧的知识库文章这篇cnet文章解释了如何禁用它,但我不确定这在当前系统中是否仍然可能。我无法找到任何关于此的参考,但是 IIRC 从我的脑海深处,Apple 曾经在 WWDC 上提到他们现在在 DNS 查询方面更加积极,甚至可能尝试以最快的速度同时联系多个 DNS 服务器在某些情况下获胜,但我可能错了(也许这只是 iOS 左右)。


San*_*an4 5

我搜索了这篇文章,解释了更新的MacOS DNS搜索顺序。而这个说明了如何调整它以获得所需的结果。

尽管通常的想法是(在任何操作系统中)从未希望第一台服务器是使用的服务器,而第二台服务器是备份的服务器。(即使在Windows上,如果第一个服务器由于某种原因不能很快回答,也将查询第二个服务器。)将服务器查询顺序视为未指定是比较明智​​的。