我在 Mac OS 10.8.2 上的 Virtual Box 中以虚拟机形式运行 centos linux。虚拟机的 IP 地址为 172.17.33.2。我在 /etc/hosts 中创建了一个条目,其中
172.17.33.2 centos.dev
当我尝试通过
ping centos.dev
第一次 ping 大约需要 30 秒,之后一切都按预期工作:
meckbuck2:~ mimi$ ping -n centos.dev
PING centos.dev (172.17.33.2): 56 data bytes
64 bytes from 172.17.33.2: icmp_seq=0 ttl=64 time=0.521 ms
64 bytes from 172.17.33.2: icmp_seq=1 ttl=64 time=0.294 ms
64 bytes from 172.17.33.2: icmp_seq=2 ttl=64 time=0.274 ms
如果我使用 ping 172.17.33.2(无 DNS 解析),一切都很快,第一次 ping 会在几分之一秒内开始。所以看起来我的电脑上的名称解析出了问题。有人能告诉我如何解决这个问题吗?这是一台新的 MacBook Retina 15",不到一周前我从头开始设置的。
我也尝试过使用 centos.localhost 作为域名 - 同样存在此问题。
一旦域名解析成功,并且 IP 到位,一切就会按预期运行(ssh、smb、http……)。欢迎提供任何提示!
编辑:当我 ping 服务器名称时,我使用 dtruss 获取系统调用的转储。ping 卡在跟踪的末尾。您可以在此处找到它:http://pastebin.com/JXgeHsBu
编辑 2:我按照http://blog.root-of-all-evil.com/2012/07/how-to-bypass-os-x-lions-reverse-dns-lookup-order-to-resolve-slow-local-host-lookups/设置本地 DNS 服务器。问题依然存在。
当我在虚拟机上启动 ping 时,tcpdump 给出了以下输出:
01:16:27.668409 IP 192.168.6.101.62932 > 8.8.8.8.53: 26754+ A? www.isg-apple.com.akadns.net. (46)
01:16:27.668456 IP 192.168.6.101.20149 > 8.8.8.8.53: 41456+ AAAA? www.isg-apple.com.akadns.net. (46)
01:16:27.670650 IP 8.8.8.8.53 > 192.168.6.101.62932: 26754 3/8/0 CNAME www.apple.com.edgekey.net., CNAME e3191.c.akamaiedge.net., A 23.1.61.15 (275)
01:16:27.670932 IP 8.8.8.8.53 > 192.168.6.101.20149: 41456 2/1/0 CNAME www.apple.com.edgekey.net., CNAME e3191.c.akamaiedge.net. (176)
01:16:33.178960 IP 192.168.6.101.41429 > 8.8.8.8.53: 21942+ A? e3191.c.akamaiedge.net. (40)
01:16:33.180452 IP 8.8.8.8.53 > 192.168.6.101.41429: 21942 1/8/0 A 23.1.61.15 (200)
01:16:46.876547 IP 192.168.6.101.24354 > 8.8.8.8.53: 6871+ A? 1.courier-push-apple.com.akadns.net. (53)
01:16:46.877900 IP 8.8.8.8.53 > 192.168.6.101.24354: 6871 8/10/5 A 17.149.36.102, A 17.149.36.169, A 17.149.32.52, A 17.149.36.115, A 17.149.36.178, A 17.149.36.127, A 17.149.36.181, A 17.149.36.108 (494)
01:16:53.863153 IP 192.168.6.101.61304 > 8.8.8.8.53: 32328+ A? e3191.c.akamaiedge.net. (40)
01:16:53.884441 IP 8.8.8.8.53 > 192.168.6.101.61304: 32328 1/8/0 A 23.1.61.15 (200)
编辑 3:这是我的 scutil --dns 输出
meckbuck2:~ mimi$ scutil --dns
DNS configuration
resolver #1
search domain[0] : hil-allhw.phl.wayport.net
search domain[1] : phl.wayport.net
nameserver[0] : 127.0.0.1
reach : Reachable,Local Address
resolver #2
domain : local
options : mdns
timeout : 5
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 5
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 5
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 5
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 5
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 5
order : 301000
DNS configuration (for scoped queries)
resolver #1
search domain[0] : hil-allhw.phl.wayport.net
search domain[1] : phl.wayport.net
nameserver[0] : 127.0.0.1
if_index : 4 (en0)
flags : Scoped
到达:可达,本地地址
答案1
我在 OSX 上10.13.6
遇到了这个问题.local
。诀窍是指定两个都、IPv4和IPv6:
127.0.0.1 php.local
::1 php.local
答案2
可能是某个程序正在尝试更新。我猜你已经考虑过将域名服务器设置为 Google DNS 之类的东西。Apple 有一款名为 NameBench 的免费软件,它可能会提供更多数据。
答案3
就我而言,解析本地定义的名称myserver.local
很慢,通过以下修改解决了这个问题 -
10.0.0.5 myserver.local alias.local # original config
更改为(添加了 ServerName 并将 myserver.local 移至列表末尾)-
10.0.0.5 ServerName alias.local myserver.local # altered config
问题已解决。现在dscacheutil -q host -a name myserver.local
立即生效。
我之所以想到这一点,是因为dscacheutil
另一台主机的上述输出打印了 -
name: localhost
alias: mypc.local
ip_address: 10.0.0.1
所以理论上第一个项目应该是主持人的名字,不知道是否真的如此,但它解决了我的问题。