我们公司网络用于xxx.companyname.local
本地网络上的所有服务器。每当我在 Mac 上访问这些服务器之一时,都会有 10 秒的延迟。我发现这种延迟是由 DNS 查找引起的,因为 Lion 显然按以下顺序解析 .local 域:
- 检查
/etc/hosts
IPv6 地址 - 检查 DNS 服务器是否有 AAAA 记录(IPv6 地址)
- 通过 MDNS (Bonjour) 检查 AAAA 记录
- 检查
/etc/hosts
IPv4 地址 - 检查 DNS 服务器是否有 A 记录(IPv4 地址)
- 检查 MDNS 中的 A 记录
现在,问题是,我们没有 IPv6 网络。xxx.companyname.local
我们网络上的所有服务器都只有 IPv4 地址,DNS 服务器只有 A 记录。这意味着地址在步骤 5 中解析。问题在于步骤 3 需要 10 秒钟才会超时!每次我连接到我们的 wiki、SVN 服务器、Kerberos 服务器等时,都会有 10 秒的延迟。
我成功地欺骗了 Lion,方法是将下面的代码添加到/etc/hosts
::FFFF:10.99.99.99 xxx.companyname.local
如果我这样做,Lion 会认为该域有一个 IPv6 地址,并在步骤 1 之后停止。但是,这种解决方法完全绕过了 DNS 的所有有用功能。我不想手动跟踪数十个内部域的 IP 地址!我也可以停止使用主机名,只需输入 IP 地址!
那么:有人知道如何更改此查找顺序吗?或者禁用 IPv6 查找,因为我们没有 IPv6 网络?
答案1
阻止您的 IT 部门滥用local.
。
如上所述,滥用域名您的公司不拥有,因此不应假设它可以在其中创建公司子域,这是错误的,也是问题的一半。如果公司计算机包括 Macintoshes(或任何其他使用 DNSSD 的设备),那么绝对不要假设这local.
是你的,你可以以这种方式随意摆弄它。
升级你的 Macintosh。
MacOS 10.4 确实会xxx.companyname.local.
按照您描述的方式处理。但这在操作系统的后续版本中发生了变化。MacOS 10.5 仅将双标签名称传递给多播 DNS。三标签名称(例如)xxx.companyname.local.
不由 MDNS 处理。MacOS 10.6 更进一步,尝试检测 DNS 服务器是否配置错误,导致local.
区并采取相应行动。
至少你应该配置你的 Macintosh 以拥有/etc/resolver/
公司名称.local
文件search_order 1
内列出了代理 DNS 服务器的当前 IP 地址。不过,正如 Apple 所说,这不适用于 DHCP 分配的、会发生变化的 DNS 服务器 IP 地址。
紧握的手上……
… 这些只是逐渐复杂的补救措施,以适应错误的想法。引用苹果公司的马克·克罗赫马尔的话,“当人们像你公司那样滥用职权时,总会有一些问题” local.
。自 2002 年(我快速搜索了一下,发现)以来,甚至更早,它就被认为是错误的。只是不要这样做。
进一步阅读
- dlove(2002-12-02)。 .local 域名和 DNS 问题.macworld。
- 苹果公司(2010 年)。Mac OS X v10.4、10.5、10.6:如何通过 Bonjour 和标准 DNS 查找“.local”主机名。
- 斯蒂芬·霍夫曼(2010)。DNS 技巧:将单播和多播 DNS 与 .local 混合使用. 霍夫曼实验室。
- 苹果公司(2008 年)。Mac OS X 10.3:如何通过 Bonjour 和标准 DNS 查找“.local”主机名。
答案2
我不懂 mac,所以帮不上什么忙,但我想到了一个聪明的解决方法:如果你在互联网上的某个地方进行设置,"somedomain.com DNAME companyname.local"
它会在第 2 步捕获 DNAME。现在我不确定接下来会发生什么,它是否还会回到 bonjour,或者因为它已经处于某个 DNS 过程的中间,也许它会坚持使用 DNS。