Когда DNS даёт сбой, исправный сайт становится недоступным. Сервер работает, с приложением всё в порядке, но браузер посетителя не может узнать, куда подключаться. Браузер сообщает что-то вроде «сервер не найден», и на этом всё.
Это руководство поможет понять, что за сбой произошёл и на каком шаге. Простое объяснение терминов см. в статье Разрешение DNS.
Сначала прочитайте симптом
В ответе DNS есть статус. Большинство случаев укладывается в четыре исхода.
| Что вы видите | Что это значит | Обычные причины |
|---|---|---|
NXDOMAIN |
Такого имени не существует | Опечатка, удалённая запись или зона, отсутствующее делегирование, истёкший домен |
Пустой ответ, статус NOERROR |
Имя существует, но записи запрошенного типа у него нет | Нет записи AAAA у сайта только с IPv4. Это часто нормально |
SERVFAIL |
Серверу не удалось завершить запрос | DNS-серверы зоны не отвечают или отвечают неверно, сломанное делегирование, не пройдена проверка DNSSEC |
| Превышено время ожидания, ответа нет | Никто не ответил вовремя | Заблокированная сеть, перегруженный или недоступный резолвер, файрвол |
В RFC 1035 определены коды «сбой сервера» и «ошибка имени» (имени не существует). RFC 8499 объясняет распространённые названия SERVFAIL и NXDOMAIN. Пустой ответ иногда называют NODATA. Это не отдельный статус, а успешный ответ, в котором ничего нет.
Проверка через dig
dig — стандартный инструмент в Linux и macOS. Он выводит статус в строке заголовка.
dig example.com A
dig example.com AAAA
Найдите в выводе строку status:. Чтобы оставить только адреса:
dig +short example.com A
В Windows есть nslookup:
nslookup example.com
Спросите другой резолвер
По умолчанию вы спрашиваете резолвер, который выдала ваша сеть. Чтобы спросить другой, укажите его после @:
dig @1.1.1.1 example.com A
dig @8.8.8.8 example.com A
Если ваш обычный резолвер даёт сбой, а остальные отвечают, проблема в резолвере или в пути к нему, а не в вашем домене. Если сбоят все резолверы, проблема в вашей зоне или в делегировании.
Спросите авторитетные серверы
Узнайте, какие серверы отвечают за домен, и спросите их напрямую:
dig example.com NS +short
dig @ns1.your-dns-provider.example example.com A
Авторитетный сервер знает зону по собственным данным. Если он возвращает верный адрес, а публичные резолверы нет, то ответ, скорее всего, где-то закеширован, либо делегирование у регистратора указывает в другое место. Если авторитетный сервер вообще не отвечает, проблема у вашего DNS-провайдера.
Пройдите по цепочке
dig +trace начинает с корневых серверов и следует за каждым делегированием:
dig +trace example.com
Вывод показывает, на каком шаге ответы прекращаются. Если трассировка заканчивается тем, что реестр не выдаёт DNS-серверов для вашего домена, это указывает на проблему делегирования, чаще всего на просроченную регистрацию.
Сузьте круг
Двигайтесь снаружи внутрь.
- Видят ли проблему другие сети? Попробуйте телефон на мобильном интернете и публичный резолвер. Если сбоит только ваша сеть, смотрите локальные резолверы, VPN или фильтр.
- Не истёк ли домен? Просроченная регистрация — частая причина внезапного
NXDOMAIN. Проверьте дату, как описано в статье Как узнать, когда истекает домен. - Не менялось ли делегирование? Если DNS-серверы у регистратора меняли, сравните записи
NSв реестре с серверами, на которых зона находится на самом деле. - Не менялась ли запись? Удалённая или набранная с ошибкой запись
A,AAAAилиCNAMEдаёт пустой или неверный ответ. - Не виноват ли локальный компьютер? Проверьте файл hosts, очистите локальный кеш и проверьте с другого устройства.
Почему исправление появляется не везде сразу
Резолверы кешируют ответы. Положительные ответы хранятся в течение времени жизни записи (TTL). Отрицательные тоже кешируются: RFC 2308 описывает кеширование ответов «имени не существует» и «данных нет» на срок, который указан в SOA-записи зоны. Резолвер, который услышал NXDOMAIN незадолго до того, как вы создали запись, может повторять это, пока срок не выйдет.
SERVFAIL тоже может кешироваться, хотя RFC 2308 просит, чтобы такое кеширование не превышало пяти минут.
Поэтому после исправления сначала проверяйте авторитетные серверы. Они показывают истину. Публичные резолверы подтянутся по мере истечения кеша.
A и AAAA: частичный сбой, который трудно заметить
Запись A содержит адрес IPv4 (RFC 1035). Запись AAAA содержит адрес IPv6 (RFC 3596). У сайта могут быть обе или только A.
Отсутствие записи AAAA — норма. Неверная запись — нет: посетителя, чьё соединение предпочитает IPv6, могут отправить на адрес, где никто не отвечает, тогда как посетители с IPv4 видят работающий сайт. Если сообщения «сайт не работает» приходят только от части пользователей, сравните dig example.com A и dig example.com AAAA.
Что проверяет UptimeWire
Раз в час для каждого сайта UptimeWire разрешает имя хоста сайта стандартным системным резолвером и смотрит на ответ:
- Проверка пройдена, если имя разрешается хотя бы в один публичный адрес.
- Проверка не пройдена, если домена не существует (
NXDOMAIN) или если имя разрешается только в приватные адреса. - Результат неизвестен, если DNS-сервер не ответил. Недоступность DNS ничего определённого не говорит о домене, поэтому предупреждение не отправляется.
Когда проверка переходит из пройденной в непройденную, UptimeWire отправляет одно предупреждение по почте и в Telegram с указанием причины. Предупреждение о DNS — не инцидент, и в каналы вебхуков и чатов оно не уходит.
Обычная проверка сайта тоже завершается неудачей, если имя не удаётся разрешить, с причиной «не удалось разрешить доменное имя». После повторных неудач такая проверка может открыть инцидент.
UptimeWire не обнаруживает изменения DNS-записей, не следит за распространением, не запрашивает другие типы записей, такие как MX или TXT, и не проверяет DNSSEC. Он сообщает, что имя перестало разрешаться, но не почему.
Чек-лист
- Зафиксируйте точный статус:
NXDOMAIN, пустой ответ,SERVFAILили превышение времени ожидания. - Запросите два публичных резолвера и авторитетные серверы.
- Проверьте дату регистрации и DNS-серверы у регистратора.
- Сравните ответы
AиAAAA. - Помните о кешировании, прежде чем решать, что исправление не сработало.
- Записывайте, что и когда изменилось.