- Вопрос или проблема
- Ответ или решение
- Система systemd-resolved возвращает SERVFAIL на каждый запрос: Подробное руководство по устранению неполадок
- 1. Проверка конфигурации DNS
- 2. Перезапуск службы
- 3. Проверка состояния сетевых интерфейсов
- 4. Логи системы
- 5. Прямой запрос к DNS-серверу
- 6. Отключение systemd-resolved
- Заключение
Вопрос или проблема
С сегодняшнего утра на одном из моих серверов каждый запрос DNS, отправленный в systemd-resolved, возвращает SERVFAIL, и я совершенно застрял в отладке, так как нет никаких ошибок, на которые можно было бы опираться. Я использую свежую установку Ubuntu 19.10.
DNS Запрос:
$ dig google.com @127.0.0.53
; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> google.com @127.0.0.53
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 42929
;; флаги: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 65494
;; СЕКЦИЯ ВОПРОСА:
;google.com. IN A
;; Время запроса: 0 мс
;; СЕРВЕР: 127.0.0.53#53(127.0.0.53)
;; КОГДА: Вс Мар 29 10:56:07 PDT 2020
;; РАЗМЕР MSG, полученный: 39
$ resolvectl query google.com
google.com: не удалось выполнить запрос разрешения: не найдены подходящие серверы имен или сети для имени
И статус systemd-resolve
:
$ systemd-resolve --status | cat
Глобально
Установка LLMNR: нет
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Ссылка 9 (vnet1)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ссылка 8 (vnet0)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ссылка 7 (virbr0-nic)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ссылка 6 (virbr0)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ссылка 5 (br0)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
DNS Серверы: 10.0.0.1
Ссылка 4 (enp6s0)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ссылка 3 (eno2)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
DNS Серверы: 10.0.0.1
Ссылка 2 (eno1)
Текущие области: нет
Установка DefaultRoute: нет
Установка LLMNR: да
Установка MulticastDNS: нет
Установка DNSOverTLS: нет
Установка DNSSEC: нет
DNSSEC поддерживается: нет
Ни перезапуск службы systemd-resolved, ни перезагрузка сервера не разрешают проблему.
Когда я запрашиваю сервер DNS напрямую с помощью dig, он разрешается как ожидалось.
Кто-нибудь сталкивался с подобным ранее или есть идеи, на что ещё я мог бы посмотреть, чтобы попытаться выяснить, что происходит?
У меня была та же проблема на моем Hyper-V виртуальной машине ubuntu 18.04 в течение последних двух дней. Я в итоге добавил внешний DNS в /etc/systemd/resolved.conf
. Я попытался добавить 8.8.8.8
, 1.1.1.1
в качестве внешнего, но они не сработали.
То, что сработало для меня, это добавление адреса хоста машины с Windows.
[Resolve]
DNS=192.168.96.1
перезапустите службу
systemd-resolved restart
Проверьте вывод с помощью
systemd-resolve --status
Глобально
DNS Серверы: **192.168.96.1**
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Ответ или решение
Система systemd-resolved
возвращает SERVFAIL на каждый запрос: Подробное руководство по устранению неполадок
Недавно вы столкнулись с проблемой, когда ваш сервер на базе Ubuntu 19.10 возвращает ошибку SERVFAIL при каждом запросе DNS через systemd-resolved
. Данная ситуация вызывает затруднения, особенно когда нет явных ошибок в логах. В этом руководстве мы подробно рассмотрим, как диагностировать и устранить данный инцидент.
1. Проверка конфигурации DNS
На первом этапе необходимо убедиться, что конфигурация DNS корректна. Ваша конфигурация может быть определена в файле /etc/systemd/resolved.conf
. Проверьте, указаны ли корректные DNS-серверы.
sudo nano /etc/systemd/resolved.conf
Убедитесь, что в секции [Resolve]
указаны актуальные DNS-серверы. Например:
[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4 1.0.0.1
Если эти серверы не работают, попробуйте указать локальный IP вашего маршрутизатора или вашего host-машины (например, 192.168.96.1
).
2. Перезапуск службы
После внесения изменений необходимо перезапустить службу systemd-resolved
, чтобы изменения вступили в силу:
sudo systemctl restart systemd-resolved
Проверьте статус службы:
systemd-resolve --status
3. Проверка состояния сетевых интерфейсов
Далее следует убедиться, что сетевые интерфейсы настроены правильно и способны к взаимодействию с указанными DNS-серверами. Используйте команду ip a
для отображения информации о состоянии всех интерфейсов.
Убедитесь, что интерфейсы, на которых должны работать DNS, активны и настроены корректно.
4. Логи системы
Следующим шагом является проверка логов системы. Вы можете использовать journalctl
, чтобы просмотреть логи службы systemd-resolved
:
journalctl -u systemd-resolved
Проверьте, нет ли там ошибок, которые могут указать на проблемы в разрешении DNS.
5. Прямой запрос к DNS-серверу
Если systemd-resolved
по-прежнему возвращает SERVFAIL, попробуйте отправить прямой запрос к DNS-серверу, чтобы убедиться, что он работает:
dig @8.8.8.8 google.com
Если запрос выполняется успешно, скорее всего, проблема заключается в systemd-resolved
или его конфигурации.
6. Отключение systemd-resolved
Если вы не можете сами устранить неполадки, вы можете временно отключить systemd-resolved
и использовать другие инструменты, такие как dnsmasq
или unbound
. Чтобы отключить systemd-resolved
, выполните:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
После этого, настройте DNS-серверы в файле /etc/resolv.conf
:
sudo nano /etc/resolv.conf
И добавьте ваши DNS-сервера:
nameserver 8.8.8.8
nameserver 1.1.1.1
Заключение
Ошибки, связанные с SERVFAIL от systemd-resolved
, могут иметь множество причин, от неправильной конфигурации до проблем с сетью. Последовательно выполняя предложенные шаги, вы сможете диагностировать и устранить проблему. Если вам не удалось решить проблему с помощью предоставленных решений, рекомендуется обратиться на форумы поддержки Ubuntu или к специалистам по сетям для более детального анализа.