DNS вернул NOERROR без адреса: как проверить NODATA

Как прочитать DNS-ответ без IP-адреса, отличить NODATA от NXDOMAIN и referral и определить, где искать недостающую запись.

DNS отвечает NOERROR, но IP-адреса в ответе нет? Этот код сам по себе не подтверждает, что имя пригодно для открытия сайта. Возможен NODATA: запрошенной записи, например A, нет, хотя само имя существует.

Сначала проверьте полный ответ для A и AAAA, затем CNAME и источник данных. Исправлять нужно только подтверждённый разрыв: отсутствие A не требует вмешательства, если сервис намеренно работает только по IPv6, а отсутствие AAAA нормально для сайта только с IPv4.

Чем NODATA отличается от NXDOMAIN

По терминологии DNS в RFC 9499, NXDOMAIN сообщает об отсутствии имени, а NODATA — об отсутствии записи нужного типа. NODATA не является отдельным кодом в заголовке: его определяют по содержимому ответа с NOERROR.

Например, у www.example.com может быть AAAA, но не быть A. Тогда запрос IPv4-адреса получит NODATA, а запрос IPv6-адреса — положительный ответ. При NXDOMAIN нужно проверять существование имени; если есть цепочка CNAME, отрицательный результат может относиться к её конечной цели.

1. Сохраните полный ответ, а не пустую строку

Для проверки нужен dig из набора DNS-утилит. Команды ниже только читают DNS; замените пример точным именем сайта, без схемы HTTPS и пути страницы:

dig www.example.com. A
dig www.example.com. AAAA

Точка в конце обозначает полное доменное имя. Пока не используйте +short: пустой вывод скрывает различия между отсутствием данных и другими результатами. Формат команды и параметры описаны в документации BIND.

Читайте результат в таком порядке:

  1. В QUESTION SECTION сверьте имя и тип: A для IPv4, AAAA для IPv6.
  2. В заголовке найдите status: NOERROR, NXDOMAIN, SERVFAIL и REFUSED требуют разных действий.
  3. В ANSWER SECTION ищите нужный адрес или CNAME.
  4. В AUTHORITY SECTION посмотрите, есть ли SOA зоны либо только NS следующей зоны.

NOERROR без нужного адреса и с SOA в Authority — характерная картина NODATA. Пустой Answer с NS без SOA может быть направлением к другим серверам, то есть referral, а не окончательным ответом об отсутствии записи. Это различие описано в разделе 2.2 RFC 2308.

2. Проверьте, не заканчивается ли ответ на CNAME

Если вместо адреса получен CNAME, имя является псевдонимом. Запросите A и AAAA для цели, указанной справа от CNAME, и продолжайте до конечного имени.

Условный пример: www.example.com ведёт на edge.example.net. Наличие самого алиаса ещё не даёт браузеру IP: конечная цель тоже должна разрешаться в подходящий адрес. При NXDOMAIN у цели проверяют цель, а не добавляют случайную A-запись рядом с CNAME.

Если цель обслуживает CDN или хостинг, сверяйте её с настройками подключения у провайдера. Не подставляйте IP, найденный на другом сайте: адрес может относиться к чужому узлу или меняться по правилам сервиса.

3. Установите, где отсутствует запись

Рекурсивный резолвер получает ответы за клиента и кэширует их. Авторитетный сервер обслуживает саму DNS-зону. Чтобы решить, править ли запись или разбирать кэш, нужны ответы обоих уровней.

Уточните актуальные NS в делегировании домена и у DNS-провайдера. Если поддомен делегирован отдельно, спрашивать нужно серверы его зоны. Для первичного просмотра NS родительского домена:

dig example.com. NS

Затем опросите каждый авторитетный NS нужной зоны; в примере замените имя сервера:

dig @ns1.example.net www.example.com. A +norecurse
dig @ns1.example.net www.example.com. AAAA +norecurse

Флаг aa указывает на авторитетный ответ. Если вместо него пришло направление к другой зоне, продолжите проверку на её NS: отсутствие A у родительского сервера ещё ничего не доказывает.

Как выбрать следующий шаг

  • Все авторитетные NS подтверждают NODATA для нужного типа. Сверьте схему сервиса. Если IPv4 предусмотрен, проверьте A в активной зоне: точное имя, значение и публикацию изменения. Аналогично проверяется AAAA, если нужен IPv6.
  • Авторитетные NS отвечают по-разному. Разберите расхождение ответов DNS-серверов, прежде чем ждать клиентский кэш.
  • На авторитетных NS адрес уже есть, у резолвера ещё NODATA. Проверьте отрицательный кэш. Его разбор вынесен в отдельное руководство; повторное удаление и создание записи не ускоряет обновление чужого кэша.
  • Получен SERVFAIL, REFUSED или тайм-аут. Это другая ветка диагностики; не объявляйте запись отсутствующей по такому результату.

Когда исправление можно считать проверенным

После изменения повторите те же запросы ко всем авторитетным NS и к резолверу, на котором наблюдался сбой. Ожидаемый результат — адрес предусмотренного типа либо CNAME с разрешающейся конечной целью. Сохранившееся отсутствие ненужного типа записи не является дефектом.

Затем откройте исходный HTTPS-адрес: DNS-ответ не проверяет сертификат, виртуальный хост и приложение. Один успешный запрос также не подтверждает доступность из всех сетей. Web-Puls помогает регулярно контролировать публичный URL, но мониторинг не заменяет разбор конкретного DNS-ответа.

Если непонятно, какая зона отвечает за имя, или CNAME ведёт во внешний сервис, можно отправить заявку на диагностику. Укажите публичное имя, тип записи, время с часовым поясом, ожидаемую схему и обезличенные ответы DNS; специалист оценит задачу и предложит формат работ. Пароли, ключи и данные входа не нужны.

Мониторинг сайтов

Запись нового поддомена уже появилась на авторитетных DNS-серверах, но рекурсивный резолвер всё ещё возвращает NXDOMAIN. Разбираем, как отличить отрицательный кэш от ошибки зоны и что делать безопасно.

Проверьте свой сайт прямо сейчас

Введите адрес сайта: Web-Puls покажет HTTP-код, время ответа и базовую диагностику. Для постоянного контроля можно подключить мониторинг.

Нужна помощь с диагностикой ошибки?

Опишите симптомы в короткой заявке: URL, код ответа, время появления и что менялось перед сбоем. Специалист поддержки оценит задачу и предложит формат работ.