BIND9作为caching专用名称服务器不起作用

我通过apt-get安装BIND9,在新安装并完全更新的UBUNTU 12.04上,在VirtualBox上虚拟化。
我想用它作为一个只caching的域名服务器。

named.conf仅包含以下行:

 options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; listen-on-v6 {any;}; recursion yes; allow-recursion {localnets;}; allow-query-cache {localnets;}; allow-query {localnets;}; }; zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; 

现在,如果我使用我的名称服务器dig任何东西,查找失败, connection timed out; no servers could be reached connection timed out; no servers could be reached和BIND9日志充满了DNS format error [...] non-improving referralFORMERR

更具体地说, dig @127.0.0.1 www.amazon.com的结果是

 ; <<>> DiG 9.8.1-P1 <<>> @127.0.0.1 www.amazon.com ; (1 server found) ;; global options: +cmd ;; connection timed out; no servers could be reached 

此外,使用Wireshark我可以看到传出数据包到根服务器,但我从来没有收到回应。

但是,如果我使用外部名称服务器(例如8.8.8.8)使用dig ,或者我在BIND9的转发器选项中使用它,查找成功。

为什么?

我注意到的第一件事是你没有“recursion是”。 在named.conf中。 由于安全原因,BIND默认情况下不会recursion(一段时间)。 您应该授权您的本地networking通过recursion查询来查询parsing器:

 acl me { ::1/128; 127.0.0.0/8; }; ... recursion yes; allow-recursion { me; }; allow-query-cache { me; }; allow-query { me; }; 

它不能解释你在日志中find的奇怪的错误信息。 坦率地说,在ServerFault的问题中,我讨厌像“现在,如果我使用我的名称服务器挖任何东西,查找失败,连接超时”模糊的总结。 发布完整的命令和完整的结果,我们将看到。

我认为你已经validation了在VirtualBox中你的Ubuntu上有实际的互联网连接工作提示。

如果是这样,你自己的recursion服务器不工作的一个常见的原因是,如果你的互联网服务提供商阻止访问domain端口上运行的其他权威域名服务器。 我看到你已经试图直接向根服务器发出直接的请求,但没有成功 ,这表明确实存在一些连接问题。

总之,你可以做一个简单的testing:尝试运行dig @8.8.8.8 +trace www.google.com来模拟recursionparsing器如何进行名称parsing

如果你之前得到超时. ,那么您的连接可能有问题,或者您的提供商阻止Google Public DNS(也可能是其他任何DNS)。

如果你之后有一个超时时间. ,那么你的提供者将阻止对根服务器(也可能是所有其他权威名字服务器)的访问。

如果recursion解决scheme没有超时,但缺lesscom.google.com. 步骤,直接跳跃.www.google.com. (或者甚至可能还没有开始),那么这意味着你的提供者将所有的domain端口请求redirect到他们自己的recursionDNS服务器集合,并且你不能用这种互联网连接运行你自己的recursion名字服务器。

如果你得到的结果几乎完全如下,所有的.com.google.com.www.google.com. 步骤,那么你自己的本地recursionparsing器应该工作得很好,只要遵循安装和configuration说明。

 # dig @8.8.8.8 +trace www.google.com ; <<>> DiG 9.7.3 <<>> @8.8.8.8 +trace www.google.com ; (1 server found) ;; global options: +cmd . 2244 IN NS a.root-servers.net. . 2244 IN NS b.root-servers.net. . 2244 IN NS c.root-servers.net. . 2244 IN NS d.root-servers.net. . 2244 IN NS e.root-servers.net. . 2244 IN NS f.root-servers.net. . 2244 IN NS g.root-servers.net. . 2244 IN NS h.root-servers.net. . 2244 IN NS i.root-servers.net. . 2244 IN NS j.root-servers.net. . 2244 IN NS k.root-servers.net. . 2244 IN NS l.root-servers.net. . 2244 IN NS m.root-servers.net. ;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 25 ms com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. ;; Received 504 bytes from 192.33.4.12#53(c.root-servers.net) in 15 ms google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; Received 168 bytes from 192.55.83.30#53(m.gtld-servers.net) in 183 ms www.google.com. 300 IN A 74.125.225.208 www.google.com. 300 IN A 74.125.225.211 www.google.com. 300 IN A 74.125.225.212 www.google.com. 300 IN A 74.125.225.209 www.google.com. 300 IN A 74.125.225.210 ;; Received 112 bytes from 216.239.38.10#53(ns4.google.com) in 24 ms