我的OSX计算机上的主机名查找有问题。 根据苹果公司的HK3473文件,它说v10.6:
除本地以外,只包含一个标签的主机名(例如“My-Computer.local”)默认使用多播DNS(Bonjour)进行parsing。 除本地外,包含两个或更多标签的主机名(例如“server.domain.local”)默认使用DNS服务器parsing。
这不是我的testing。 如果我尝试在本地计算机上打开连接到远程端口:
telnet example.domain.local 22
那么它将使用多播DNS在A和AAAA查找旁边查找IP地址。 这会导致每个查找两秒查找超时。 这是很多!
当我尝试使用IPv4时,它不会使用多播查询来获取远程地址,而只是简单的A查询。
telnet -4 example.domain.local 22
当我尝试仅使用IPv6时:
telnet -6 example.domain.local 22
那么它将再次使用多播DNS 和 AAAA查找, 并再次发生2秒超时延迟。
我试着创build一个parsing器条目到我的/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.efip6.arpa options : mdns timeout : 2 order : 300400 resolver #5 domain : 9.efip6.arpa options : mdns timeout : 2 order : 300600 resolver #6 domain : aefip6.arpa options : mdns timeout : 2 order : 300800 resolver #7 domain : befip6.arpa options : mdns timeout : 2 order : 301000 resolver #8 domain : domain.local nameserver[0] : 192.168.1.1 order : 200001
如果我可以将resolver #8移动到位置#2,也许它会工作。
更新#2
没有可能不会工作,因为192.168.1.1上的本地DNS服务器应答domain.local请求,它在mDNS( resolver #2 )之前。
更新#3
我可以减less/System/Library/SystemConfiguration/IPMonitor.bundle/Contents/Info.plist文件中的mDNS超时,这会加快查找速度,但这不是解决scheme。
你有没有尝试在/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 flush来刷新。 在事情的极端,我不build议 – 你也可以禁用mDNSResponder(Bonjour等)
launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponderHelper.plist launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
10.5以后的系统通过一个相当混乱的指令链来提供DNSparsing,这个指令是由configd强制的,对于旧的“系统踢球者”来说是显而易见的。 为了得到它的状态↝scutil– scutil --dns显示DNSparsing的系统顺序,比如</s>
DNSconfiguration
parsing器#1域:example.netsearch域[0]:example.net域名服务器[0]:127.0.0.1 order:200000
parsing器#2域:本地选项:mdns超时:2阶:300000
parsing器#3域:254.169.in-addr.arpa选项:mdns超时:2阶:300200
parsing器#4域:8.efip6.arpa选项:mdns超时:2顺序:300400
如果你仍然有问题,确保这个清单“对你有意义” – 然后从那里开始…