如何找到冲突DNS记录的来源?
当前回答
SOA记录出现在层次结构更上层的所有服务器上,域所有者对这些服务器没有控制权,它们实际上都指向域所有者控制下的一个权威名称服务器。
另一方面,权威服务器上的SOA记录本身并不是解析该域所严格需要的,它可能包含虚假信息(或隐藏的主服务器,或其他受限制的服务器),不应该依赖它来确定给定域的权威名称服务器。
您需要查询顶级域的授权服务器,以获得给定子域的可靠SOA信息。
(关于哪个服务器是授权的,可以从根名称服务器查询哪个TLD的信息)。
当您从TLD权威服务器获得关于SOA的可靠信息时,您可以查询主名称服务器本身的权威(在gTLD名称服务器上的SOA记录中!),然后继续检查您从查询NS记录中获得的所有名称服务器,以查看在任何这些服务器上的任何其他特定记录是否存在不一致。
这在linux和dig中比在nslookup/windows中工作得更好/可靠得多。
其他回答
我发现最好的方法是总是添加+trace选项:
dig SOA +trace stackoverflow.com
它也适用于托管在不同提供者中的递归CNAME。trace隐含+norecurse,因此结果只针对您指定的域。
您可以使用whois服务。在类似UNIX的操作系统上,您可以执行以下命令。或者你也可以在http://www.internic.net/whois.html上进行。
域名查询服务stackoverflow.com
您将得到以下响应。
...这里删除了文本…
域服务器排列顺序: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
您可以使用nslookup或dig来查找关于给定域的记录的更多信息。这可能会帮助您解决您所描述的冲突。
你在你的问题中使用了单数,但通常有几个权威的名称服务器,RFC 1034建议至少有两个。
除非你指的是“主名称服务器”而不是“权威名称服务器”。辅助名称服务器是权威的。
在Unix上查找某个域的名称服务器:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
要找出被列为主服务器的服务器(“主”的概念目前相当模糊,通常没有好的答案):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
为了检查名称服务器之间的差异,我倾向于使用旧的check_soa工具,Liu和Albitz在“DNS和BIND”一书中描述过(O'Reilly编辑)。源代码可以在http://examples.oreilly.com/dns5/上找到
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
在这里,两个权威名称服务器具有相同的序列号。好。
坐了一*那晚尼克斯:
$ dig -t ns <domain name>
一个简单的方法是使用在线域名工具。我最喜欢的是Domain Tools(以前是whois.sc)。我不确定他们是否可以解决冲突的DNS记录。此处以stackoverflow.com的DNS服务器为例
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM