我有一个家庭网络,其中有 2 台 Mac 和一台 Linux 机器。Linux 机器上有一个缓存 DNS 名称服务器。我希望 Mac 使用缓存服务器,并且只有当无法访问时才使用外部 DNS。
Mac 是否会轮流使用所有已配置的名称服务器,还是按顺序尝试,直到有一个能正常工作?
另一个怪癖是,内部 DHCP 由我的路由器(Linksys WRT54GL)提供,该路由器可容纳三个名称服务器。但如果配置的少于三个,则空白处将用路由器的外部 DHCP 提供的任何内容填充 - 在这种情况下,康卡斯特的“域助手”DNS 中断,这是我不想要的(缓存配置为使用 Google 的公共 DNS)。
因此,如果 Mac 确实采用循环方式,我需要在另外两个位置放置一些东西。简单地重复缓存服务器的 IP 是否不好?
答案1
从旋转变压器(5):
如果有多个服务器,解析器库会按列出的顺序查询它们。使用的算法是尝试一个名称服务器,如果查询超时,则尝试下一个,直到名称服务器用完,然后重复尝试所有名称服务器,直到重试次数达到最大限度。
由于它还可以使用多级配置(请参阅前面链接的手册页中的“搜索策略”),因此事情可能会变得有点复杂。假设中没有文件/etc/resolver/
(将为特定域定义不同的配置),那么您应该获得中指定的配置的“按顺序”行为/etc/resolv.conf
。
没有提到重复的服务器地址,但如果你想阻止康卡斯特的服务器被考虑,这似乎是一种合理的方法。如果它不起作用,你可以使用另一个外部的,公共 DNS 提供商(例如 Google 或 Level 3)。或者,您也可以通过 IP 别名向 Linux 机器添加另一个地址(例如eth0:1
)。
答案2
根据RFC 2132,DNS 服务器应按“优先顺序”列出。由于 Apple 更改了其 DNS 实现(我认为是在 Tiger 和 Snow Leopard 之间),并且存在一些有关 IPV6 和 IPV4 解析的问题,我不确定它们是否遵循 RFC。测试方法是,将地址解析为 Linux DNS 缓存上的其他地址,然后检查哪个服务器显示在您的 Mac 上。