Назад | Перейти на главную страницу

Как отлаживать конфигурацию BIND?

Есть ли способ понять, что делает мой сервер Bind9, шаг за шагом?

В настоящее время я борюсь с проблемой, что запросы отклоняются и dig говорит, что recursion requested but not available. Однако рекурсия вообще не должна быть задействована, так как это должен быть авторский сервер.

Что мне делать, чтобы понять, где все идет не так?

Вот ответ на dig @127.0.0.1 client.example.com:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.1 client.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 55821
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;client.example.com.     IN      A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 31 01:09:08 EET 2017
;; MSG SIZE  rcvd: 54

Я попробовал отладку в подробном режиме (это запрос, отправленный с другой машины), и вот что я получил:

31-Oct-2017 00:48:04.363 client 198.51.100.2#54921: UDP request
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921: request is not signed
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921: recursion not available
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921: query
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): query (cache) 'client.example.com/A/IN' denied
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): query failed (REFUSED) for client.example.com/IN/A at ../../../bin/named/query.c:6475
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): error
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): send
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): sendto
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): senddone
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): next
31-Oct-2017 00:48:04.363 client 198.51.100.2#54921 (client.example.com): endrequest
31-Oct-2017 00:48:04.363 client @0x123456789abcdef: udprecv

К сожалению, я не мог понять, как в этом случае потребовалась рекурсия.

Если кто-нибудь может помочь мне с ручной отладкой, вот как настроен мой сервер.

named.conf:

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

named.conf.options:

options {
    directory "/var/cache/bind";

    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    listen-on port 53 { any; };

    recursion no;
    allow-transfer { localhost; };
    allow-query-cache { none; };
    allow-query { any; };
};

named.conf.local:

zone "example.com" {
    type master;
    file "/etc/bind/zones/example.com";
};

зоны / example.com:

$TTL    300
@   IN  SOA ns.example.com. admin.example.com (
                  4     ; Serial
                300     ; Refresh
                300     ; Retry
            2419200     ; Expire
               300 )    ; Negative Cache TTL

@           IN  NS  ns.example.com.
ns          IN  A   192.0.2.1

@           IN  A   192.0.2.1
www         IN  A   192.0.2.1
client      IN  A   192.0.2.1

@           IN  MX  50 mx.example.net.
@           IN  MX  100 mx2.example.net.

Файл named.conf.default-zones остался установленным по умолчанию, как и файлы зон по умолчанию.

Я использую BIND 9.10.3-P4-Ubuntu.

Запуск BIND с -d 1 включит отладку. В зависимости от вашей ОС / дистрибутива вам может потребоваться поискать, как установить аргументы командной строки запуска. Вы можете увеличить значение, если вам нужна дополнительная информация.

Если вам нужны дополнительные рекомендации, вам, вероятно, следует опубликовать свои файлы конфигурации в своем вопросе, отредактировав секреты и заменив свои имена примерами. Скорее всего, это что-то, что могли бы идентифицировать здесь другие, смотрящие на вашу установку.

Обновление 1:

Я думаю, что ошибка может заключаться в том, что named не может прочитать файл зоны, поэтому он полностью игнорирует зону, заставляя его думать, что он должен спросить в другом месте, но не может, потому что рекурсия отключена. Посмотрите на файл журнала, когда он был запущен, и посмотрите, есть ли в нем какие-либо подсказки относительно того, что происходит.