DNS根服务器为什么不回答?

如果我尝试用dig查询根服务器,我永远不会收到答案。

例如, dig @b.root-servers.net www.ubuntu.com的输出是

; << >> DiG 9.8.1-P1 << >> @ b.root-servers.net www.ubuntu.com

; (find1个服务器)

;; 全局选项:+ cmd

;; 连接超时; 没有服务器可以达成

但是,如果我查询其他服务器(我的ISP之一,或8.8.8.8),他们正确答案。 为什么?

PS使用Wireshark我可以看到传出的查询到根服务器的正确的IP地址,但没有来自同一IP的传入数据包。

听起来像你的互联网提供商必须阻止访问根名称服务器 。 他们显然不会阻止他们自己的parsing器的访问,他们可能免除一些其他stream行的外部解决scheme,如Google公共DNS,但可能会阻止所有domain端口访问,否则。

这是常见的吗? 这取决于。 我认为在大学和公司networking上出现这样的区块是比较常见的,但我认为这不应该是常规住宅提供商常见的现象。 (然而,大多数提供商阻止传出smtp端口。)

为什么会有人阻止外部名称服务器? 这可能与各种中间人攻击有关,如果合法的域名服务器被replace为被盗用的攻击者,这种攻击是可能的。 为了避免这种攻击并减less用户的投诉,大多数提供者通常将所有的domain端口请求redirect到他们自己的服务器:当他们这样做的时候,你不能再运行你自己的recursion服务器,或者dig +trace故障排除否则您不必更改您的DNS设置。

无论如何,你的命令本身并没有什么问题:你应该收到下面的回复,这样你可以在手动recursionpath上再次请求给定名字的parsing。

 # dig @b.root-servers.net www.ubuntu.com ; <<>> DiG 9.7.3 <<>> @b.root-servers.net www.ubuntu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20828 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.ubuntu.com. IN A ;; AUTHORITY SECTION: com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. ;; ADDITIONAL SECTION: a.gtld-servers.net. 172800 IN A 192.5.6.30 b.gtld-servers.net. 172800 IN A 192.33.14.30 c.gtld-servers.net. 172800 IN A 192.26.92.30 d.gtld-servers.net. 172800 IN A 192.31.80.30 e.gtld-servers.net. 172800 IN A 192.12.94.30 f.gtld-servers.net. 172800 IN A 192.35.51.30 g.gtld-servers.net. 172800 IN A 192.42.93.30 h.gtld-servers.net. 172800 IN A 192.54.112.30 i.gtld-servers.net. 172800 IN A 192.43.172.30 j.gtld-servers.net. 172800 IN A 192.48.79.30 k.gtld-servers.net. 172800 IN A 192.52.178.30 l.gtld-servers.net. 172800 IN A 192.41.162.30 m.gtld-servers.net. 172800 IN A 192.55.83.30 a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30 ;; Query time: 12 msec ;; SERVER: 192.228.79.201#53(192.228.79.201) ;; WHEN: Sat Jan 12 22:52:12 2013 ;; MSG SIZE rcvd: 492 

根服务器应该回答你的问题挖一个答案,你可能会发现.com。 b.root-servers.net没有回答的原因可能是你的根提示文件是过时的。 尝试更新这个文件。