Трансфер домена. Диагностика проблем

Материал из ISPWiki
Перейти к: навигация, поиск

Данная статья посвящается диагностики проблем, возникающих при трансфере домена. Рассмотрим случай, когда сервера имен настроены связкой master - slave и в качестве серверов имен используется named.


Общая информация

Centos 6

Файл конфигурации named - /etc/named.conf

Логи named пишет в messages - /var/log/messages

Debian 7

Файл конфигурации - /etc/bind/named.conf

Логи - /var/log/syslog

Диагностика первичного (master) сервера имен

Сервер имен не отдает зону домена

Проверяем, что на мастер сервере зона домен создана и сервер имен отдает зону

dig domain.name @1.1.1.1 ANY +short

где domain.name - имя домена

1.1.1.1 - ip адрес сервера имен (обычно совпадает с основным ip адресом сервера)

Ответ должен быть примерно следующим:

dig domain.name @1.1.1.1 ANY +short
mary.me. root.example.com. 2014041800 10800 3600 604800 86400
ns2.example.com.
ns1.example.com.
"v=spf1 ip4:1.1.1.1 a mx ~all"
10 mail.domain.name.
1.1.1.1

Ответ вида

dig domain.nam @1.1.1.1 ANY +short
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> domain.nam @1.1.1.1 ANY +short
;; global options: +cmd
;; connection timed out; no servers could be reached

означает, что сервер имен не запущен.

Если ответ пустой, значит сервер имен ничего не знает о нашем домене, не загрузил зону. В этом случае изучаем лог.

Возможные причины:

Не корректная зона домена

Распространенной причиной того, что named не загрузил зону, является - некорректный файл зоны. Что может быть причиной:

  • Отсутствие А записей для собственных серверов имен.

Если домен имеет сервера имен в своей же зоне (например, домен domain.com и сервера имен ns1.domain.com/ns2.domain.com), то в файле зоны обязательно должны быть указаны A записи для серверов имен. Иначе зона считается не корректной. В логе это выглядит так:

zone domain.name/IN: NS 'ns1.domain.name' has no address records (A or AAAA)
zone domain.name/IN: NS 'ns2.domain.name' has no address records (A or AAAA)
zone domain.name/IN: not loaded due to errors. 

Для решения проблемы в файл зоны необходимо добавить запси:

ns1 IN A <ip первичного сервера имен>
ns2 IN A <ip вторичного сервера имен>
  • Запись CNAME

Еще одна достаточно распространенная ошибка:

zone domain.name/IN: loading from master file /var/named/domain.name failed: CNAME and other data
zone domain.name/IN: not loaded due to errors.
Записи A и CNAME не могут одновременно сосуществовать для одного поддомена:
me.domain.name.   IN      A       8.8.8.8
me.domain.name.   IN      CNAME   google.com

Также, для доменов второго уровня нельзя создать CNAME запись.

Диагностика вторичного (slave) сервера имен

Проверка связи

Пробуем подключиться к мастер серверу по telnet к 53 порту

telnet 1.1.1.1 53
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.

где 1.1.1.1 - ip адрес мастер сервера

Если подключение не проходит, то проверьте настройки на мастер сервере и на слейв сервере. Часто именно файервол является причиной проблемы.

Проверка возможности трансфера

dig -b 2.2.2.2 domain.name @1.1.1.1 axfr

где 1.1.1.1 - ip адрес мастера

2.2.2.2 - ip адрес, указанный в директиве transfer-source для view. Если вы используете DNSmanager, то этот адрес можно посмотреть в DNSmanager, при редактировании пользователя. Ответ должен быть примерно следующим:

dig -b 2.2.2.2 domain.name @1.1.1.1 axfr
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -b 2.2.2.2 domain.name @1.1.1.1 axfr
;; global options: +cmd
domain.name.		3600	IN	SOA	mary.me. root.example.com. 2014041800 10800 3600 604800 86400
domain.name.		3600	IN	NS	ns1.example.com.
domain.name.		3600	IN	NS	ns2.example.com.
domain.name.		3600	IN	TXT	"v=spf1 ip4:1.1.1.1 a mx ~all"
domain.name.		3600	IN	MX	10 mail.domain.name.
domain.name.		3600	IN	A	1.1.1.1
ftp.domain.name.	3600	IN	A	1.1.1.1
mail.domain.name.	3600	IN	A	1.1.1.1
pop.domain.name.	3600	IN	A	1.1.1.1
smtp.domain.name.	3600	IN	A	1.1.1.1
www.domain.name.	3600	IN	A	1.1.1.1
domain.name.		3600	IN	SOA	mary.me. root.example.com. 2014041800 10800 3600 604800 86400

Часто при настройке ip адресов в DNSmanager (раздел "Управление IP адресами") пользователи указывают серые или белые произвольные адреса, которые не могут работать на том сервере. Такая настройка приводит к тому, что трансфер доменов не будет работать, так как трансфер будет проводиться именно через этот ip адрес.

Также трансфер может быть запрещен на мастер сервере. См. директиву allow-transfer на мастер сервере.

Права доступа

Если во время трансфера домена в логе есть строки

zone domain.name/IN: loading from master file /var/named/domain.name failed: permission denied
one domain.name/IN: not loaded due to errors.

Значит не хватает прав на файл зоны.

Файл зоны должен принадлежать владельцу, от имени которого работает named.

ls -ld /var/named/domain.name
-rw------- 1 named named 395 Апр 18 06:24 /var/named/domain.name
Также следует проверить права на директорию /var/named/
ls -ld /var/named/
drwxr-x--- 5 root named 4096 Апр 18 06:32 /var/named/

И напоследок - всегда смотрите логи =) там можно найти кучу интересного