Список ошибок, с которыми сталкиваешься, когда ломается DNS, — от A до Z. Здесь три вида записей: коды ответа (RCODE), которые есть в каждом ответе DNS, расширенные ошибки DNS (EDE, RFC 8914), которыми современные резолверы поясняют сбой, и сообщения, которые вместо кода выводят браузеры, ОС и утилиты командной строки. Для каждой записи: что значит, обычная причина и что проверить дальше.
Чтобы увидеть «сырой» код, спросите напрямую: dig example.com показывает status: NXDOMAIN в заголовке и, если резолвер его прислал, строку EDE: в OPT-псевдосекции. Тот же статус показывает DNS Lookup. Три самых частых кода подробно разобраны в статье NXDOMAIN, SERVFAIL, REFUSED: что на самом деле значит ошибка DNS.
Ничего не найдено.
B
Код ответаRCODE 23
Сервер отклонил DNS Cookie (RFC 7873), присланный клиентом, — обычно из-за смены секрета на сервере или потому, что узлы anycast его не разделяют. Клиент повторяет запрос с новым cookie из ответа, так что единичный BADCOOKIE безвреден. Повторяющиеся сбои указывают на узлы anycast с разными секретами или на промежуточное устройство, переписывающее OPT-запись.
Код ответаRCODE 16–18 (TSIG)
Сбои TSIG в подписанных сообщениях — обычно трансферах зон, NOTIFY или динамических обновлениях между серверами. BADSIG: подпись не сходится (неверный секрет). BADKEY: имя ключа или алгоритм неизвестны другой стороне. BADTIME: часы расходятся больше допустимого (по умолчанию 300 секунд). Сравните имя ключа, алгоритм и секрет на обоих серверах побайтно и проверьте NTP.
Код ответаRCODE 16 (EDNS)
Сервер не поддерживает версию EDNS из запроса. Все реальные клиенты используют EDNS версии 0, поэтому BADVERS обычно означает неисправный сервер или промежуточное устройство, а не настоящее несовпадение версий. Проверьте dig +edns=0 example.com @server; если и это падает, сервер неправильно обрабатывает EDNS.
Расширенная ошибкаEDE 15
Оператор резолвера отказался разрешать имя, потому что оно в блок-листе: фильтрация вредоносных, фишинговых или рекламных доменов на Quad9, AdGuard или корпоративном DNS-файрволе. Ответ часто NXDOMAIN или адрес-«заглушка». Проверьте репутацию домена и при ложном срабатывании попросите оператора резолвера исключить его.
C
Расширенная ошибкаEDE 13
Резолвер возвращает ранее закэшированную ошибку вместо новой попытки. Типично после кратковременного сбоя авторитативных серверов: проблема устранена, но некоторые резолверы ещё несколько минут отвечают SERVFAIL. Убедитесь, что авторитативные серверы уже отвечают, затем подождите или сбросьте кэш резолвера.
Сообщениеnslookup
Выводится nslookup в Windows при запуске, ещё до вашего запроса. nslookup ищет PTR-запись для IP своего DNS-сервера, а такого обратного имени нет — обычно у роутера 192.168.x.1. Это косметика: запрос ниже всё равно выполняется. Чтобы убрать сообщение, добавьте PTR-запись для адреса сервера в локальном DNS.
Расширенная ошибкаEDE 16
Резолвер не отдаёт ответ из-за внешнего требования — решения суда или национального реестра блокировок, а не собственной политики оператора (это Blocked) и не выбора пользователя (Filtered). Другой резолвер обычно возвращает настоящий ответ — с учётом местного законодательства.
Сообщениеdig
dig не получил вообще никакого ответа ни от одного сервера (новые версии пишут communications error to … timed out). Это не ответ DNS, а сетевой сбой: сервер не работает, порт 53 UDP/TCP закрыт или адрес неверен. Попробуйте dig @1.1.1.1, чтобы исключить локальный резолвер, проверьте путь через Traceroute и порт 53 через проверку порта.
Сообщениеcurl (error 6)
curl: (6) Could not resolve host: example.com значит, что системный резолвер не вернул адрес: NXDOMAIN, нет записи A/AAAA или DNS-сервер недоступен. Запустите dig example.com, чтобы понять, что именно. В контейнерах проверьте /etc/resolv.conf внутри контейнера: резолвер хоста вроде 127.0.0.53 оттуда недоступен.
D
Сообщениеnslookup (Windows)
nslookup ждал (по умолчанию 2 секунды) и не получил ответа от DNS-сервера. Один таймаут, за которым пришёл ответ, — просто медленный канал или потери; повторяющиеся таймауты значат, что сервер недоступен, перегружен или закрыт файрволом. Попробуйте другой сервер: nslookup example.com 1.1.1.1, и увеличьте ожидание nslookup -timeout=10, чтобы отличить «медленно» от «мёртв».
СообщениеWindows
Windows переводит коды ответа DNS в номера ошибок: 9001 FORMAT_ERROR (FORMERR), 9002 SERVER_FAILURE (SERVFAIL), 9003 NAME_ERROR (NXDOMAIN), 9004 NOT_IMPLEMENTED (NOTIMP), 9005 REFUSED. 9501 DNS_INFO_NO_RECORDS — это NODATA: имя есть, но записи такого типа нет. Resolve-DnsName показывает 9003 как «DNS name does not exist». Смотрите соответствующую запись в списке; локальный кэш сбрасывается командой ipconfig /flushdns.
СообщениеChrome
Chrome вообще не смог связаться с настроенным DNS-сервером — в отличие от случая, когда пришёл отрицательный ответ. Обычные причины: адрес DNS-сервера, которого больше нет (старый роутер, удалённый VPN), перехват DNS VPN-клиентом или антивирусом, сломанная настройка DNS-over-HTTPS. Проверьте DNS-серверы адаптера, отключите VPN или фильтрующее ПО для теста и выполните ipconfig /flushdns.
СообщениеChrome
DNS-проверка Chrome не прошла, и он вообще не нашёл рабочего подключения к сети. Сначала проверьте связь (Wi-Fi, кабель, страница авторизации в сети, роутер), а не настройки DNS. Если другие приложения работают, файрвол или VPN могут блокировать именно Chrome.
СообщениеChrome
Chrome получил ответ NXDOMAIN: резолвер сообщает, что имени не существует. Сначала проверьте написание. Если домен ваш: зарегистрирован ли он, не истёк ли и нет ли статуса clientHold (см. WHOIS), совпадают ли NS у регистратора с серверами, где лежит зона (DNS Lookup, тип NS), не создана ли запись только что (негативное кэширование, см. NXDOMAIN)? Собственный кэш Chrome очищается в chrome://net-internals/#dns.
Расширенная ошибкаEDE 9
В родительской зоне есть DS-запись, но ни один DNSKEY в зоне ей не соответствует, поэтому цепочка доверия рвётся и валидирующие резолверы отвечают SERVFAIL. Классические причины: переезд к другому DNS-провайдеру без удаления старой DS или ротация ключей, при которой новую DS опубликовали раньше нового ключа. Сравните DS у родителя и DNSKEY в зоне через DNSSEC Checker; удалите или обновите DS у регистратора.
Расширенная ошибкаEDE 6
Проверка DNSSEC не пройдена: подписи есть, но не сходятся с цепочкой доверия. Валидирующие резолверы (Google, Cloudflare, Quad9, большинство провайдеров) отвечают SERVFAIL, а невалидирующие продолжают отвечать, поэтому домен работает в одних сетях и не работает в других. Ищите более точный EDE (Signature Expired, DNSKEY Missing, RRSIGs Missing) и запустите DNSSEC Checker.
Расширенная ошибкаEDE 5
Резолвер не смог определить, безопасен ли ответ, небезопасен или поддельный — например, не смог получить нужный DNSKEY или DS. Часто это следствие недоступного или медленного авторитативного сервера, а не ошибки подписи. Проверьте, что все NS отвечают на запросы DNSKEY, в том числе по TCP для больших ответов.
Код ответаRCODE 11
«DSO-TYPE not implemented»: ответ на запрос DNS Stateful Operations (RFC 8490, используется в долгоживущих сессиях TCP/TLS), тип которого сервер не знает. В обычных запросах не встречается; важен только при разработке ПО на DSO, например DNS push-уведомлений.
F
Расширенная ошибкаEDE 17
Имя отфильтровано, потому что фильтрацию запросил сам клиент: семейный или блокирующий рекламу профиль резолвера, выбранный пользователем или администратором сети (например, семейный фильтр CleanBrowsing, профили NextDNS). Если блокировка ошибочна, смените профиль или резолвер.
Расширенная ошибкаEDE 4
Резолвер намеренно вернул ответ, отличный от настоящего, по своей политике: адрес-«заглушку» для вредоносного домена, страницу «огороженного сада» или авторизации в сети. Если это происходит с обычным именем, сравните с другим резолвером и выясните у оператора, почему имя переписывается.
Код ответаRCODE 1
«Ошибка формата»: сервер не смог разобрать запрос. Сегодня это почти всегда сломанная обработка EDNS: старый сервер, балансировщик или файрвол, который не переваривает OPT-запись, неизвестную опцию EDNS или большой размер UDP. После DNS Flag Day 2019 крупные резолверы больше не повторяют запрос без EDNS, и такие домены просто не работают. Проверьте авторитативный сервер: dig +norec example.com @ns1.example.com и то же с +noedns; если падает только запрос с EDNS, обновите или перенастройте сервер или промежуточное устройство.
N
СообщениеLinux (EAI_NONAME)
Текст ошибки EAI_NONAME из C-библиотеки Linux, который выводят ping, ssh, wget и другие: у имени нет адреса. Либо NXDOMAIN, либо нет записи A/AAAA, либо имени нет в /etc/hosts и DNS не настроен. Проверьте getent hosts example.com (тот же путь, что у приложений) и dig example.com (только DNS); разница указывает на /etc/nsswitch.conf или /etc/hosts.
Расширенная ошибкаEDE 23
Резолвер столкнулся с неустранимой сетевой ошибкой при обращении к другому серверу — например, ICMP unreachable или отказ TCP-соединения. Указывает на маршрутизацию или файрвол перед NS. Проверьте путь до каждого IP NS через Traceroute.
Расширенная ошибкаEDE 22
Резолвер не получил пригодного ответа ни от одного авторитативного сервера зоны: все не ответили, отказали или недоступны. Вам он вернёт SERVFAIL. Проверьте, что каждый NS, указанный у родителя, отвечает за зону (lame delegation после смены провайдера — частый случай), что порты 53 UDP и TCP открыты и что серверы не ограничивают запросы резолвера.
Расширенная ошибкаEDE 11
У DNSKEY, на который ссылается DS, не установлен флаг Zone Key (у флагов 256 и 257 он есть, у 0 — нет), поэтому ключ не может подтверждать зону. Обычно это ключ, собранный вручную или конвертированный с неверными флагами. Сгенерируйте ключ заново своим DNS-ПО и опубликуйте соответствующую DS.
Код ответаNOERROR, empty answer
Отдельного кода нет: статус NOERROR, но секция ответа пуста. Имя существует, просто без записи запрошенного типа — например, у домена есть A, но нет MX. Это сильно отличается от NXDOMAIN (имени нет вовсе). Часто встречается при отладке почты: без MX отправители используют A-запись. Проверьте каждый тип через DNS Lookup.
Код ответаRCODE 0
Запрос выполнен успешно. Это не значит, что запись получена: смотрите секцию ответа — если она пуста, это NODATA. Если NOERROR пришёл с неверными данными, смотрите на кэширование (DNS Propagation) или на то, какой NS ответил.
Сообщениеnslookup (Windows)
Формулировка NXDOMAIN в nslookup для Windows: *** dns.server can't find example.com: Non-existent domain. Значение и проверки те же, что у NXDOMAIN. Если сообщение появляется только при запуске, до вашего запроса, см. «Can't find server name for address».
Расширенная ошибкаEDE 20
Опрошенный сервер не авторитативен для зоны и не выполняет рекурсию, поэтому ответить не может. Обычно вы спросили чисто авторитативный сервер о чужом домене, либо родитель делегирует зону серверу, который её больше не обслуживает (lame delegation). Направьте клиентов на рекурсивный резолвер или исправьте NS-записи.
Расширенная ошибкаEDE 14
Сервер ещё не готов отвечать: запускается, загружает зоны или наполняет кэш. Должно пройти за секунды или минуты. Если не проходит, ищите в логах сервера зону, которая не загружается.
Расширенная ошибкаEDE 21
Сервер не поддерживает запрошенную операцию или тип запроса — например, запросы ANY на серверах, которые их ограничивают (RFC 8482), или трансфер/обновление на сервере, где они запрещены. Запрашивайте конкретный тип записи вместо ANY.
Код ответаRCODE 9
Два значения в зависимости от контекста. В динамическом обновлении DNS UPDATE (RFC 2136): сервер не авторитативен для зоны из обновления — отправляйте его на primary. С TSIG (RFC 8945): запрос не авторизован, обычно из-за отсутствующего или неверного ключа TSIG при трансфере или обновлении. Проверьте allow-transfer / allow-update и ключ на обеих сторонах.
Код ответаRCODE 4
«Не реализовано»: сервер не поддерживает такой тип запроса (opcode) — например, NOTIFY, UPDATE или IXFR, отправленные серверу или устройству, которое отвечает только на обычные запросы. Иногда его возвращают сломанные промежуточные устройства на запросы с EDNS. Проверьте тип запроса и должен ли этот сервер его обрабатывать.
Код ответаRCODE 10
В динамическом обновлении UPDATE: имя из обновления не входит в обновляемую зону. Обычно клиент прислал записи для host.other.example в зону example.com. Исправьте имена зоны или записей в обновлении.
Расширенная ошибкаEDE 12
Ответ утверждает, что имени или типа нет, но не содержит доказательства NSEC/NSEC3, поэтому валидирующий резолвер не может доверять отрицанию. Обычно это подписывающее ПО или сервер, отбрасывающий NSEC, либо частично подписанная зона. Переподпишите зону и проверьте её в DNSSEC Checker.
Код ответаRCODE 3
«Несуществующий домен»: авторитативный сервер ответил, что имени нет. Для своего домена проверьте: запись действительно опубликована в той зоне, которая обслуживается; имя написано точно (нет двойного www.www); NS у регистратора совпадают с вашим DNS-хостингом; домен не истёк и не заблокирован (WHOIS). Только что созданное имя может оставаться NXDOMAIN в кэшах на время минимального TTL из SOA (негативное кэширование). Подробный разбор: статья про NXDOMAIN, SERVFAIL, REFUSED.
Код ответаRCODE 8
В динамическом обновлении UPDATE: предусловие требовало, чтобы набор записей существовал, а его нет. Обновление отклоняется целиком. Часто встречается у ACME/Let's Encrypt DNS-клиентов или обновлений от DHCP, которые ожидают старую запись. Проверьте текущее содержимое зоны перед обновлением.
S
Сообщениеnslookup
Так nslookup сообщает о неудачном запросе, после двоеточия — причина: ** server can't find example.com: NXDOMAIN (имени нет), : SERVFAIL (сбой резолвера), : REFUSED (сервер отказал), : NXDOMAIN для IP — нет PTR-записи. Смотрите соответствующую запись. В Windows NXDOMAIN звучит как «Non-existent domain».
Код ответаRCODE 2
Резолвер пытался, но не смог получить ответ. Это не утверждение, что имени нет. Обычные причины по частоте: ошибка проверки DNSSEC (в невалидирующих сетях работает, на Google/Cloudflare/Quad9 — нет; проверьте DNSSEC Checker), ни один NS не отвечает, lame delegation или истёкшая зона на вторичном сервере. Ищите рядом код EDE — он часто называет причину. Затем опросите авторитативные серверы напрямую. Подробный разбор: статья про NXDOMAIN, SERVFAIL, REFUSED.
Расширенная ошибкаEDE 7
Срок действия RRSIG истёк. Подписи периодически пересоздаются подписывающим ПО; если подпись остановилась (cron, служба или автоматизация провайдера сломались), зона работает ещё несколько дней, а затем перестаёт работать везде, где включена проверка. Переподпишите зону и почините автоматизацию; даты истечения покажет DNSSEC Checker.
Расширенная ошибкаEDE 8
Время начала действия RRSIG, с точки зрения резолвера, ещё не наступило. Обычно часы подписывающего сервера спешат или часы резолвера отстают. Проверьте NTP на подписывающем сервере; подписывающее ПО обычно сдвигает начало действия на час назад, чтобы поглотить небольшие расхождения.
Расширенная ошибкаEDE 3
Резолвер не смог обновить запись с авторитативных серверов и отдал просроченную копию из кэша (serve-stale, RFC 8767). Ответ вы получили, но у авторитативной стороны проблемы. Проверьте, что NS отвечают, пока окно serve-stale не закончилось — обычно от одного до трёх дней.
Расширенная ошибкаEDE 19
Как Stale Answer, но в кэше был отрицательный ответ: резолвер не достучался до авторитативных серверов и повторил просроченный NXDOMAIN. Если вы только что создали имя, исправлять нужно на авторитативной стороне: резолвер не увидит новую запись, пока не сможет связаться с серверами.
Источники: RFC 1035 (RCODE 0–5), RFC 2136 (6–10), RFC 8490 (11), RFC 6891 и RFC 8945 (16–22), RFC 7873 (23), RFC 8914 (EDE 0–24), RFC 9250 (EDE 26), RFC 9276 (EDE 27), реестр IANA DNS Parameters. Проверить домен целиком можно в NODA.