最近几天我遇到了一个奇怪的情况,我将注册商的 DNS 记录指向我自己的 DNS 服务器,但 DNS 没有传播。我以前曾成功地做到过这一点,但直到现在我还觉得这很微不足道。因此,当域名传播时间超过 2 天时,我决定与我的注册商对质,他向我指出了http://leafdns.com其中规定如下:
ns1.mydomain.com - 名称服务器对 mydomain.com 不具有权威性 ns2.mydomain.com - 名称服务器对 mydomain.com 不具有权威性 父名称服务器列出的所有名称服务器均不具有对您的域的响应性和权威性。此错误是致命的,并且域无法解析。
我很困惑为什么会发生这种情况,所以我访问了其他服务,例如https://viewdns.info/dnsreport/其中指出了这一点:
检查所有名称服务器是否响应:哎呀!父服务器中列出的以下名称服务器未响应 DNS 请求: ns1.mydomain.com ns2.mydomain.com
名称服务器允许 TCP 连接:哎呀!我们无法在端口 53 上使用 TCP 连接到以下名称服务器: ns1.mydomain.com ns2.mydomain.com
我开始认为我的防火墙出了问题,所以从昨天开始我一直在搞乱它,直到我允许所有流量通过才发现上述报告没有任何变化!发生了什么事?唯一剩下的就是 BIND。 BIND 一定有问题。为什么不能沟通呢?我之前确实快速查看过 syslog,但没有发现任何错误。
所以我检查了 BIND 状态,重新启动并再次检查状态。没什么可写的。
答案1
所以我决定清空 syslog 并重新启动 BIND。我逐行检查系统日志,看到了这一点,这引起了我的注意:
/var/lib/bind/mydomain.com.hosts:20: unknown RR type 'mydomain.com.'
zone mydomain.com/IN: loading from master file /var/lib/bind/mydomain.com.hosts failed: unknown class/type
zone mydomain.com/IN: not loaded due to errors.
all zones loaded
我打开 /var/lib/bind/mydomain.com.hosts ,果然第 20 行出现了阻止 BIND 加载我的 ns1 区域的问题。
mydomain.com. IN CAA 0 issue "letsencrypt.org" mydomain.com. IN CAA 0 issuewild ";"
删除这一行就解决了所有问题,区域加载并且 BIND 再次开始与他的同伴交谈。
原因是这条线定义错误。
该行应该定义在 2 个单独的行上,如下所示:
mydomain.com. IN CAA 0 issue "letsencrypt.org" mydomain.com. IN CAA 0 issuewild ";"
希望这对其他人有一些帮助。
更新:经过进一步调查,我发现这是由 Virtualmin 中的一个错误引起的,正如我在此错误报告中概述的那样:https://www.virtualmin.com/node/66527。
如果您在 Virtualmin>系统设置>服务器模板>默认设置>BIND DNS 域>新域的 BIND DNS 记录中指定 2 行或更多行,则每当您创建新域时,这些行都会合并为一行。这就是问题的根本原因。