SYSTEMD_RESOLVED_FAIL
Linux / DevOps
Траблшутинг DNS в systemd-resolved: кэш, сбои DNSSEC и resolv.conf
- Ошибка
Temporary failure in name resolutionпри обращении к внешним хостам. - Сбои валидации
DNSSEC validation failedсо статусом SERVFAIL. - Некорректная маршрутизация доменных имен при использовании VPN (Split-DNS).
- Файл
/etc/resolv.confперезаписывается или теряет правильную символическую ссылку.
1. Проверка текущего статуса и транзакций
resolvectl status
resolvectl statistics
resolvectl query error.itstm.ru2. Восстановление правильного симлинка /etc/resolv.conf
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf3. Исправление конфигурации resolved.conf при сбоях DNSSEC
Отредактируйте /etc/systemd/resolved.conf:
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
DNSSEC=allow-downgrade
DNSOverTLS=no
Cache=yes
MulticastDNS=nosystemctl restart systemd-resolved4. Сброс локального кэша DNS
resolvectl flush-caches
resolvectl reset-server-features5. Настройка маршрутизации доменов для VPN интерфейса
resolvectl dns wg0 10.100.0.1
resolvectl domain wg0 ~corp.internal
Практический опыт инженера:
При траблшутинге всегда тестируйте DNS через команду resolvectl query, а не через dig, так как dig делает прямые UDP-запросы и не отражает поведение системного NSS-стека glibc.
Частые вопросы (FAQ)
Почему DNS перестает работать, если /etc/resolv.conf является статическим файлом?
Если resolv.conf не ссылается на stub-resolv.conf (127.0.0.53), утилиты ОС обходят локальный демон resolved и не получают динамические DNS от DHCP/VPN клиентов.
Что означает префикс тильды '~' в настройке resolvectl domain?
Тильда указывает на Routing Domain — запросы к доменам с этим суффиксом будут направляться исключительно на DNS-серверы данного сетевого интерфейса.