我的主名称服务器中有一个有趣的错误。我运行的是 Fedora Linux,带有 bind 9.3.4。由于服务器太旧,计划更换它,但与此同时我必须让它正常工作。问题是我的名称服务器无法解析 digbypines.ca。digbypines.ca 的权威名称服务器是 204.15.193.162 和 204.15.193.163。我的名称服务器位于 24.222.7.12。
防火墙错误(传出的 DNS 连接被 SNAT 到端口 53)导致无法联系 digbypines.ca 的名称服务器。因此,如果我通过 ssh 进入位于 24.222.7.12 的名称服务器并运行
dig @204.15.193.162 digbypines.ca
我会得到
;; connection timed out; no servers could be reached
如果我尝试通过 53 端口远程登录到 204.15.193.162,也会超时。在这种情况下,我删除了 SNAT 防火墙规则,现在上述命令可以正常工作。但有趣的是,下面是部分内容。
由于某种原因,我无法让 bind 与 digbypine 的名称服务器通信!即使修复了 SNATting,它仍然不起作用。
运行“dig +trace digbypines.ca”表明我将获得 NS 记录,但它拒绝解析它们:
挖掘 +trace digbypines.ca
; <<>> DiG 9.3.4-P1 <<>> +trace digbypines.ca ;; 全局选项:printcmd . 516709 IN NS
i.root-servers.net. . 516709 IN NS
j.root-servers.net. . 516709 IN NS k.root-servers.net .
. 516709 IN NS l.root-servers.net. . 516709 IN NS m.root-servers.net. . 516709 IN NS a.root-servers.net. . 516709 IN NS b.root-servers.net. . 516709 IN NS c.root-servers.net. . 516709 IN NS d.root-servers.net. . 516709 IN NS e.root-servers.net. . 516709 IN NS f.root-servers.net。。516709 IN NS g.root-servers.net。。516709 IN NS h.root-servers.net。;;在 1 毫秒内从 192.168.0.12#53(192.168.0.12) 接收到 408 个字节ca. 172800 IN NS l.ca-servers.ca. ca. ca.
172800 IN NS sns-pb.isc.org. ca. 172800 IN NS m.ca-servers.ca. ca. ca. 172800 IN NS c.ca-servers.ca. ca. ca. 172800 IN NS a.ca-servers.ca. ca.
ca.
172800 IN NS j.ca-servers.ca. ca. ca. 172800 IN NS f.ca-servers.ca. ca. ca. 172800 IN NS
k.ca-servers.ca . ca. ca. 172800 IN NS z.ca-servers.ca. ca. 172800 IN NS e.ca-servers.ca. ;; 120 毫秒内从 192.36.148.17#53(i.root-servers.net) 接收到 430 字节digbypines.ca。86400 IN NS ns2.extremehosting.ca。digbypines.ca。86400 IN NS ns1.extremehosting.ca。;;在 31 毫秒内从 156.154.101.4#53(l.ca-servers.ca) 接收到 114 个字节
dig:无法获取“ns2.extremehosting.ca”的地址:失败
我有点不知所措。我打电话给他们的支持小组,他们向我保证我的 IP 没有被封锁。我真的不知道如何在命令行上挖掘他们的名称服务器,但无法通过 bind 进行相同的操作。
我也尝试过重启 bind、网络,以及运行“rndc flush”。但都无济于事。
我能在家里解析 digbypines.ca 以及 ns2.extremehosting.ca 和 ns1.extremehosting.ca,所以我不确定发生了什么。
我也可以dig @204.15.193.163 ns2.extremehosting.ca
从我的名称服务器的命令行成功运行。
答案1
好吧,我解决了。原来在我之前的系统管理员已将所有传出查询强制到端口 53。extremehosting.ca 的名称服务器似乎阻止了端口 53 上的传入连接(这些连接源自端口 53),因此我无法与他们通信。
从 named.conf 中删除以下行:
query-source port 53;
query-source-v6 port 53;
并确认防火墙不会引起任何进一步的问题,名称解析再次有效。
另外,我发现了这篇文章这有助于确定名称解析器的源端口行为非常有帮助。解决此 DNS 问题的副作用是,我还修补了一个潜在的名称缓存中毒漏洞。
感谢所有发表评论的人。
答案2
嗯,当您使用 nslookup 与他们的服务器通信时会发生什么?IE:
$ nslookup
>server 204.15.193.162
Default server: 204.15.193.162
Address: 204.15.193.162#53
> www.digbypines.ca
Server: 204.15.193.162
Address: 204.15.193.162#53
www.digbypines.ca canonical name = digbypines.ca.
Name: digbypines.ca
Address: 204.15.193.162
>
这应该让你知道这是否是 BIND 问题或防火墙问题。