Свежеустановленный и настроенный BIND упорно не хотел отдавать зону для только что добавленного домена:
$ dig @77.120.106.40 website.co.ua
…
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 39605
…
;; QUESTION SECTION:
;website.co.ua. IN A
…
В HEADER вывода видно что “status: SERVFAIL“.
В логах BIND-a точного описания ошибки не было:
# tail /var/log/bind/named.log
debug 1: client 82.144.220.27#62890: query failed (SERVFAIL) for website.co.ua/IN/A at query.c:3919
Файл зоны на первый взгляд ошибок не содержал:
$TTL 3600
@ IN SOA ns1.website.co.ua. admin.website.co.ua. (
20120110001 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN NS ns1.website.co.ua.
@ IN NS ns3.dc.volia.com.
@ MX 10 mx.website.co.ua.
@ IN A 77.120.106.40
www IN A 77.120.106.40
mx IN A 77.120.106.40
ns1 IN A 77.120.106.40
BIND при рестарте тоже об ошибках ничего не сообщал:
# /etc/rc.d/named restart
Stopping named.
Starting named.
Проблема нашлась с помощью named-checkzone:
# named-checkzone website.co.ua /var/named/zones/master/website.co.ua
dns_rdata_fromtext: /var/named/zones/master/website.co.ua:3: near ‘20120110001’: out of range
zone website.co.ua/IN: loading from master file /var/named/zones/master/website.co.ua failed: out of range
zone website.co.ua/IN: not loaded due to errors.
Из вывода видно, что серийный номер ( ‘20120110001′: out of range ) имеет неверное значение.
В данном случае, ошибка – лишний 0 после 20120110. Исправим файл, приведя серийный номер к виду
2012011001 ; Serial
Ещё раз проверим файл зоны:
# named-checkzone website.co.ua /var/named/zones/master/website.co.ua
zone website.co.ua/IN: loaded serial 2012011001
OK
Перезагрузим сервер:
# /etc/rc.d/named restart
Stopping named.
Starting named.
Попробуем получить ответ:
$ dig @77.120.106.40 website.co.ua
…
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41434
;; QUESTION SECTION:
;website.co.ua. IN A
;; ANSWER SECTION:
website.co.ua. 3600 IN A 77.120.106.40
…
… Профит!