如何找到冲突DNS记录的来源?


当前回答

我发现最好的方法是总是添加+trace选项:

dig SOA +trace stackoverflow.com

它也适用于托管在不同提供者中的递归CNAME。trace隐含+norecurse,因此结果只针对您指定的域。

其他回答

坐了一*那晚尼克斯:

$ dig -t ns <domain name>

您可以使用whois服务。在类似UNIX的操作系统上,您可以执行以下命令。或者你也可以在http://www.internic.net/whois.html上进行。

域名查询服务stackoverflow.com

您将得到以下响应。

...这里删除了文本…

域服务器排列顺序: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

您可以使用nslookup或dig来查找关于给定域的记录的更多信息。这可能会帮助您解决您所描述的冲突。

我发现对于一些领域,上面的答案不工作。我发现的最快的方法是首先检查NS记录。如果不存在,请检查SOA记录。如果不存在,则使用dig递归解析名称并获取返回的最后一个NS记录。一个符合这一点的例子是analyticsdcs.ccs.mcafee.com。

检查NS记录

host -t NS analyticsdcs.ccs.mcafee.com。

如果没有发现NS,请检查SOA记录

host -t SOA analyticsdcs.ccs.mcafee.com。

如果既不是NS也不是SOA,则执行完全递归并返回最后一个NS

挖掘+跟踪analyticsdcs.ccs.mcafee.com。| grep -w 'IN[[:space:]]*NS' | tail -1

测试名称服务器是否返回

主机analyticsdcs.ccs.mcafee.com。gtm2.mcafee.com。

SOA记录出现在层次结构更上层的所有服务器上,域所有者对这些服务器没有控制权,它们实际上都指向域所有者控制下的一个权威名称服务器。

另一方面,权威服务器上的SOA记录本身并不是解析该域所严格需要的,它可能包含虚假信息(或隐藏的主服务器,或其他受限制的服务器),不应该依赖它来确定给定域的权威名称服务器。

您需要查询顶级域的授权服务器,以获得给定子域的可靠SOA信息。

(关于哪个服务器是授权的,可以从根名称服务器查询哪个TLD的信息)。

当您从TLD权威服务器获得关于SOA的可靠信息时,您可以查询主名称服务器本身的权威(在gTLD名称服务器上的SOA记录中!),然后继续检查您从查询NS记录中获得的所有名称服务器,以查看在任何这些服务器上的任何其他特定记录是否存在不一致。

这在linux和dig中比在nslookup/windows中工作得更好/可靠得多。

你应该在谷歌上搜索的词是“权威的”,而不是“权威的”。

在Linux或Mac上,您可以使用命令whois, dig, host, nslookup或其他几个。nslookup也可以在Windows上工作。

一个例子:

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

至于额外学分:是的,这是可能的。


aryeh是绝对错误的,因为他的建议通常只会给你IP地址作为主机名。如果你使用dig,你必须查找NS记录,像这样:

dig ns stackoverflow.com

请记住,这可能会询问您的本地DNS服务器,因此可能会给出错误或过时的答案,它在其缓存中。