如何修复使用 Pihole 和本地 Bind9 DNS 时出现的周期性 DNS 错误

如何修复使用 Pihole 和本地 Bind9 DNS 时出现的周期性 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”也会开始返回响应。然后过了一会儿,它又无法正常工作了。

以下是 host 和 dig 命令的完整输出。

造成该问题的原因是什么?

我该如何修复它?或者进一步调试?

Bind9 似乎没有产生任何相关的日志详细信息。

有关我的环境的详细信息:

在我的 LAN 上我有两个 DNS 服务器:主 DNS 和 Pihole。

主 DNS 服务器是运行在 Debian 上的 bind9 服务器。它充当 LAN 的 DNS 服务器,允许解析本地地址以及上游 DNS。网络上的大多数服务器和设备都使用此 DNS 服务器。主 DNS 服务器的地址为 10.0.0.50。

我还有一个额外的 DNS 服务器:pihole。这是一台运行 pihole 版本 5.8.1 的 raspberrypi 3。Pihole 充当 DNS 服务器,可阻止对许多广告网络的 DNS 请求。

Pihole 配置为使用主 DNS 服务器 (10.0.0.50) 作为上游 DNS 服务器。这样,任何未明确列在 pihole 自身黑名单中的 DNS 请求都会立即转发到主 DNS 服务器。Pihole 地址为 10.0.0.52。

客户端在其 /etc/resolv.conf 中配置了两个名称服务器:

nameserver 10.0.0.52
nameserver 10.0.0.50

所有客户端都运行 Linux。主要是 Debian 10 和 11。

我已经验证过 pihole 没有任何与 login.live.com 匹配的黑名单过滤器。所以不是这个原因。我也尝试过暂时禁用 pihole。但问题仍然存在。

客户端上 dig 和 host 命令的完整输出:

(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。然后它失败了。

相关内容