Зачастую, в силу того, что информация в сети распространяется не мгновенно, привязанные к серверу домены начинают работать не сразу. Чтобы не тратить время впустую, ожидая обновления кеша DNS, желательно сразу проверить настройку вашего DNS-сервера и убедиться, что по истечении 72 часов (это максимальное время обновления глобального кеша DNS) ваш домен заработает.
Первичная диагностика#
Whois#
Начать диагностику следует с запроса whois:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| [root@dns ~]# whois firstvds.ru
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian)
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).
domain: FIRSTVDS.RU
nserver: ns1.firstvds.ru. 82.146.43.2
nserver: ns2.firstvds.ru. 94.250.248.160
state: REGISTERED, DELEGATED, VERIFIED
org: CJSC "Pervyj"
registrar: REGTIME-REG-RIPN
admin-contact: http://whois.webnames.ru
created: 2002.08.07
paid-till: 2014.08.08
free-date: 2014.09.08
source: TCI
Last updated on 2014.03.18 03:36:35 MSK
|
В данном примере мы видим, что домен проделегирован на сервера имен ns1.firstvds.ru. и ns2.firstvds.ru. с указанием IP-адресов (дочерние NS-сервера всегда прописываются с указанием IP). Это корректный вывод whois и примерно так должен выглядеть ответ whois для зарегистрированного и проделегированного домена. Исключение составляет IP, он указывается только для дочерних NS-серверов.
Также следует обратить внимание на пункты “state” и “Status” (для доменов в зонах .com./.org): в поле “state” обязательно должны быть пометки REGISTERED и DELEGATED, в поле “Status” - “Ok”. Для отсеивания всего лишнего из вывода whois можно использовать следующую команду:
1
2
3
4
| [root@dns ~]# whois firstvds.ru | grep -Ei 'name server|nserver|state|status'
nserver: ns1.firstvds.ru. 82.146.43.2
nserver: ns2.firstvds.ru. 94.250.248.160
state: REGISTERED, DELEGATED, VERIFIED
|
1
2
3
4
5
6
7
| [root@dns ~]# whois ispserver.com | grep -Ei 'name server|nserver|state|status'
Name Server: NS1.ISPVDS.COM
Name Server: NS2.ISPVDS.COM
Status: ok
Domain Status: ok
Name Server: NS1.ISPVDS.COM
Name Server: NS2.ISPVDS.COM
|
Замечание: для доменов в зоне .com/.org следует обращать внимание только на первые две записи “Name Server”.
Если домен не зарегистрирован или зарегистрирован недавно, можно увидеть такую картину:
1
2
3
4
5
6
7
8
9
| [root@dns ~]# whois fvdstest.ru
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian)
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).
No entries found for the selected source(s).
Last updated on 2014.03.18 03:46:37 MSK
|
Информация во whois может обновляться в течение трех часов, поэтому если вы уже приобрели домен, нужно некоторое время подождать. Это также касается смены NS-серверов домена.
dig +trace#
dig - утилита, предоставляющая пользователю интерфейс командной строки для отправки запросов к DNS-серверам. Первый запрос, который нас интересует, - трассировка запросов к домену:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| [root@dns ~]# dig firstvds.ru +trace
; <<>> DiG 9.8.1-P1 <<>> firstvds.ru +trace
;; global options: +cmd
. 10045 IN NS l.root-servers.net.
. 10045 IN NS h.root-servers.net.
. 10045 IN NS a.root-servers.net.
. 10045 IN NS i.root-servers.net.
. 10045 IN NS g.root-servers.net.
. 10045 IN NS d.root-servers.net.
. 10045 IN NS j.root-servers.net.
. 10045 IN NS m.root-servers.net.
. 10045 IN NS c.root-servers.net.
. 10045 IN NS b.root-servers.net.
. 10045 IN NS e.root-servers.net.
. 10045 IN NS f.root-servers.net.
. 10045 IN NS k.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 2311 ms
ru. 172800 IN NS e.dns.ripn.net.
ru. 172800 IN NS f.dns.ripn.net.
ru. 172800 IN NS b.dns.ripn.net.
ru. 172800 IN NS d.dns.ripn.net.
ru. 172800 IN NS a.dns.ripn.net.
;; Received 341 bytes from 192.36.148.17#53(192.36.148.17) in 934 ms
firstvds.ru. 345600 IN NS ns1.firstvds.ru.
firstvds.ru. 345600 IN NS ns2.firstvds.ru.
;; Received 97 bytes from 193.232.156.17#53(193.232.156.17) in 548 ms
firstvds.ru. 3600 IN A 195.211.221.106
;; Received 45 bytes from 94.250.248.160#53(94.250.248.160) in 71 ms
|
Здесь мы видим, что сперва были опрошены корневые сервера имен, которые направили запрос на сервера зоны .ru, которые, в свою очередь, отправили его на сервера, отвечающие за зону firstvds.ru, и с них был получен IP-адрес домена. Тут могут быть различные варианты, например:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| [root@dns ~]# dig firstvds.ru +trace
; <<>> DiG 9.8.1-P1 <<>> firstvds.ru +trace
;; global options: +cmd
. 10045 IN NS l.root-servers.net.
. 10045 IN NS h.root-servers.net.
. 10045 IN NS a.root-servers.net.
. 10045 IN NS i.root-servers.net.
. 10045 IN NS g.root-servers.net.
. 10045 IN NS d.root-servers.net.
. 10045 IN NS j.root-servers.net.
. 10045 IN NS m.root-servers.net.
. 10045 IN NS c.root-servers.net.
. 10045 IN NS b.root-servers.net.
. 10045 IN NS e.root-servers.net.
. 10045 IN NS f.root-servers.net.
. 10045 IN NS k.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 2311 ms
ru. 172800 IN NS e.dns.ripn.net.
ru. 172800 IN NS f.dns.ripn.net.
ru. 172800 IN NS b.dns.ripn.net.
ru. 172800 IN NS d.dns.ripn.net.
ru. 172800 IN NS a.dns.ripn.net.
;; Received 341 bytes from 192.36.148.17#53(192.36.148.17) in 934 ms
firstvds.ru. 345600 IN NS ns1.oldfirstvds.ru.
firstvds.ru. 345600 IN NS ns2.oldfirstvds.ru.
;; Received 97 bytes from 193.232.156.17#53(193.232.156.17) in 548 ms
firstvds.ru. 3600 IN A 188.120.252.3
;; Received 45 bytes from 94.250.248.160#53(94.250.248.160) in 71 ms
|
Здесь мы видим несоответствие NS-серверов, на которые проделегирован домен, и тех, на которые указывают сервера зоны .ru (ns1.oldfirstvds.ru. и ns2.oldfirstvds.ru.).
Еще вариант:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| [root@dns ~]# dig firstvds.ru +trace
; <<>> DiG 9.8.1-P1 <<>> firstvds.ru +trace
;; global options: +cmd
. 9554 IN NS i.root-servers.net.
. 9554 IN NS b.root-servers.net.
. 9554 IN NS c.root-servers.net.
. 9554 IN NS k.root-servers.net.
. 9554 IN NS e.root-servers.net.
. 9554 IN NS h.root-servers.net.
. 9554 IN NS d.root-servers.net.
. 9554 IN NS f.root-servers.net.
. 9554 IN NS l.root-servers.net.
. 9554 IN NS g.root-servers.net.
. 9554 IN NS m.root-servers.net.
. 9554 IN NS j.root-servers.net.
. 9554 IN NS a.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 2399 ms
ru. 172800 IN NS a.dns.ripn.net.
ru. 172800 IN NS b.dns.ripn.net.
ru. 172800 IN NS d.dns.ripn.net.
ru. 172800 IN NS e.dns.ripn.net.
ru. 172800 IN NS f.dns.ripn.net.
;; Received 341 bytes from 128.63.2.53#53(128.63.2.53) in 1061 ms
ru. 3600 IN SOA a.dns.ripn.net. hostmaster.ripn.net. 4021899 86400 14400 2592000 3600
;; Received 90 bytes from 193.232.128.6#53(193.232.128.6) in 78 ms
|
Сервера зоны .ru ничего не знают об NS-серверах, обслуживающих зону запрашиваемого домена. Последние два случая могут быть обусловлены как проблемами в работе DNS, так и тем, что информация о домене еще не обновилась на корневых серверах имен, поэтому потребуется дальнейшая диагностика.
dig с NS-серверов#
В этом случае мы запрашиваем информацию напрямую с NS-серверов, которые планируется использовать для указанного домена. Пример для запроса с ns1 (для ns2 запрос выглядит аналогично):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| [root@dns ~]# dig firstvds.ru @ns1.firstvds.ru.
; <<>> DiG 9.8.1-P1 <<>> firstvds.ru @ns1.firstvds.ru.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39440
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;firstvds.ru. IN A
;; ANSWER SECTION:
firstvds.ru. 3600 IN A 195.211.221.106
;; Query time: 67 msec
;; SERVER: 82.146.43.2#53(82.146.43.2)
;; WHEN: Tue Mar 18 09:30:41 2014
;; MSG SIZE rcvd: 45
|
Здесь в секции ANSWER SECTION был возвращен IP, в который NS-сервер резолвит домен, при нормальной работе этот IP должны возвращать оба NS-сервера, если IP отличается от того, что вы назначили домену на основном сервере, то зона нуждается в обновлении. В ISPmanager, к примеру, это можно сделать кнопкой “Передать” в разделе “Доменные имена”, если же у вас DNS-сервер настроен без использования панели, то зона, как правило, будет обновлена самостоятельно, либо по истечении TTL зоны, либо по запросу вторичного сервера имен, если используется механизм уведомлений (опция notify yes в BIND).
Также NS-сервер может вообще не ответить:
1
2
3
4
5
| [root@dns ~]# dig fvdstest.ru @ns1.firstvds.ru.
; <<>> DiG 9.8.1-P1 <<>> firstvds.ru @ns1.firstvds.ru
;; global options: +cmd
;; connection timed out; no servers could be reached
|
В этом случае следует убедиться, что внешний DNS-сервер доступен и на нем не заблокирован 53-й порт (если есть такая возможность).
Еще один вариант - пустой ответ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| [root@dns ~]# dig fvdstest.ru @ns1.firstvds.ru.
; <<>> DiG 9.8.1-P1 <<>> fvdstest.ru @ns1.firstvds.ru.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35308
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;fvdstest.ru. IN A
;; Query time: 123 msec
;; SERVER: 82.146.43.2#53(82.146.43.2)
;; WHEN: Tue Mar 18 09:41:57 2014
;; MSG SIZE rcvd: 29
|
Также при возникновении каких-либо проблем на NS-серверах следует произвести диагностику первичного DNS-сервера.
dig с первичного сервера имен#
Служит для запроса информации непосредственно с сервера, на котором создан домен:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| [root@dns ~]# dig firstvds.ru @188.120.241.90
; <<>> DiG 9.7.1-P2 <<>> firstvds.ru @188.120.241.90
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26391
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;firstvds.ru. IN A
;; ANSWER SECTION:
firstvds.ru. 3600 IN A 188.120.241.90
;; AUTHORITY SECTION:
firstvds.ru. 3600 IN NS ns1.firstvds.ru.
firstvds.ru. 3600 IN NS ns2.firstvds.ru.
;; ADDITIONAL SECTION:
ns1.firstvds.ru. 3600 IN A 82.146.43.2
ns2.firstvds.ru. 3600 IN A 82.146.35.143
;; Query time: 71 msec
;; SERVER: 188.120.241.90#53(188.120.241.90)
;; WHEN: Thu Apr 14 15:12:51 2011
;; MSG SIZE rcvd: 113
|
Приведенный вариант - то, как должен отвечать правильно настроенный DNS-сервер, в случае возникновения проблем следует перейти к более детальному изучению обстановки на корневом сервере имен.
Проблемы и решения#
Вся необходимая для диагностики информация о проблемах, возникшим в работе первичного сервера имен, содержится в логах. По умолчанию DNS-сервер пишет в системный лог /var/log/messages, однако в конфигурации может быть задано ведение логов в отдельном файле, поэтому следует свериться с конфигурацией вашего DNS-сервера. В этом разделе рассмотрены наиболее часто встречающиеся в логах ошибки.
dig возвращает пустой ответ#
Пустой ответ означает то, что на VDS либо отсутствует файл зоны этого домена, либо то, что при подгрузке файла зоны возникли проблемы. Также причиной может быть отсутствие A-записи в файле зоны. Если в первом случае достаточно будет создать домен на сервере (через ISPmanager или с помощью ручной правки файла зоны, если ISPmanager отсутствует), то во втором потребуется изучить логи DNS-сервера.
Некорректные права/владелец#
Первая ошибка, которую мы рассмотрим - permission denied:
1
2
| Mar 17 05:53:58 fvds named[19765]: zone fvdstest.com/IN: loading from master file /etc/bind/fvdstest.com failed: permission denied
Mar 17 05:53:58 fvds named[19765]: zone fvdstest.com/IN: not loaded due to errors.
|
Ошибка говорит о некорректных правах на файл зоны или о некорректном владельце файла:
1
2
| [root@dns ~]# ls -l /etc/bind/fvdstest.com
-rw-r----- 1 root root 444 Mar 17 05:50 /etc/bind/fvdstest.com
|
В данном случае проблема именно с владельцем, им должен быть пользователь, от которого запущен bind:
1
2
| [root@dns ~]# ls -l /etc/bind/fvdstest.com
-rw-r----- 1 bind bind 444 Mar 17 05:50 /etc/bind/fvdstest.com
|
Также следует обратить внимание на права и группу самой директории /etc/bind/:
1
2
| [root@dns ~]# ls -ld /etc/bind/
drwxr-sr-x 2 root bind 4096 Mar 15 18:42 /etc/bind
|
Отсутствие A-записей для дочерних NS#
Следующая ошибка в логе:
1
2
3
| Mar 17 05:56:55 fvds named[19933]: zone fvdstest.com/IN: NS 'ns1.fvdstest.com' has no address records (A or AAAA)
Mar 17 05:56:55 fvds named[19933]: zone fvdstest.com/IN: NS 'ns2.fvdstest.com' has no address records (A or AAAA)
Mar 17 05:56:55 fvds named[19933]: zone fvdstest.com/IN: not loaded due to errors.
|
Проблема в том, что в NS-записях указаны дочерние домены третьего уровня, для которых отсутствует A-запись: ’ns1.fvdstest.com’ и ’ns2.fvdstest.com’, соответственно, нужно либо указать другие, уже настроенные на другом домене, NS-сервера, либо прописать соответствующие A-записи:
1
2
| ns1 IN A 10.10.10.10
ns2 IN A 11.11.11.11
|
CNAME и другие записи#
Еще одна достаточно распространенная ошибка:
1
2
| Mar 17 06:08:39 fvds named[20701]: zone fvdstest.com/IN: loading from master file /etc/bind/fvdstest.com failed: CNAME and other data
Mar 17 06:08:39 fvds named[20701]: zone fvdstest.com/IN: not loaded due to errors.
|
Записи A и CNAME не могут одновременно сосуществовать для одного домена/поддомена:
1
2
| test.fvdstest.com. IN A 10.10.10.10
test.fvdstest.com. IN CNAME google.com
|
После устранения всех ошибок в логе должна появиться следующая запись:
1
| Mar 17 06:13:12 fvds named[20914]: zone fvdstest.com/IN: loaded serial 2014022800
|
Однако, даже после этого мы можем получить пустой ответ на запрос утилитой dig. Тут вариантов не так много:
Отсутствие A-записи#
По умолчанию утилита dig запрашивает именно A-запись домена, поэтому пустой ответ может означать, что эта запись отсутствует. Пример A-записи:
1
| fvdstest.com. IN A 10.10.10.10
|
Тут стоит отметить, что в некоторых случаях необходимости в A-записи нет, и чтобы проверить, как отдается та или иная запись, нужно сообщить утилите dig тип запрашиваемой записи:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| [root@dns ~]# dig fvdstest.com @188.120.234.14 MX
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> fvdstest.com @10.10.10.10 MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47888
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; QUESTION SECTION:
;fvdstest.com. IN MX
;; ANSWER SECTION:
fvdstest.com. 3600 IN MX 10 mail.fvdstest.com.
fvdstest.com. 3600 IN MX 20 mail.fvdstest.com.
;; AUTHORITY SECTION:
fvdstest.com. 3600 IN NS ns2.fvdstest.com.
fvdstest.com. 3600 IN NS ns1.fvdstest.com.
;; ADDITIONAL SECTION:
mail.fvdstest.com. 3600 IN A 123.123.123.123
ns1.fvdstest.com. 3600 IN A 10.10.10.10
ns2.fvdstest.com. 3600 IN A 11.11.11.11
;; Query time: 1 msec
;; SERVER: 188.120.234.14#53(188.120.234.14)
;; WHEN: Mon Mar 17 08:30:16 2014
;; MSG SIZE rcvd: 151
|
Замечание: для получения всех записей можно указать тип ANY, также полезным будет ключ +short, позволяющий выводить сокращенный ответ:
1
2
3
4
5
6
7
8
| [root@dns ~]# dig fvdstest.com @10.10.10.10 +short ANY
"v=spf1 ip4:123.123.123.123 a mx ~all"
fvds.com. root.fvds.com. 2014022800 10800 3600 604800 86400
ns1.fvdstest.com.
ns2.fvdstest.com.
20 mail.fvdstest.com.
10 mail.fvdstest.com.
123.123.123.123
|
Запрещены запросы к DNS-серверу#
В конфигурации DNS-сервера могут быть разрешены запросы только с определенных адресов (как правило, разрешаются запросы только со slave-сервера). В случае с DNS-сервером BIND это директива allow-query{}. В этом случае мы увидим в логе следующую запись:
1
| Mar 17 06:29:22 fvds named[21971]: client 188.120.234.14#49834: query 'fvdstest.com/A/IN' denied
|
Вариантов диагностики в этом случае два: либо временно добавить свой адрес в список разрешенных, либо делать запросы непосредственно с сервера, на котором расположен slave. Если slave настроен так, чтобы делать запросы не с основного IP на интерфейсе, утилите dig нужно будет указать ключ «-b xxx.xxx.xxx.xxx», где xxx.xxx.xxx.xxx – IP на интерфейсе, с которого разрешены запросы к master:
1
2
3
4
5
6
7
8
| [root@dns ~]# dig fvdstest.com @188.120.234.14 +short -b 188.120.234.14 ANY
"v=spf1 ip4:123.123.123.123 a mx ~all"
fvds.com. root.fvds.com. 2014022800 10800 3600 604800 86400
ns1.fvdstest.com.
ns2.fvdstest.com.
20 mail.fvdstest.com.
10 mail.fvdstest.com.
123.123.123.123
|
Connection timed out#
1
2
3
4
| [root@dns ~]# dig fvdstest.com
; <<>> DiG 9.7.1-P2 <<>> fvdstest.com @10.10.10.10
;; global options: +cmd
;; connection timed out; no servers could be reached
|
Данный вывод говорит о том, что на сервере, с которого производится запрос информации о доменном имени, возникли проблемы. Это может быть как неработающий named, так и блокировка 53 порта с помощью файрвола.
Transfer failed#
1
2
3
4
5
| [root@dns ~]# dig fvdstest.com @10.10.10.10 AXFR
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> fvdstest.com @10.10.10.10 AXFR
;; global options: +cmd
; Transfer failed.
Mar 17 07:18:51 fvds named[23074]: client 188.120.234.14#50652: zone transfer 'fvdstest.com/AXFR/IN' denied
|
Эта ошибка говорит о том, что в конфигурации DNS-сервера запрещен трансфер зоны на адрес, с которого пришел запрос (директива allow-transfer{} в BIND). В плане диагностики проблема идентична ситуации с ограничением на запросы.
Отсутствие закрывающей точки#
Иногда в ответе dig можно наблюдать такую картину
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| [root@dns ~]#
; <<>> DiG 9.7.1-P2 <<>> <domain> @<IP-адрес VDS>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1253
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;<domain>. IN A
;; ANSWER SECTION:
<domain>. 3600 IN A 123.123.123.123
;; AUTHORITY SECTION:
<domain>. 3600 IN NS ns2.firstvds.ru.<domain>.
<domain>. 3600 IN NS ns1.firstvds.ru.<domain>.
;; Query time: 70 msec
;; SERVER: 92.63.103.212#53(92.63.103.212)
;; WHEN: Fri Apr 15 15:49:16 2011
;; MSG SIZE rcvd: 97
|
Проблема заключается в том, что при создании доменного имени были указаны некорректные сервера имен. Конкретно в данном случае пропущена закрывающаяся точка в доменном имени ns1.firstvds.ru.
Источник: https://firstwiki.ru/index.php/%D0%94%D0%B8%D0%B0%D0%B3%D0%BD%D0%BE%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_DNS