Я настроил привязку (вроде) на 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
zone для корневых серверов, тогда он правильно разрешает имена, но, конечно, я не хочу, чтобы корневые серверы приходили на каждый поиск. Какие-либо предложения?
Я бы предложил добавить, кроме localhost
, IP-адрес самого аппарата:
allow-recursion {127.0.0.1; 192.168.1.1;}
Конечно, вам нужно заменить 192.168.1.1 на реальный IP-адрес, который вы используете.