如何找到域名的权威名称服务器?


317

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

Answers:


413

您需要给定域名的SOA(授权开始)记录,这是使用通用的nslookup命令行工具完成此操作的方法:

command line> nslookup
> set querytype=soa
> stackoverflow.com
Server:         217.30.180.230
Address:        217.30.180.230#53

Non-authoritative answer:
stackoverflow.com
        origin = ns51.domaincontrol.com # ("primary name server" on Windows)
        mail addr = dns.jomax.net       # ("responsible mail addr" on Windows)
        serial = 2008041300
        refresh = 28800
        retry = 7200
        expire = 604800
        minimum = 86400
Authoritative answers can be found from:
stackoverflow.com       nameserver = ns52.domaincontrol.com.
stackoverflow.com       nameserver = ns51.domaincontrol.com.

产地(或主名称服务器在Windows上)行告诉你,ns51.domaincontrol是主域名服务器stackoverflow.com

在输出末尾,将列出所有权威服务器,包括给定域的备份服务器。


158
nslookup -type = soa stackoverflow.com
Ben Amada 2012年

6
但是,在Windows下,我看不到“权威答案”响应。我并排安装了Windows 8和Ubuntu 12,然后针对同一域的相同命令在Ubuntu上可以正常使用,但在Windows上则不能。
Mario Awad 2013年

1
请注意,这表明不一定显示最近对DNS配置的更改,但是dig对我来说似乎使用了(请参见下面的答案)
rogerdpack 2014年

6
如果没有权威性答案但没有权威性的答案很好,那意味着什么?
忘了

6
如果您nslookup -type=soa stackoverflow.com今天(2019-Feb)在Linux上运行,则权威部分为空。
simpleuser

174

您在问题中使用单数形式,但通常有几个权威名称服务器,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

在此,两个权威名称服务器具有相同的序列号。好。


5
dig + short并不总是能给出我期望的答案。例如,定义为的站点www.pressero.com,这是另一个站点的CNAME-dig + short SOA仅返回CNAME目标。
Ross Presser

您如何使NS具有权威性?
忘记了

1
@Overmind您不会将NS设为“权威”。如果将某个域名服务器配置为对某些域具有权威性,则意味着该域名服务器在这些域中具有本地区域文件(通常是平面文本文件,但也可以通过其他方式进行处理),并且会响应查询。为了有用,必须将它们作为其授权的每个域的父区域中的NS记录列出,否则默认情况下没有人会查询它们。
Patrick Mevzek '18

@RossPresser的答案是关于NS / SOA记录的,我怀疑您是否为这样做www.pressero.com,您可能正在考虑A记录(dig如果未指定,则为默认记录类型)。但是,如果需要,只需添加一个tail -1即可检索最终结果。
Patrick Mevzek '18

@PatrickMevzek如我在评论中所述,我使用dig +short SOA www.pressero.com。这仅返回CNAME目标,而不返回pressero.com域的SOA记录,这正是我所期望的。 tail -1无济于事;dig +short SOA只发出一条线。
罗斯·普雷斯德

40

在* nix上:

$ dig -t ns <domain name>

3
他要求提供名称服务器,而不是IPv4地址。因此,类型(-t)应该是NS,而不是
A。– bortzmeyer

1
为什么不键入SOA @bortzmeyer?
兰迪·L

嗯,因为那会返回SOA而不是NS结果?
三人节

17

我有一个DNS传播工具旨在回答此类问题。

源代码在AGPLv3下发布。

(是的,此刻界面还很基本:)

您还可以使用“主机”命令找出域的名称服务器:

[davidp @ supernova:〜] $ host -t ns stackoverflow.com
stackoverflow.com名称服务器ns51.domaincontrol.com。
stackoverflow.com名称服务器ns52.domaincontrol.com。

@cacho是真的;如果有机会,我可能会补充。
David Precious

1
它坏了,显示“ 502 Bad Gateway nginx / 1.14.2”
Marco Demaio

8

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

dig SOA +trace stackoverflow.com

它也可以与其他提供程序中托管的递归CNAME一起使用。+ trace trace暗示+ norecurse,因此结果仅适用于您指定的域。


请注意,如果您正在运行dnsmasq + trace之类的本地NS服务器,则不会返回任何信息……
Daniel Sokolowski

此命令提供53行,输出3652字节,其中大部分是随机值。某人应该如何解释输出以确定什么是权威名称服务器?
theferrit32 '19

我从下至上阅读。您要搜索SOA记录。您可以grep使SOA具有更少的数据。
亚历克斯(Alex)

6

您应该谷歌搜索的术语是“权威的”,而不是“确定的”。

在Linux或Mac,你可以使用的命令whoisdighostnslookup或数人。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服务器,因此可能会给出其缓存中包含的错误或过时的答案。


6
这些命令不是等效的。什么也没有说whois提供的信息是最新的。通常,这不是因为人们在不通知注册表或注册商的情况下更新了区域文件中的NS记录。
bortzmeyer

我从没说过它们是;)您可以随意更改区域中的NS记录,只要不更新父区域,什么都不会改变。父区域的更新通常与Whois数据的更新(至少与我的提供程序一起)并存。

5

我们已经建立了 dns查找工具,可为您提供域的权威名称服务器在一个请求及其常见的dns记录。

示例:https//www.misk.com/tools/#dns/stackoverflow.com

我们的工具通过在根名称服务器上执行实时(未缓存)dns查找,然后遵循名称服务器引用直到找到权威名称服务器来找到权威名称服务器。这与dns解析器用来获取权威答案的逻辑相同。在每个查询上选择(标识)一个随机的权威名称服务器,使您可以通过执行多个请求来查找冲突的dns记录。

您也可以通过单击上面示例中dns查找结果底部的“权威名称服务器”来查看名称服务器委托路径。

示例:https//www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


2

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

谁是stackoverflow.com

您将收到以下响应。

...此处的文字已删除...

按列出顺序的域服务器:NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

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


2
什么也没有说whois提供的信息是最新的。通常,这不是因为人们在不通知注册表或注册商的情况下更新了区域文件中的NS记录。
bortzmeyer

虽然不是问题的直接答案,但是“ whois”很有用,因为它告诉您应该在某处使用名称服务器(即使出于当前原因而不用考虑)。
SomeoneElse

1

不幸的是,大多数这些工具仅返回实际名称服务器本身提供的NS记录。为了更准确地确定哪些域名服务器实际负责一个域,您必须使用“ whois”并检查其中列出的域,或者使用“ dig [domain] NS @ [root name server]”并运行该域名服务器。递归直到获得名称服务器列表...

我希望有一个简单的命令行,您可以运行该命令以可靠且一致的格式获得该结果,而不仅仅是从名称服务器本身给出的结果。对我来说,这样做的目的是能够查询大约330个我管理的域名,以便我可以准确确定每个域指向的名称服务器(根据其注册商设置)。

有人知道在* nix上使用“ dig”或“ host”或其他命令的命令吗?


2
简单。假设该域为example.org。首先,您需要找到带有“ dig + short NS org”的“ .org”名称服务器。然后,您查询其中一个(任何人,他们都是权威的)。让我们选择d0.org.afilias-nst.org。您使用“ dig @ d0.org.afilias-nst.org NS example.org”进行查询。
bortzmeyer

默认情况下,解析程序返回域本身列出的名称服务器这一事实是一件好事。那是权威信息。父区域中的授权不具有权威性。
bortzmeyer

而Whois的指针是一条红色的鲱鱼。Whois名称服务器信息通常是陈旧的。权威资源是DNS。
点钟

1
Whois完全是任意的。您在whois列表中看到的值与DNS没有技术联系。它通常已经过时或完全正确。我要说的是,几乎不应该信任whois数据。有“瘦”和“厚”注册表。.com和.net是两个众所周知的厚注册表。这些注册表包含所有DNS数据,并可能会信任whois响应。几乎其他所有注册管理机构都是“物”,并经营着自己的Whois注册管理机构。此数据通常是错误的。
标记

1

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

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

您需要查询对顶级域具有权威性的服务器,以获取给定子域的可靠SOA信息。

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

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

与nslookup / windows相比,这一切在linux和dig上都能更好/可靠地工作。


0

一种简单的方法是使用在线域工具。我最喜欢的是域工具(以前是whois.sc)。我不确定他们是否可以解决冲突的DNS记录。例如,用于stackoverflow.com的DNS服务器是

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM

0

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

  1. 检查NS记录

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

  1. 如果未找到NS,请检查SOA记录

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

  1. 如果既不是NS也不是SOA,请执行完全递归并获取最后返回的NS

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. 测试名称服务器返回的作品

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.