【问题标题】:When is a secondary DNS server used?何时使用辅助 DNS 服务器?
【发布时间】:2012-04-29 18:16:12
【问题描述】:

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

路由器上的辅助 DNS 设置为我们 ISP 的主 DNS,以防本地 DNS 服务器出现故障。

我们办公室的 mac 客户端正确地从路由器获取 DNS 服务器,但它使用的 DNS 服务器似乎非常随机。例如,本地站点会加载,但某些图像不会。如果我将我的 DNS 地址硬编码为本地 DNS 服务器,一切都会正常工作。

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

谢谢!

【问题讨论】:

  • 可能属于超级用户

标签: macos dns router system-preferences


【解决方案1】:

我搜索了this article,它解释了更新的 MacOS DNS 搜索顺序。 this one 解释了如何调整它以获得您想要的结果。

尽管总体思路是(在任何操作系统中)从未打算使用第一台服务器,而第二台服务器是备份。 (即使在 Windows 上,如果第一个服务器由于某种原因没有很快响应,则会查询第二个服务器。)将服务器查询顺序视为未指定更为明智。

【讨论】:

  • 在我的 windows server 2016 机器上,辅助 dns 在失败后没有被查询(nslookup 实用程序)
【解决方案2】:

辅助 DNS 服务器的一般想法是,如果主 DNS 服务器没有回复(例如,它离线、无法访问、重新启动等),系统可以回退到辅助 DNS,所以它赢了在此期间无法解析 DNS 名称。不回复的意思是“根本不回复”,当primary说名字不详时,它不会问secondary。回答姓名未知回复。

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

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

不过,就您而言,恐怕您的主服务器by default, macOS will only use the primary one 有问题。如果它不断地回退到次要的,它可能会认为主要的太慢了。每次发生这种情况时,辅助服务器都会成为主服务器see this older knowlebase articleThis cnet article 解释了如何禁用此功能,但我不确定这在当前系统中是否仍然可行。我无法找到任何关于此的参考,但 IIRC 从我的脑海深处,Apple 曾经在 WWDC 上提到他们现在在 DNS 查询方面更加积极,甚至可能尝试以最快的速度一次联系多个 DNS 服务器在某些情况下赢了,但我可能错了(也许这只是 iOS 左右)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多