尝试 ping 本地网络上的一台机器后,我注意到我试图访问地址 66.152.109.24。这是一个外部公共地址。解析应该通过 avahi mDNS 进行。我运行 dig 来查看名称解析的工作原理,我的 quest/centurylink 名称服务器正在重新调整我的 .local 域查询的结果!我尝试了一个随机名称并得到了相同的 IP 地址结果。
$ dig jakdafj.local
; <<>> DiG 9.8.1-P1-RedHat-9.8.1-3.P1.fc15 <<>> jakdafj.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58410
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;jakdafj.local. IN A
;; ANSWER SECTION:
jakdafj.local. 10 IN A 66.152.109.24
jakdafj.local. 10 IN A 204.232.231.46
;; Query time: 104 msec
;; SERVER: 205.171.3.25#53(205.171.3.25)
;; WHEN: Sat Mar 24 20:40:17 2012
;; MSG SIZE rcvd: 63
是我遗漏了什么还是我的 DNS 名称服务器 205.171.3.25 已损坏?
答案1
(为了清楚起见,我在本文中提到基于服务器的单播 DNS 时使用了“uDNS”。)
有三个问题值得注意:
dig
是一个 DNS 诊断程序。它使用 uDNS,并且只使用 uDNS,完全忽略 中配置的名称解析设置nsswitch.conf
,因此在调试 Avahi mDNS 时,它不适合使用。getent ahosts
而是使用getaddrinfo()
与正常程序相同的例程。如果在尝试解析现存的mDNS 名称,这可能意味着您的
nsswitch.conf
配置不正确(尽管在 Fedora 上这种情况很少见)。您应该至少拥有 mDNS 之一mdns
或mdns_minimal
-前dns
在“hosts”行中;例如:hosts: files mdns_minimal [NOTFOUND=return] dns mdns myhostname
您使用的 uDNS 服务器
205.171.3.25
(又名resolver.qwest.net
)执行“全部捕获”重定向。换句话说,如果您尝试查找不存在的名称,您将收到 Qwest 充满广告的“网站建议”页面的地址,而不是 NXDOMAIN。(您可以在浏览器中打开任何返回的 IP 地址来查看此信息。)Qwest 采用这种可疑的做法,声称“改善客户体验”,你可以选择退出(或者切换到其他 DNS 服务器,例如 Google Public DNS。)