Вопрос или проблема
У меня есть существующий сервер 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-эксперт