systemd-resolved возвращает servfail на каждый запрос

Вопрос или проблема

С сегодняшнего утра на одном из моих серверов каждый запрос 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 или к специалистам по сетям для более детального анализа.

Оцените материал
Добавить комментарий

Капча загружается...