DNS в Linux Linux

Linux: dig и nslookup возвращают SERVFAIL

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

SERVFAIL означает, что сервер не смог получить ответ. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Проверка серверов
  5. Исправление локально
  6. DNS домена

#Что означает ошибка

Сообщение
status: SERVFAIL

;; connection timed out; no servers could be reached в dig/nslookup и SERVFAIL означают, что DNS-сервер не отвечает или не может разрешить имя. Это отличается от NXDOMAIN (имя не существует). Определите, виноват ли ваш резолвер, сеть или DNS домена.

Проверьте запрос к разным серверам и сравните результаты.

Это сразу локализует проблему.

SERVFAIL означает, что сервер не смог получить ответ. Проверьте другой DNS-сервер и DNSSEC.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Сбой DNS-сервераПровайдер.Смените.
DNSSECПроверка.Проверьте.
ЗонаНастройки.Исправьте.
СетьБлокировка.Проверьте.

#Пошаговое решение

  1. Определите используемый DNS-серверВ Linux откройте терминал и выполните resolvectl status, если система использует systemd-resolved; в выводе ищите строки Current DNS Server и DNS Servers у активного интерфейса. Дополнительно выполните cat /etc/resolv.conf, чтобы увидеть nameserver. Адрес 127.0.0.53 обычно означает локальную заглушку, а не адрес DNS провайдера. Если resolvectl недоступен, проверьте настройки через nmcli device show (при NetworkManager). Запишите фактический сервер для следующего шага.
  2. Запросите разные серверыОткройте терминал Linux и выполните resolvectl status (если есть systemd-resolved), затем dig example.com A и dig @1.1.1.1 example.com A с тем же именем. Сравните строки status и ANSWER SECTION, а также список DNS-серверов. Если внешний DNS отвечает, но системный нет, исследуйте настройки локального разрешения имён; если оба дают NXDOMAIN, проверьте наличие домена. Не меняйте /etc/resolv.conf до выяснения, кто его формирует.
  3. Смените DNS или перезапустите резолверСначала посмотрите текущие DNS-серверы через resolvectl status или настройки NetworkManager. Изменяйте их в настройках активного подключения, а не в /etc/resolv.conf, если им управляет система. Запишите прежние адреса для отката.
  4. Проверьте делегирование доменаЕсли SERVFAIL повторяется только для конкретного принадлежащего вам домена, откройте терминал Linux/macOS с установленным dig и выполните dig +trace example.com, заменив имя собственным доменом. Просмотрите ответы корневых, доменных и авторитетных серверов по порядку; при явной ошибке делегирования сравните NS у регистратора и в зоне. +trace не проверяет все свойства DNSSEC и может ограничиваться межсетевым экраном; при отсутствии ответов не меняйте NS наугад, а соберите вывод и обратитесь к DNS-провайдеру. Если другие домены тоже дают SERVFAIL, исследуйте свой резолвер, а не делегирование одного домена.
  5. Сравнение ответов DNS-серверов
    Linux · Терминал (Bash)Команда
    Сравнение ответов DNS-серверов.
    dig example.com @8.8.8.8
    dig example.com

#Проверка серверов

Какой резолвер используется: resolvectl status или cat /etc/resolv.conf. Спросите разные серверы: dig example.com @1.1.1.1, dig example.com @8.8.8.8, dig example.com @192.168.1.1. Если публичные отвечают, а локальный нет — проблема в локальном резолвере/роутере. Если ответ SERVFAIL у всех, проблема в DNS домена (недоступны NS, DNSSEC): dig +trace example.com, dig example.com +cd (без проверки DNSSEC).

#Исправление локально

Смените DNS: NetworkManager — nmcli con mod "имя" ipv4.dns "1.1.1.1 8.8.8.8" ipv4.ignore-auto-dns yes && nmcli con up "имя". systemd-resolved: sudo systemctl restart systemd-resolved, resolvectl flush-caches. Проверьте, что UDP/TCP 53 не блокируются: nc -zvu 1.1.1.1 53. Отключите VPN или проверьте его DNS. Проверьте файл /etc/hosts на лишние записи.

#DNS домена

Если вы владелец домена, проверьте делегирование: dig NS example.com +short, ответы каждого NS: dig example.com @ns1.provider.ru. Расхождение NS у регистратора и в зоне, истёкший домен, ошибки DNSSEC (устаревший DS) дают SERVFAIL. Проверьте на dnsviz.net. После исправления учитывайте TTL кэширования. Для внутренних доменов проверьте условные пересылки (forwarders).

Linux · Терминал (Bash)Команда
Определение резолвера и сравнение ответов разных DNS-серверов.
resolvectl status
dig example.com @1.1.1.1
dig +trace example.com

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.