Сервер PowerDNS Recursor перестал разрешать примерно половину всех доменов прошлой ночью; я создал новый сервер, и он делает то же самое.

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

У меня есть существующий сервер PowerDNS Recursor 4.0.4, работающий на Debian Jessie 8 (я знаю, знаю, он устарел… я собираюсь это исправить). Он обрабатывает все DNS-запросы для моей домашней лабораторной сети. У него довольно простая конфигурация, и он работал без перебоев в течение буквальных лет. Он также настроен для проверки и успешно проверяет все DNSSEC.

Прошлой ночью, вскоре после полуночи, он перестал разрешать около половины всех доменов по всему миру, возвращая SERVFAIL для них. Иногда он будет разрешать основной домен (например, athenahealth.com), но не поддомен (например, 20785-1.portal.athenahealth.com). Иногда он не будет разрешать основной домен (например, serverfault.com или askubuntu.com). Я не смог найти никакой закономерности, и, как бы я ни пытался изменить конфигурацию (включая полное отключение DNSSEC), это не решает проблему.

Моя следующая мысль заключалась в том, что мне нужно обновить PowerDNS Recursor, но я не мог этого сделать из-за того, как стар мой DNS-сервер. Поэтому я создал абсолютно новый сервер с PowerDNS Recursor 5.1.3 на Ubuntu 24.04.1. Опять же, конфигурация простая. Вот основной файл:

$ cat /etc/powerdns/recursor.conf 
dnssec:
  # validation: process # по умолчанию
  trustanchorfile: /usr/share/dns/root.key
recursor:
  hint_file: /usr/share/dns/root.hints
  include_dir: /etc/powerdns/recursor.d
#incoming:
 # listen:
 # - 127.0.0.1 # по умолчанию
#outgoing:
 # source_address:
 # - 0.0.0.0 # по умолчанию

И вот файл в recursor.d:

$ cat /etc/powerdns/recursor.d/me.yml 
dnssec:
  validation: off # проверка
#  log_bogus: true
incoming:
  listen:
    - 10.20.30.76:53
logging:
  common_errors: true
  facility: 1
  loglevel: 6
  quiet: true
  trace: fail
recursor:
  auth_zones:
    - zone: my-domain-1.com
      file: /etc/powerdns/my-domain-1.com.zone
  forward_zones:
    - zone: my-domain-2.com
      forwarders:
        - 10.20.31.2
  setgid: pdns
  setuid: pdns
  socket_dir: /var/run
  write_pid: true
webservice:
  address: 10.20.30.76
  allow_from:
    - 10.20.30.0/24
    - 172.24.52.0/24
  api_key: loremipsum
  password: foobarbazqux
  port: 8080

Эта конфигурация идентична моей старой конфигурации PowerDNS Recursor, за исключением того, что DNSSEC отключен, чтобы попробовать заставить его работать. Если я вручную использую dig (я обожаю dig) askubuntu.com с самого начала, я легко нахожу ответ:

# Использую i.root-servers.net это 192.36.148.17
$ dig @192.36.148.17 com NS

; <<>> DiG 9.10.6 <<>> @192.36.148.17 com NS
; (1 сервер найден)
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2217
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 21

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;com.               IN  NS

;; ANSWER SECTION:
com.            136670  IN  NS  d.gtld-servers.net.
com.            136670  IN  NS  c.gtld-servers.net.
com.            136670  IN  NS  k.gtld-servers.net.
com.            136670  IN  NS  f.gtld-servers.net.
com.            136670  IN  NS  i.gtld-servers.net.
com.            136670  IN  NS  b.gtld-servers.net.
com.            136670  IN  NS  l.gtld-servers.net.
com.            136670  IN  NS  a.gtld-servers.net.
com.            136670  IN  NS  e.gtld-servers.net.
com.            136670  IN  NS  m.gtld-servers.net.
com.            136670  IN  NS  j.gtld-servers.net.
com.            136670  IN  NS  h.gtld-servers.net.
com.            136670  IN  NS  g.gtld-servers.net.

;; ADDITIONAL SECTION:
b.gtld-servers.net. 43604   IN  A   192.33.14.30
b.gtld-servers.net. 71837   IN  AAAA    2001:503:231d::2:30
l.gtld-servers.net. 44115   IN  A   192.41.162.30
l.gtld-servers.net. 74612   IN  AAAA    2001:500:d937::30
a.gtld-servers.net. 59944   IN  A   192.5.6.30
a.gtld-servers.net. 52029   IN  AAAA    2001:503:a83e::2:30
e.gtld-servers.net. 11582   IN  A   192.12.94.30
e.gtld-servers.net. 63219   IN  AAAA    2001:502:1ca1::30
m.gtld-servers.net. 27782   IN  A   192.55.83.30
m.gtld-servers.net. 50020   IN  AAAA    2001:501:b1f9::30
j.gtld-servers.net. 39663   IN  A   192.48.79.30
h.gtld-servers.net. 79936   IN  A   192.54.112.30
g.gtld-servers.net. 57527   IN  A   192.42.93.30
g.gtld-servers.net. 63219   IN  AAAA    2001:503:eea3::30
d.gtld-servers.net. 44435   IN  A   192.31.80.30
d.gtld-servers.net. 10633   IN  AAAA    2001:500:856e::30
c.gtld-servers.net. 50185   IN  A   192.26.92.30
k.gtld-servers.net. 32146   IN  A   192.52.178.30
i.gtld-servers.net. 48002   IN  A   192.43.172.30
i.gtld-servers.net. 27967   IN  AAAA    2001:503:39c1::30

$ dig @192.33.14.30 askubuntu.com NS

; <<>> DiG 9.10.6 <<>> @192.33.14.30 askubuntu.com NS
; (1 сервер найден)
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46168
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 13

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;askubuntu.com.         IN  NS

;; ANSWER SECTION:
askubuntu.com.      86400   IN  NS  sureena.ns.cloudflare.com.
askubuntu.com.      86400   IN  NS  damian.ns.cloudflare.com.

;; ADDITIONAL SECTION:
damian.ns.cloudflare.com. 48087 IN  A   172.64.35.50
damian.ns.cloudflare.com. 48087 IN  A   162.159.44.50
damian.ns.cloudflare.com. 48087 IN  A   108.162.195.50
damian.ns.cloudflare.com. 13178 IN  AAAA    2803:f800:50::6ca2:c332
damian.ns.cloudflare.com. 13178 IN  AAAA    2606:4700:58::a29f:2c32
damian.ns.cloudflare.com. 13178 IN  AAAA    2a06:98c1:50::ac40:2332
sureena.ns.cloudflare.com. 38809 IN A   108.162.194.126
sureena.ns.cloudflare.com. 38809 IN A   172.64.34.126
sureena.ns.cloudflare.com. 38809 IN A   162.159.38.126
sureena.ns.cloudflare.com. 32427 IN AAAA    2a06:98c1:50::ac40:227e
sureena.ns.cloudflare.com. 32427 IN AAAA    2803:f800:50::6ca2:c27e
sureena.ns.cloudflare.com. 32427 IN AAAA    2606:4700:50::a29f:267e

$ dig @172.64.35.50 askubuntu.com A

; <<>> DiG 9.10.6 <<>> @172.64.35.50 askubuntu.com A
; (1 сервер найден)
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35705
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;askubuntu.com.         IN  A

;; ANSWER SECTION:
askubuntu.com.      300 IN  A   172.64.150.156
askubuntu.com.      300 IN  A   104.18.37.100

Идеально. Но если я спрошу либо мой существующий сервер PowerDNS Recursor 4.0.4, либо мой новый сервер PowerDNS Recursor 5.1.3, я получаю SERVFAIL:

$ dig @10.20.30.76 askubuntu.com A

; <<>> DiG 9.10.6 <<>> @10.20.30.76 askubuntu.com A
; (1 сервер найден)
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 58213
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; OPT=15: 00 16 64 65 6c 65 67 61 74 69 6f 6e 20 63 6f 6d ("..delegation com")
;; QUESTION SECTION:
;askubuntu.com.         IN  A

Строка OPT=15 с какой-то подписью и delegation com интересна. Это не происходит на каждом домене, который не удается разрешить, поэтому это может быть ложный след (и это меняется… например, повторный запуск этого же запроса привел к OPT=15: 00 16 64 65 6c 65 67 61 74 69 6f 6e 20 61 73 6b 75 62 75 6e 74 75 2e 63 6f 6d ("..delegation askubuntu.com")).

Вот трассировка ошибки PowerDNS Recursor 5.1.3 для неудачного поиска askubuntu.com: https://gist.github.com/beamerblvd/d8fa24bdf1037e2a670f8e331b7e4905

К вашему сведению, я использую Comcast Business Class с делегацией из 5 статических IP-адресов.

Что я делаю не так?

Ответ или решение

Уважаемый коллега,

Вы столкнулись с проблемой в работе PowerDNS Recursor, который перестал корректно обрабатывать половину DNS-запросов, возвращая ошибку SERVFAIL. Это достаточно распространённая ситуация, которая может вызывать много неудобств. Давайте разберём возможные причины и пути решения данной проблемы.

Проблема с DNSSEC

Даже после отключения DNSSEC в конфигурации, могут оставаться проблемы с валидацией DNS-записей, потому что при запросах серверы могут ожидать правильные цепочки сертификации. Проверьте актуальность файла root.key для уверенности в том, что у вас актуальные доверенные ключи.

Некорректные настройки конфигурации

На ваших серверах конфигурация кажется достаточно простой, но стоит убедиться, что файл root.hints актуален и содержит последние данные о корневых DNS-серверах. Несоответствующая информация может приводить к некорректной работе резолвера.

Влияние Коммуникаций (Network Issues)

В связи с тем, что вы используете интернет от Comcast, возможно, их инфраструктура влияет на качественное разрешение доменных имён. Попробуйте протестировать работу с другими ISP или используйте публичные DNS-рекурзоры (например, Google DNS 8.8.8.8) для определения, является ли проблема сетевой.

Логи и Трассировка

Изучите внимательно логи PowerDNS, а также результаты трассировки, чтобы найти любые скрытые ошибки или предупреждения. Особенно обращайте внимание на строки, связанные с delegation, как, например, в результате для askubuntu.com, который вы предоставили. Подробная информация может содержать ключевые данные, указывающие на проблему.

Кэш и Временные Файлы

Попробуйте очистить DNS-кэш или временные файлы. В некоторых случаях старые или повреждённые записи могут вызывать ошибки SERVFAIL.

Использование Альтернативных Настроек

Попробуйте настроить временно PowerDNS на другом порту или IP, чтобы исключить конфликты или сетевые проблемы. Еще один вариант — заменить временно PowerDNS на другой DNS-сервер для более детальной проверки сети и системы.

Выводы и следующие шаги

Рекомендую систематизировать подход к решению проблемы, начиная с изучения логов и трассировки, проверки актуальности ваших ключей DNSSEC, а также возможных сетевых проблем. Если ни один из перечисленных методов не помогает, возможно, требуется обратиться к документированию PowerDNS или сообществу для получения дополнительных советов и патчей.

Буду рад, если эти советы помогут вам восстановить корректную работу вашего DNS-сервера.

С уважением,
[Ваше имя]
IT-эксперт

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

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