OSX 上的多播主机名查找

KAR*_*ván 7 domain-name-system ipv6 multicast mac-osx ipv4

我的 OSX 计算机上的主机名查找有问题。根据 Apple 的HK3473文档,它针对 v10.6 说:

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

这在我的测试中是不正确的。如果我尝试在本地计算机上打开与远程端口的连接:

telnet example.domain.local 22
Run Code Online (Sandbox Code Playgroud)

然后它将使用和查找旁边的多播 DNS查找 IP 地址。这会导致每次查找都有两秒的查找超时。这是很多!AAAAA

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

telnet -4 example.domain.local 22
Run Code Online (Sandbox Code Playgroud)

当我仅尝试使用 IPv6 时:

telnet -6 example.domain.local 22
Run Code Online (Sandbox Code Playgroud)

然后它将再次使用多播 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
Run Code Online (Sandbox Code Playgroud)

如果我可以将 移动resolver #8到位置 #2,也许它会起作用。

更新 #2

否可能不会起作用,因为本地 DNS 服务器192.168.1.1用于domain.local响应请求,并且它在 mDNS ( resolver #2)之前。

更新 #3

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

mra*_*ray 1

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

\n\n
10.0.1.1                ns1 ns1.local\n10.0.1.200              www www.local\n2001:470:20::9999       www ns1 www.example.net ns1.example.net \n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

dscacheutil -flushcache您可能还只需要使用\xe2\x86\xa9 或好的 ole sudo killall mDNSResponder\xe2\x86\xa9来清除内容。在极端情况下,我不建议 - 你也可以禁用 mDNSResponder (Bonjour 等) \xe2\x86\x9d

\n\n
launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist\nlaunchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist\n
Run Code Online (Sandbox Code Playgroud)\n\n

10.5 之后的系统通过相当混乱的指令链提供 DNS 解析,这些指令由configd强制执行,显然是旧“系统踢球者”的继承人。获取其状态 \xe2\x86\x9d scutil --dns\xe2\x86\xa9 显示 DNS 解析的系统顺序,例如 \xe2\x86\xaf

\n\n
\n

DNS配置

\n\n

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

\n\n

解析器 #2 域:本地选项:mdns 超时:2 订单:300000

\n\n

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

\n\n

解析器 #4 域名:8.efip6.arpa 选项:mdns 超时:2 订单:300400

\n
\n\n

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

\n