linux bind 间歇性 dns 解析问题

linux bind 间歇性 dns 解析问题

我的 DNS 解析时不时出现问题。有时某些节点连接失败(并且 dig 也无法解析),有时其他节点连接失败,有时在没有任何配置更改的情况下,每个节点都能正确解析 IP。有问题的名称是:

dallas1.fitsaas.com
dallas2.fitsaas.com
uk1.fitsaas.com
uk2.fitsaas.com

如何检查 DNS 服务器 (ns0-ns4.fitsaas.com) 上的绑定配置是否有效?当某个名称失败时,我必须使用 dig 中的哪些工具来测试尝试解析的位置以及为什么没有执行?

答案1

看起来您拥有该fitsaas.com区域数量惊人的权威服务器:

$ dig +short fitsaas.com NS
ns1.alpnames.com.
ns3.alpnames.com.
ns1.fitsaas.com.
ns3.fitsaas.com.
ns2.alpnames.com.
ns4.alpnames.com.
ns4.fitsaas.com.
ns2.fitsaas.com.
ns0.fitsaas.com.

由于所有这些都在 NS 记录中发布,因此这些名称服务器中的每一个都应该了解有关该fitsaas.com区域的所有信息(除了可能的子区域,但这些服务器中的每一个必须至少拥有这些子区域的委托记录)。每个域信息查询fitsaas.com将有效地随机发送到这些 DNS 服务器之一,以平衡 DNS 服务器的负载。

然而,看起来只有少数人能够真正为我提供答案:

$ for i in $(seq 0 4); do echo "ns$i.fitsaas: "; dig +short dallas1.fitsaas.com @ns$i.fitsaas.com; done
ns0.fitsaas:
ns1.fitsaas:
ns2.fitsaas:
63.142.255.107
ns3.fitsaas:
63.142.255.107
ns4.fitsaas:

$ for i in $(seq 1 4); do echo "ns$i.alpnames: "; dig +short dallas1.fitsaas.com @ns$i.alpnames.com; done
ns1.alpnames:
ns2.alpnames:
ns3.alpnames:
ns4.alpnames:

其余问题名称的结果是类似的:只有ns2.fitsaas.comns3.fitsaas.com似乎准备向世界提供有关这些名称的答案。

通过替换+short命令dig选项,+noall +answer +comments我们可以获得有关出现问题的更多信息。

$ for i in $(seq 0 4); do echo "ns$i.fitsaas: "; dig +noall +answer +comments dallas1.fitsaas.com @ns$i.fitsaas.com || echo "error"; done
ns0.fitsaas:
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 62501
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
[...]

status: REFUSED表示该服务器拒绝回答我的查询。这没什么大不了的,因为这显然是一个错误,DNS解析器只会询问另一个权威DNS服务器。其他不合作的ns*.fitsaas.com名称服务器似乎也做出了同样的反应。

然而,ns*.alpnames.com名称服务器会给出不同的答案:

$ for i in $(seq 1 4); do echo "ns$i.alpnames: "; dig +noall +answer +comments dallas1.fitsaas.com @ns$i.alpnames.com; done
ns1.alpnames:
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23895
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
[...]

status: NXDOMAIN意思是“我确信这样的 DNS 名称不存在。”这是一个令人震惊的事实:当某个区域的权威 DNS 服务器表示某个名称在该区域中不存在时,这不是一个错误:这是一个有效答案,尽管答案是否定的。否定答案甚至可以缓存,尽管缓存时间通常比肯定答案短。

一旦解析器从对请求的域具有权威性的 DNS 服务器获得否定答案,它必须将其视为真理:没有这样的名称。由于给定区域的所有权威服务器都应该对该区域有完整且最新的了解,因此向另一个权威服务器征求第二意见应该只是浪费时间和资源。

这些ns*.alpnames.com服务器是否应该对您的区域具有权威性?如果不是,请联系您的 DNS 注册商,并将它们从授权 NS 记录中删除。由于这些授权记录处于 TLD 级别.com,因此您不能仅通过编辑权威 DNS 服务器中的 NS 记录来执行此操作。

由于ns0.fitsaas.comns1.fitsaas.comns4.fitsaas.com似乎拒绝外部查询,您也应该考虑将他们从代表团的 NS 记录中删除——他们似乎不愿意为公众服务,因此在代表团中提及他们毫无意义。

答案2

http://dnsviz.net/d/fitsaas.com/WkFcPg/dnssec/ ,该域名存在许多错误,一些名称服务器未正确答复(除了注册处的 NS RRSET 与该域名的权威名称服务器之间存在差异之外):

fitsaas.com zone: The server(s) responded over TCP with a malformed response or with an invalid RCODE. (37.247.116.68, 63.142.255.107)
fitsaas.com zone: The server(s) responded over UDP with a malformed response or with an invalid RCODE. (37.247.116.68, 63.142.255.107)
fitsaas.com/A: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096)
fitsaas.com/DNSKEY: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096, UDP_0_EDNS0_32768_512)
fitsaas.com/MX: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096, UDP_0_EDNS0_32768_512)
fitsaas.com/NS: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096)
fitsaas.com/SOA: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, TCP_0_EDNS0_32768_4096)
fitsaas.com/SOA: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096)
fitsaas.com/TXT: The response had an invalid RCODE (REFUSED). (37.247.116.68, 63.142.255.107, UDP_0_EDNS0_32768_4096)

您还可以使用 Zonecheck 在线工具。您的第一个行动方针应该是确保委托正确完成,即在父级(参见您的注册商)和名称服务器本身中配置相同的 RRSET。

答案3

你可以试试进入DNS识别向外界显示的任何配置问题,但我的猜测是您的一个或多个名称服务器没有正确响应查询。

相关内容