我已经在 CentOS 6 上将绑定配置为(某种程度上)仅转发 DNS 服务器,如下所示:
options {
listen-on port 53 { 127.0.0.1; };
directory "/var/named";
recursion yes;
allow-recursion { localhost; };
forward only;
forwarders { 8.8.8.8; 8.8.4.4; };
};
include "/etc/named.rfc1912.zones";
问题是,它似乎没有进行任何转发:
$ dig www.google.com
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 1037
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; Query time: 555 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jan 27 13:30:52 2012
;; MSG SIZE rcvd: 32
我没有bind-chroot
在此服务器上安装。我可以确认我的resolv.conf
文件已配置为使用 127.0.0.1 进行 DNS 查找。如果是这样,dig @8.8.8.8 www.google.com
那么我会得到正确的响应。
如果我删除转发语句并添加hint
根服务器的区域,那么它确实可以正确解析名称,但我当然不想每次查找都访问根服务器。有什么建议吗?
答案1
我建议另外添加localhost
机器本身的 IP 地址:
allow-recursion {127.0.0.1; 192.168.1.1;}
当然,你需要将192.168.1.1替换为你使用的真实IP地址。