DNS-сервер (BIND) прекращает пересылку. Перезагрузка помогает. Почему?

DNS-сервер (BIND) прекращает пересылку. Перезагрузка помогает. Почему?

Я столкнулся с очень странной проблемой с моим DNS-сервером, который настроен на пересылку запросов для определенного домена на другой DNS-сервер. После перезапуска named я могу разрешать имена хостов, но через некоторое время пересылка перестает работать. Еще один перезапуск помогает. Я пробовал версии 9.8.2 и 9.10 — работает одинаково.

именованный.conf:

options {
        #listen-on port 53 { 127.0.0.1; };
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query       { any; };
        allow-query-cache { any; };
        allow-transfer    { any; };
        allow-recursion   { any; };
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

zone "video54.local" IN {
        type forward;
        forwarders { 172.21.2.1; };
};

zone "idc.local" IN {
        type master;
        file "dynamic/idc.local.db";
        allow-update { key "idc.local."; };
};

dig, когда DNS перестает разрешать:

dig @127.0.0.1 idc-git.video54.local

; <<>> DiG 9.10.0-RedHat-9.10.0-0.el6 <<>> @127.0.0.1 idc-git.video54.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21317
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;idc-git.video54.local.     IN  A

;; AUTHORITY SECTION:
.           10374   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2014072100 1800 900 604800 86400

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 12:44:38 IDT 2014
;; MSG SIZE  rcvd: 125

снова копаем, после перезапуска:

dig @127.0.0.1 idc-git.video54.local

; <<>> DiG 9.10.0-RedHat-9.10.0-0.el6 <<>> @127.0.0.1 idc-git.video54.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55990
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;idc-git.video54.local.     IN  A

;; ANSWER SECTION:
idc-git.video54.local.  3600    IN  A   172.21.3.33

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 12:44:56 IDT 2014
;; MSG SIZE  rcvd: 66

Можете ли вы мне сказать, в чем проблема?

Спасибо!

решение1

Когда он «проваливается», вы видите, что получаете запись SOA от настоящего корневого сервера, что означает, что ваш сервер имен вышел за рамки обычного пути и попытался найти ответ в Интернете.

Причина в том, что ваш сервер пересылки (172.21.2.1) не ответил достаточно быстро, поэтому ему пришлось искать ответ обычным способом.

Чтобы остановить это, вам нужно добавить forward onlyв свой оператор зоны, чтобы остановить это поведение. Поведение по умолчанию — forward first.

Т.е.,

zone "video54.local" IN {
    type forward;
    forwarders { 172.21.2.1; };
    forward only;
};

Связанный контент