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

有帮助吗?

解决方案

您需要给定域名的 SOA(授权起始)记录,这就是您使用通用可用的 查找 命令行工具:

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.

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

其他提示

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

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

在 *nix 上:

$ dig -t ns <domain name>

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

源代码根据 AGPLv3 发布。

(是的,目前界面相当基本:))

您还可以使用“host”命令查找域的名称服务器:

[davidp@supernova:~]$ host -t ns stackoverflow.com
stackoverflow.com name server ns51.domaincontrol.com.
stackoverflow.com name server ns52.domaincontrol.com.

我发现始终添加 +trace 选项的最佳方法:

dig SOA +trace stackoverflow.com

它也适用于不同提供商托管的递归 CNAME。+trace 跟踪意味着 +norecurse,因此结果仅适用于您指定的域。

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

在 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 服务器,因此可能会给出缓存中错误或过时的答案。

我们建立了一个 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

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

whois stackoverflow.com

您将得到以下响应。

...此处删除文字...

域服务器按列出的顺序排列:ns51.domaincontrol.com ns52.domaincontrol.com

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

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

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

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

SOA 记录存在于层次结构上方的所有服务器上,域所有者对其没有控制权,并且它们实际上都指向域所有者控制下的一个权威名称服务器。

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

您需要查询该内容的权威服务器 顶级域名 获取给定子域的可靠 SOA 信息。

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

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

这一切在 linux 和 dig 上比在 nslookup/windows 上工作得更好/更可靠。

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

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top