使用 $dig 获取为 DNS 区域提供服务的所有名称服务器

get all the name servers that serve a DNS zone using $dig

我想找到为 DNS 区域提供服务的所有名称服务器(假设它是 google.com)。使用 $dig,我尝试了两个不同的查询:

  1. $dig +trace google.com <type> 结果如下所示:

dig +trace

我注意到有四个 NS 记录,组合在一起,靠近查询答案的底部。

  1. $dig google.com ANY 结果如下所示:

dig ANY

一共有4条NS记录,和第一个答案完全一样

是否有其他方式获取所有名称服务器?

I want to find all the name servers that serve a DNS zone (suppose it's google.com).

向任何父名称服务器询问有关授权的详细信息:

$ dig com. NS +short|head -1
j.gtld-servers.net.
$ dig @j.gtld-servers.net. google.com. NS +noall +auth
google.com.     2d IN NS ns2.google.com.
google.com.     2d IN NS ns1.google.com.
google.com.     2d IN NS ns3.google.com.
google.com.     2d IN NS ns4.google.com.

这就是 DNS 的工作方式和设计方式:它使用 NS 记录类型的授权。

但请注意两点:

  1. 可能会发生无用的授权:您 can/should 向任何授权的名称服务器询问他们认为什么是相关的名称服务器并处理差异(不应该有任何差异,但令人惊讶的是许多区域)

  2. 结果是集合,不是列表,所以不要期望任何稳定的顺序

dig google.com ANY

绝对不要使用 ANY。尽管人们怎么想,它并不具有 ALL 的含义,并且主要被视为已弃用和过时(参见 https://www.rfc-editor.org/rfc/rfc8482