У меня проблема с настройкой BIND 9.8.2. После настройки основной зоны, которая работает нормально, я заметил, что не могу получить список всех A
записи с использованием dig
утилита с ANY
вариант.
Вот некоторые примеры:
google.com
Если я попробую google.com, я смогу получить A
записи:
# dig google.com ANY
; DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> google.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51302
;; flags: qr rd ra; QUERY: 1, ANSWER: 21, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN ANY
;; ANSWER SECTION:
google.com. 264 IN A 46.28.246.109
google.com. 54220 IN NS ns3.google.com.
google.com. 264 IN A 46.28.246.108
google.com. 264 IN A 46.28.246.84
google.com. 264 IN A 46.28.246.113
google.com. 264 IN A 46.28.246.104
google.com. 54220 IN NS ns2.google.com.
google.com. 264 IN A 46.28.246.99
google.com. 264 IN A 46.28.246.118
google.com. 264 IN A 46.28.246.119
google.com. 54220 IN NS ns4.google.com.
google.com. 264 IN A 46.28.246.89
google.com. 264 IN A 46.28.246.93
google.com. 264 IN A 46.28.246.88
google.com. 264 IN A 46.28.246.94
google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 1559778 7200 1800 1209600 300
google.com. 54220 IN NS ns1.google.com.
google.com. 264 IN A 46.28.246.123
google.com. 264 IN A 46.28.246.98
google.com. 264 IN A 46.28.246.103
google.com. 264 IN A 46.28.246.114
;; Query time: 47 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Jun 26 18:43:50 2014
;; MSG SIZE rcvd: 402
Мой лабораторный домен - записи MX в качестве примера
Я могу получить MX
записи, если я их попрошу:
# dig internal.bluenet.lab MX
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> internal.bluenet.lab MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40974
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;internal.bluenet.lab. IN MX
;; ANSWER SECTION:
internal.bluenet.lab. 257965 IN MX 20 mail2.internal.bluenet.lab.
internal.bluenet.lab. 257965 IN MX 10 mail1.internal.bluenet.lab.
;; AUTHORITY SECTION:
internal.bluenet.lab. 257439 IN NS ns.internal.bluenet.lab.
;; Query time: 2 msec
;; SERVER: 10.200.1.99#53(10.200.1.99)
;; WHEN: Thu Jun 26 18:53:35 2014
;; MSG SIZE rcvd: 99
Мой лабораторный домен - нет записей A
Независимо от того, использую ли я ANY
или A
варианты я не могу получить все A
записи в качестве ответа. Только если я использую A
вариант я получаю одна запись А
# dig internal.bluenet.lab ANY
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> internal.bluenet.lab ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39681
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;internal.bluenet.lab. IN ANY
;; ANSWER SECTION:
internal.bluenet.lab. 257961 IN MX 10 mail1.internal.bluenet.lab.
internal.bluenet.lab. 257961 IN MX 20 mail2.internal.bluenet.lab.
internal.bluenet.lab. 257961 IN SOA ns.internal.bluenet.lab. adminlab.bluenet.lab.internal.bluenet.lab. 3837556585 28800 7200 2419200 86400
internal.bluenet.lab. 257435 IN NS ns.internal.bluenet.lab.
;; AUTHORITY SECTION:
internal.bluenet.lab. 257435 IN NS ns.internal.bluenet.lab.
;; Query time: 0 msec
;; SERVER: 10.200.1.99#53(10.200.1.99)
;; WHEN: Thu Jun 26 18:53:40 2014
;; MSG SIZE rcvd: 168
У меня типичная установка BIND - chrootted, только с мастер-зоной. Я заблокировал передачу зон (чтобы не допустить AXFR
запросы).
Интересно, почему я не могу получить A
записи. Пожалуйста, помогите мне в этом. Если какой-то вариант в named.conf использоваться, чтобы позволить это?
Предполагая, что действительно существует A
записи, я считаю, что наблюдаемое поведение сводится к общему поведению ANY
запросы, направленные на кэширующий сервер.
Важно отметить, что может быть не интуитивно понятно, что любой сервер, будь то кэширующий или авторитетный, должен только возвращать любые записи, которые у них есть для запрошенного имени в ANY
запрос.
То есть, если кэширующий сервер имеет что-то в своем кеше, вполне допустимо (и наиболее распространенная реализация) просто вернуть все, что еще находится в кеше для этого имени. Это означает, что часть результата могла истечь, если были разные TTL.
На практике это означает, что ANY
запросы полезны только в очень специфических обстоятельствах (обычно не для встраивания в программное обеспечение, а для отладки и аналогичных целей).