OSX 上的多播主机名查找

OSX 上的多播主机名查找

我在 OSX 电脑上遇到了主机名查找问题。根据 AppleHK3473针对 v10.6 的文档:

默认情况下,除了本地之外仅包含一个标签的主机名(例如“My-Computer.local”)将使用多播 DNS(Bonjour)进行解析。除了本地之外还包含两个或更多标签的主机名(例如“server.domain.local”)将使用 DNS 服务器进行解析。

经我测试,结果并不正确。如果我尝试在本地计算机上打开到远程端口的连接:

telnet example.domain.local 22

然后它将使用以下方式查找 IP 地址多播域名解析A和查找旁边AAAA。这会导致每次查找都出现两秒钟的查找超时。这可真是太多了!

当我尝试使用 IPv4 时,它不会使用多播查询来获取远程地址,而只使用简单A查询。

telnet -4 example.domain.local 22

当我仅尝试使用 IPv6 时:

telnet -6 example.domain.local 22

然后它将使用多播 DNS 进行查找 AAAA再次,并再次出现 2 秒超时延迟。

我尝试为我的/etc/resolver/domain.local和创建一个解析器条目/etc/resolver/local.1,但它们都不起作用。

有什么方法可以禁用“向本地添加两个或更多标签”域的多播查找,或者只是为选定的子域(domain.local)禁用它?

谢谢你!

更新 #1

感谢@mralexgray 提供的scutil --dns命令,现在我可以在列表中看到我的域名,但是顺序已经晚了:

DNS configuration

resolver #1
  domain : adverticum.lan
  nameserver[0] : 192.168.1.1
  order   : 200000

resolver #2
  domain : local
  options : mdns
  timeout : 2
  order   : 300000

resolver #3
  domain : 254.169.in-addr.arpa
  options : mdns
  timeout : 2
  order   : 300200

resolver #4
  domain : 8.e.f.ip6.arpa
  options : mdns
  timeout : 2
  order   : 300400

resolver #5
  domain : 9.e.f.ip6.arpa
  options : mdns
  timeout : 2
  order   : 300600

resolver #6
  domain : a.e.f.ip6.arpa
  options : mdns
  timeout : 2
  order   : 300800

resolver #7
  domain : b.e.f.ip6.arpa
  options : mdns
  timeout : 2
  order   : 301000

resolver #8
  domain : domain.local
  nameserver[0] : 192.168.1.1
  order   : 200001

resolver #8如果我能将其移动到位置#2,也许会有效。

更新 #2

不,可能不会起作用,因为本地 DNS 服务器负责192.168.1.1回答domain.local请求,并且它位于 mDNS(resolver #2)之前。

更新 #3

我可以减少文件中的 mDNS 超时/System/Library/SystemConfiguration/IPMonitor.bundle/Contents/Info.plist,这会稍微加快查找速度,但这不是解决方案。

答案1

您是否尝试过在文件中定义名称/etc/hosts

10.0.1.1                ns1 ns1.local
10.0.1.200              www www.local
2001:470:20::9999       www ns1 www.example.net ns1.example.net 

本地子网上还运行着哪些其他 DNS 服务?您可以通过显式提供本地 DNS 来解决很多问题,而且非常简单 - 使用DNSMasq,我全心全意推荐这样做。

您可能还需要使用dscacheutil -flushcache↩ 或老办法sudo killall mDNSResponder↩ 清除缓存。在极端情况下,我不建议这样做 - 您也可以完全禁用 mDNSResponder(Bonjour 等)↝

launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist
launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

10.5 之后的系统通过一系列相当混乱的指令提供 DNS 解析,这些指令由配置,继承了旧版“系统踢球器”的功能。要获取其状态,请按 ↝ scutil --dns↩ 键,该键显示 DNS 解析的系统顺序,例如 ↯

DNS 配置

解析器 #1 域:example.net 搜索域[0]:example.net 名称服务器[0]:127.0.0.1 订单:200000

解析器 #2 域:本地 选项:mdns 超时:2 顺序:300000

解析器 #3 域:254.169.in-addr.arpa 选项:mdns 超时:2 顺序:300200

解析器 #4 域:8.efip6.arpa 选项:mdns 超时:2 顺序:300400

如果您仍然遇到问题,请确保此列表“对您来说有意义” - 然后从那里开始......

相关内容