DNS resolution failure: SERVFAIL — Ошибка резолва systemd-resolved
Архитектура ошибки и симптомы сбоя
Сообщение «systemd-resolved: DNS resolution failure: Server returned SERVFAIL» (сопровождающееся «Server returned error NXDOMAIN / SERVFAIL») генерируется встроенным кэширующим DNS-резолвером systemd-resolved. Ошибка означает, что вышестоящий DNS-сервер не смог обработать запрос, либо локальный валидатор DNSSEC в systemd-resolved отклонил ответ из-за несовпадения криптографических подписей RRSIG, рассинхронизации системного времени или блокировки UDP-фрагментации корпоративными шлюзами.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| SERVFAIL | RCODE 2 (Server Failure) | Вышестоящий DNS-сервер не смог разрешить имя или валидация DNSSEC провалилась. |
| DNSSEC Policy | allow-downgrade / yes / no | Политика обязательной криптографической проверки подлинности DNS-ответов. |
| Local Stub Resolver | 127.0.0.53:53 | Локальный петлевой интерфейс кэширования systemd-resolved. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Проверка текущей конфигурации DNS и DNSSEC
# Просмотр активных DNS серверов и статуса валидации:
resolvectl status
# Статистика попаданий в кэш и ошибок DNSSEC:
resolvectl statisticsСценарий 2: Отключение жесткой валидации DNSSEC в resolved.conf
Многие публичные и локальные DNS-зоны не имеют корректных подписей DNSSEC, что вызывает SERVFAIL:
# Отредактируйте /etc/systemd/resolved.conf:
cat <<EOF | sudo tee /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=8.8.4.4 1.0.0.1
DNSSEC=allow-downgrade
DNSOverTLS=no
Cache=yes
EOF
# Перезапустите службу DNS:
sudo systemctl restart systemd-resolvedСценарий 3: Сброс локального DNS-кэша
Очистите закэшированные ошибочные SERVFAIL ответы:
# Сброс DNS кэша systemd-resolved:
sudo resolvectl flush-cachesСценарий 4: Восстановление корректного симлинка /etc/resolv.conf
# Пересоздайте правильный симлинк на stub-резолвер systemd:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.confITSTM проведет аудит цепочек DNS-резолвинга, настроит отказоустойчивые Forward-зоны и DNSSEC-валидацию.
Частые вопросы (FAQ)
Почему DNSSEC=yes вызывает ошибки на внутренних доменах (.local, .corp)?
Внутренние корпоративные DNS-серверы (Active Directory, FreeIPA) часто не имеют валидной цепочки доверия корневых ключей DNSSEC Root Anchor, поэтому строгий резолвер бракует любые ответы как скомпрометированные.
Что означает адрес 127.0.0.53 в /etc/resolv.conf?
Это локальный виртуальный адрес DNS-stub-резолвера systemd-resolved. Он перехватывает все DNS-запросы от приложений, кэширует их и перенаправляет на реальные upstream DNS-серверы.
Как выполнить тестовый DNS-запрос в обход systemd-resolved?
Используйте утилиту dig с прямым указанием сервера: dig @8.8.8.8 example.com +dnssec.
Может ли неверное системное время вызывать SERVFAIL?
Да. Криптографические сертификаты и подписи DNSSEC (RRSIG) имеют жесткий срок действия. Если на сервере сбито время, валидация гарантированно завершится ошибкой SERVFAIL.