NS 记录是如何解析的?

NS 记录是如何解析的?

注意:我知道粘合记录,并且 DNS 服务器仅在 ns 服务器域与您发送查询的域相同的情况下才使用它们。

现在我的问题是:假设您有 example.com,其 NS 记录为ns1.example.org(与 不同的域example.com)。在某个时候,解析器还需要解析并找到 的 IP 地址ns1.example.org。我的问题是,它如何做到这一点(没有粘合记录)?

我猜它会重新开始这个过程,首先转到根 DNS,然后转到 DNS .org,然后到达名称服务器example.org...但是等等,名称服务器有名称服务器吗?如果是,那么这将陷入一个巨大的无限循环,因为现在您需要找到 NS 记录example.org并转到那里等。

我的观点是,这些名称服务器的 IP 地址必须存储在某个地方。我听人说,只有当您拥有example.com并且其 NS 服务器是ns1.example.com同一个域时,才会使用粘合记录。如果是不同的域,那么我读到有该域的解析才能找到 IP...但这意味着名称服务器ns1.example.org有自己的名称服务器,这真的没有意义。

答案1

委托给不同域中的名称服务器实际上并没有太大变化 - 它只是让解析器做更多的工作。

在您提供的示例中,example.org域名必须可以正常运行才能example.com成功解析名称 - 为什么它没有自己的正常运行的名称服务器或粘合记录?

您似乎想象的无限循环失败场景仅在您创建不可能的委派循环时才会发挥作用,就像您尝试委托ns1.example.org回下的名称服务器一样example.com

答案2

  • 解析器需要 www.example.com 的 IP(查询“A www.example.com。”)
  • 它没有缓存,因此需要向具有权威性的 DNS 服务器请求 example.com
  • 由于没有更好的办法,它向其中一个预先配置的根服务器发出请求
  • 我们不会得到最终答复,而是获悉 com 的权威服务器,例如 a.gtld-servers.net;尽管这些服务器不在 com 下,但根服务器会添加胶水记录;因此我们知道 a.gtld-servers.net 的 IP
  • 因此,我们向 a.gtld-servers.net 询问“A www.example.com”
  • 同样,a.gtld-servers 不知道答案,但告诉我们 ns.example.org 是负责任的;通常,此时是胶水记录,但我们假设这不是这种情况
  • 我们开始一个子查询“A ns.example.org”
  • 如上所述,根服务器将我们引导到 org 的 DNS 服务器,例如 a0.org.afilieas-nst.info;在糟糕的世界中,我们必须从头开始才能找到这个家伙,但在这个级别,我们获取胶水记录
  • 因此我们可以向 a0.org.afilieas-nst.info 询问 ns.example.org
  • 我们了解到,我们应该向 a.iana-servers.net 询问有关 example.org 的信息,但不幸的是没有胶水
  • 因此我们询问根服务器(因为我们同时了解了 com. 和 org.,但还没有了解 net.)
  • 回复告诉我们 egagtld-servers-net 负责网络。我们还获得了 glue,但我们已经知道 a.gtld-servers.net 的 ip
  • 我们询问 a.gtld-servers.net “A a.inana-servers.net”,并了解 iana-servers.net 的 NS 记录;其中三个位于 iana-servers.net 内(并带有 glue),第四个服务器是 ns.icann.org
  • 由于某些愚蠢的原因,我们忽略了粘合记录(或者这些名称服务器无法访问),因此需要解析 ns.icann.org;好吧,我们已经知道我们应该在 a0.org.afilieas-nst.info 中查询“A ns.icann.org”
  • 有趣的是,返回的名称服务器与上面的相同:三个来自 icann-servers.net 和 ns.icann.org 本身;这次 ns.icann.org 带有胶水
  • 现在我们知道了 ns.icann.org 的 IP,可以询问它“A a.iana-servers.net”并获取其地址
  • 所以现在我们终于可以向 a.iana-servers.net 请求“A ns.example.org”并获取一个 IP(当然,现实中不是这样)
  • 我们可以在该ip下向ns.example.org询问“A www.example.com”,最终解决了我们原来的问题

在此过程中,我们了解了很多有关几个重要区域的知识,例如 com、net 和 org。通过缓存这些信息,我们的下一个查询将少走很多弯路...

答案3

您说得对,名称服务器的 IP 地址存储在某个地方 - 没有 DNS 您无法解析任何 FQDN。这就是为什么您的网络配置中有 IP 地址,而不是名称。

根 DNS 服务器由每个 DNS 服务器中配置的 IP 地址引用。因此,当 DNS 服务器收到对其不认识的域名的查询时,它会

  1. 查询其配置的 DNS
  2. 查询根 DNS,它不会回答相应的 IP,但会回答哪个名称服务器处理根域名(例如,.com),然后该名称服务器可以回答哪个名称服务器处理特定域(例如,nasa.com)

您可以使用以下方式执行跟踪请求进行一些探索:

dig +trace www.google.com

相关内容