- Хостинг
- Услуги
- Помощь
- Акции
Помощь
DNS: диагностика, проблемы, решение
DNS-сервер фактически является приложением, которое работает на отдельном физическом сервере или совместно с другими серверами и обрабатывает все запросы, содержащие доменные имена.
Как только вы зарегистрировали доменное имя, оно начинает обслуживаться DNS-сервером, и любое обращение к домену по имени проходит через него. С момента привязки доменного имени к DNS-серверу может пройти до 72 часов, чтобы домен начал работать. Если по истечении этого срока домен не заработал или возникла ситуация, когда работающий домен перестал отвечать на запросы, проведите быструю диагностику DNS.
С чего начать?
Используйте утилиту whois для первичной диагностики DNS. Актуально для Linux-систем.
Выполните команду:
whois ispserver.ru
В примере показан корректный вывод ответа на whois, который в большинстве случаев должен быть именно таким.
Whois выводит информацию о домене, в данном примере - ispserver.ru. Серверы имен, которые обслуживают домен - ns1.ispvds.com, ns2.ispvds.com - это первичный и вторичный DNS-серверы. На ns1.ispvds.com вносятся изменения зоны ispserver.ru, ns2.ispvds.com периодически синхронизирует свои записи с первичным DNS-сервером. В случае дочерних DNS-серверов (расположенных на самом делегируемом домене) в выводе whois рядом с именем сервера имен указывается его IP-адрес.
Строка с меткой “state:” обозначает статус, в котором находится домен. REGISTERED и DELEGATED в этой строке указывают на то, что домен зарегистрирован и делегирован.
Для получения краткой информации о домене используйте команду whois с параметрами:
whois ispserver.ru | grep -Ei 'name server|nserver|state'
Если домен не зарегистрирован (такого домена не существует), то ответ на whois будет следующим:
Используйте утилиту dig для обращения из командной строки к серверу DNS. Выполните трассировку маршрута пакетов к DNS-серверу командой:
dig ispserver.ru +trace
Первые 13 строк, начинающиеся со знака “.”, обозначают, что сначала были опрошены серверы имен корневой зоны, затем было сделано перенаправление на зону .ru (строки, начинающиеся с “.ru”), а затем запрос был отправлен на серверы имен домена ispserver.ru - ns1.ispvds.com, ns2.ispvds.com. Предпоследняя строка указывает на то, что серверы имен передали IP-адрес домена ispserver.ru в ответ на запрос.
Если при трассировке на каком-то шаге передача запроса происходит не на нужный DNS-сервер (например, серверы зоны .ru не перенаправляют пакет на серверы ns1.ispvds.com, ns2.ispvds.com), это означает, что информация о домене либо еще не обновилась, либо появились какие-то проблемы при работе DNS-сервера.
Опросите конкретный DNS-сервер, обслуживающий ваш домен, командой
dig ispserver.ru ns1.ispvds.ru
Секция ANSWER SECTION содержит IP-адрес, возвращенный DNS-сервером. Этот IP должен совпадать с тем, который вы назначали домену. Если он отличается, обновите доменную зону или подождите, пока она обновится автоматически. Все DNS-серверы должны возвращать один и тот же IP-адрес для домена.
Ошибка “Connection timed out”
Если в ответ на команду dig вы получаете сообщение “Connection timed out”, это означает, что DNS-сервер не отвечает.
Проверьте, доступен ли DNS-сервер и открыт ли на нем 53 порт.
Опросите первичный сервер имен командой
dig ispserver.ru <IP-адрес> где IP-адрес - IP сервера, на котором расположен домен.
При правильной работе DNS должен выводиться корректный IP-адрес домена.
Решение основных проблем с DNS
Описание всех возникших проблем DNS-сервера читайте в лог-файле DNS, который по умолчанию находится по следующему пути: /var/log/messages. Расположение может быть изменено в зависимости от настроек вашего сервера. Через ISPmanager лог-файл можно просмотреть через “Менеджер файлов”.
Далее описаны наиболее часто возникающие проблемы DNS, которые можно обнаружить командой dig или в лог-файле.
Пустой ответ на команду dig
Под пустым ответом на команду dig понимается отсутствие секции ANSWER в выводе.
Как правило, причинами такого ответа могут быть:
- не существует такого доменного имени;
- домен не зарегистрирован на VPS;
- не создана А-запись для домена.
Проверьте, зарегистрирован ли домен на сервере. Зайдите в ISPmanager в раздел “Сайты” и убедитесь, что в списке существует запись вашего доменного имени. В данном примере это isptest.com, которого в списке нет. Нажмите на кнопку “Создать сайт” и создайте новый сайт.
Если у вас нет панели управления ISPmanager, проверьте, есть ли файл зоны домена, вручную.
Удостоверьтесь, что на сервере для вашего домена корректно созданы А-записи. Зайдите в ISPmanager в раздел “Управление DNS”. Выделите домен и нажмите кнопку “Управлять DNS записями”.
Среди ресурсных записей найдите А-запись и удостоверьтесь, что каждая запись содержит значение IP-адрес сервера, на котором расположен домен. В обратном случае исправьте несоответствия или создайте записи заново.
Если вы не используете панель управления ISPmanager, выполните проверки вручную на сервере. Пример А-записи в конфигурационном файле named.conf:
ispserver.com. IN A 10.10.10.10
Ошибка “Permission denied”
Следующая запись лог-файле DNS означает, что были неправильно назначены права на файл зоны или владелец файла /etc/bind/ispsrv.com
Oct 12 15:23:50 ispsrv named[18761]: zone ispsrv.ru/IN: loading from master file /etc/bind/ispsrv.com failed: permission denied Oct 12 15:23:50 ispsrv named[18761]: zone ispsrv.ru/IN: not loaded due to errors.
Удостоверьтесь, что служба bind запущена от имени того же пользователя, что и владелец файла ispsrv.com. Выполните команду
[root@dns ~]# ls -l /etc/bind/ispsrv.com -rw -r
Следующий результат этой команды говорит о том, что владельцем /etc/bind/ispsrv.com является суперпользователь root:
1 root root 444 Oct 12 16:00 /etc/bind/fvdstest.com
Также проверьте права на саму папку /etc/bind/ командой:
[root@dns ~]# ls -ld /etc/bind/ drwxr-sr-x
Следующий результат указывает на то, что директория доступна пользователям root и bind:
2 root bind 4096 Oct 12 16:07 /etc/bind
Ошибка “No address records (A or AAAA)”
Следующие строки в лог-файле DNS означают, что ресурсная А-запись отсутствует для дочернего NS:
Oct 12 15:23:50 ispsrv ds named[19931]: zone ispsrv.ru/IN: NS 'ns1.ispsrv.com' has no address records (A or AAAA) Oct 12 15:23:50 ispsrv named[19931]: zone ispsrv.ru/IN: NS 'ns2.ispsrv.com' has no address records (A or AAAA) Oct 12 15:23:50 ispsrv named[19931]: zone ispsrv.ru/IN: not loaded due to errors.
В данном случае для DNS-серверов ns1.ispsrv.com и ns2.ispsrv.com отсутствуют А-записи. Сделайте следующие записи в фале named.conf:
ns1 IN A 10.10.10.10 ns2 IN A 11.11.11.11
Ошибка “CNAME and other data”
Следующие строки в лог-файле DNS означают, что для одного домена прописаны одновременно А и CNAME ресурсные записи:
Oct 12 16:13:30 ispsrv named[20701]: zone ispsrv.ru/IN: loading from master file /etc/bind/fvdstest.com failed: CNAME and other data Oct 12 16:13:30 ispsrv named[20701]: zone ispsrv.ru/IN: not loaded due to errors.
Конфликт вызывает запись вида:
ispsrv.com. IN A 10.10.10.10 ispsrv.com. IN CNAME isptest.com
Оставьте только одну необходимую запись.
Ошибка “Query denied”
Следующие строки в лог-файле DNS означают, что ваш запрос к DNS-серверу запрещен:
Oct 12 16:53:03 ispsrv named[03771]: client 188.120.234.14#49834: query ‘ispsrv.com/A/IN’ denied
А таком случае DNS-сервер возможно настроен так, что запросы к нему разрешены только от дочернего DNS (slave).
Ошибка “Transfer failed”
Следующие строки в лог-файле DNS означают, что в конфигурации DNS запрещен трансфер на данный IP-адрес зоны домена:
Oct 12 17:13:13 ispsrv named[83374]: client 188.126.231.143#50652: zone transfer ispsrv.com/AXFR/IN' denied
Команда dig указывает на эту ошибку следующим ответом:
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> ispsrv.com @10.10.10.10 AXFR ;; global options: +cmd ; Transfer failed.
Ошибка в синтаксисе
Если вы случайно допустили синтаксическую ошибку в конфигурации файла доменной зоны, то в ответе на команду dig появятся не ожидаемые вами обозначения. Например,
;; QUESTION SECTION: ;<domain>. IN A ;; ANSWER SECTION: <domain>. 3600 IN A 123.123.123.123 ;; AUTHORITY SECTION: <domain>. 3600 IN NS ns2.ispsrv.ru.<domain>. <domain>. 3600 IN NS ns1.ispsrv.ru.<domain>.
<domain> означает, что после ns1.ispsrv.ru не поставлена точка. Исправьте ошибку, поставив закрывающую точку: ns1.ispsrv.ru.