Как исправить периодические ошибки DNS при использовании Pihole и локального Bind9 DNS
Краткое описание проблемы:
Клиенты в моей сети не могут разрешить login.live.com. При запуске «host login.live.com» они получают:
$ host login.live.com
;; communications error to 10.0.0.52#53: end of file
;; Connection to 10.0.0.50#53(10.0.0.50) for login.live.com failed: timed out.
;; communications error to 10.0.0.52#53: end of file
Если я затем выполню команду «dig login.live.com», он получит действительный ответ, и сразу после этого «host login.live.com» также начнет возвращать ответ. Затем через некоторое время он снова не работает.
Полный вывод команд хоста и копания ниже.
Что может быть причиной этой проблемы?
Как это исправить? Или даже отладить его дальше?
Bind9, похоже, не выдает никаких важных данных журнала.
Подробности о моем окружении:
В моей локальной сети есть два DNS-сервера: основной DNS и Pihole.
Основной DNS-сервер — это сервер Bind9, работающий на Debian. Он действует как DNS-сервер для локальной сети и позволяет разрешать локальные адреса, а также восходящий DNS. Этот DNS-сервер используется большинством серверов и устройств в сети. Адрес основного DNS-сервера — 10.0.0.50.
У меня также есть дополнительный DNS-сервер: pihole. Это Raspberrypi 3 с версией Pihole 5.8.1. Pihole действует как DNS-сервер, который блокирует DNS-запросы ко многим рекламным сетям.
Pihole настроен на использование основного DNS-сервера (10.0.0.50) в качестве восходящего DNS-сервера. Таким образом, любой DNS-запрос, который явно не находится в черном списке Pihole, немедленно перенаправляется на основной DNS-сервер. Адрес Пихола — 10.0.0.52.
Клиенты настроены с двумя серверами имен в их /etc/resolv.conf:
nameserver 10.0.0.52
nameserver 10.0.0.50
Все клиенты работают под управлением Linux. В основном Debian 10 и 11.
Я убедился, что в pihole нет фильтра черного списка, соответствующего логину.live.com. Так что это не то. Я также попробовал временно отключить pihole. Но проблема сохраняется.
Полный вывод команд dig и хоста на клиенте:
(root@muscat) (2022-01-20 14:31:59) [0]
~# host login.live.com
;; communications error to 10.0.0.52#53: end of file
;; Connection to 10.0.0.50#53(10.0.0.50) for login.live.com failed: connection refused.
(root@muscat) (2022-01-20 14:32:16) [0]
~# dig login.live.com
; <<>> DiG 9.16.22-Debian <<>> login.live.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52488
;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 10, ADDITIONAL: 11
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 0d2944eb18058a23735dde5861e96462433b0a9093dc2ce8 (good)
;; QUESTION SECTION:
;login.live.com. IN A
;; ANSWER SECTION:
login.live.com. 297 IN CNAME login.msa.msidentity.com.
login.msa.msidentity.com. 297 IN CNAME www.tm.lg.prod.aadmsa.akadns.net.
www.tm.lg.prod.aadmsa.akadns.net. 57 IN CNAME prda.aadg.msidentity.com.
prda.aadg.msidentity.com. 297 IN CNAME www.tm.a.prd.aadg.akadns.net.
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.70
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.1
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.135
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.74
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.9
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.72
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.7
www.tm.a.prd.aadg.akadns.net. 297 IN A 20.190.160.133
;; AUTHORITY SECTION:
akadns.net. 5125 IN NS a11-129.akadns.net.
akadns.net. 5125 IN NS a7-131.akadns.net.
akadns.net. 5125 IN NS a28-129.akagtm.org.
akadns.net. 5125 IN NS a18-128.akagtm.org.
akadns.net. 5125 IN NS a3-129.akadns.net.
akadns.net. 5125 IN NS a12-131.akagtm.org.
akadns.net. 5125 IN NS a1-128.akadns.net.
akadns.net. 5125 IN NS a13-130.akagtm.org.
akadns.net. 5125 IN NS a5-130.akagtm.org.
akadns.net. 5125 IN NS a9-128.akadns.net.
;; ADDITIONAL SECTION:
a1-128.akadns.net. 5125 IN A 193.108.88.128
a3-129.akadns.net. 5125 IN A 96.7.49.129
a5-130.akagtm.org. 48773 IN A 95.100.168.130
a7-131.akadns.net. 5125 IN A 23.61.199.131
a9-128.akadns.net. 5125 IN A 184.85.248.128
a11-129.akadns.net. 5125 IN A 84.53.139.129
a12-131.akagtm.org. 48773 IN A 184.26.160.131
a13-130.akagtm.org. 48773 IN A 2.22.230.130
a18-128.akagtm.org. 48773 IN A 95.101.36.128
a28-129.akagtm.org. 48773 IN A 95.100.173.129
;; Query time: 12 msec
;; SERVER: 10.0.0.52#53(10.0.0.52)
;; WHEN: Thu Jan 20 14:32:18 CET 2022
;; MSG SIZE rcvd: 721
(root@muscat) (2022-01-20 14:32:18) [0]
~# host login.live.com
login.live.com is an alias for login.msa.msidentity.com.
login.msa.msidentity.com is an alias for www.tm.lg.prod.aadmsa.akadns.net.
www.tm.lg.prod.aadmsa.akadns.net is an alias for prda.aadg.msidentity.com.
prda.aadg.msidentity.com is an alias for www.tm.a.prd.aadg.akadns.net.
www.tm.a.prd.aadg.akadns.net has address 20.190.160.133
www.tm.a.prd.aadg.akadns.net has address 20.190.160.7
www.tm.a.prd.aadg.akadns.net has address 20.190.160.72
www.tm.a.prd.aadg.akadns.net has address 20.190.160.9
www.tm.a.prd.aadg.akadns.net has address 20.190.160.74
www.tm.a.prd.aadg.akadns.net has address 20.190.160.135
www.tm.a.prd.aadg.akadns.net has address 20.190.160.1
www.tm.a.prd.aadg.akadns.net has address 20.190.160.70
(root@muscat) (2022-01-20 14:32:20) [0]
~# host login.live.com
;; communications error to 10.0.0.52#53: end of file
;; Connection to 10.0.0.50#53(10.0.0.50) for login.live.com failed: connection refused.
(root@muscat) (2022-01-20 14:33:37) [0]
~# host login.live.com
;; communications error to 10.0.0.52#53: end of file
;; Connection to 10.0.0.50#53(10.0.0.50) for login.live.com failed: connection refused.
(root@muscat) (2022-01-20 14:34:05) [0]
~#
1 ответ
Хорошо. Итак, наконец-то решили эту проблему. Проблема заключалась в том, что брандмауэр DNS-сервера не разрешал TCP/53. В большинстве случаев это работает, поскольку по умолчанию DNS работает через UDP. Однако в данном конкретном случае размер ответа превышает максимальный размер, разрешенный для пакетов DNS/udp (где-то между 512–580 байтами), поэтому хост переключается на TCP. Тогда это терпит неудачу.