名称服务器究竟是如何处理未知子域的?

Han*_*etz 7 domain-name-system

我拥有一个域名econemon.com。以下是 DNS 条目的摘录(为简洁起见,省略了一些记录):

econemon.com.       1800    IN  NS  ns.stratoserver.net.
econemon.com.       1800    IN  NS  ns2.stratoserver.net.
econemon.com.       1800    IN  A   85.214.92.48
Run Code Online (Sandbox Code Playgroud)

这些名称服务器来自我的提供商,据我所知,它们是我域的权威服务器。

现在,当我向其中之一询问不存在的子域的地址记录时,它会以我的服务器的地址作为响应,如下所示:

$ host -t A nosuchdomain.econemon.com ns.stratoserver.net
Using domain server:
Name: ns.stratoserver.net
Address: 81.169.163.40#53
Aliases: 

nosuchdomain.econemon.com has address 85.214.92.48
Run Code Online (Sandbox Code Playgroud)

当然,这正是我想要的,以便拥有虚拟主机等。现在,假设我添加了一个条目

econemon.com.    IN  NS  ns.econemon.com
Run Code Online (Sandbox Code Playgroud)

ns.econemon.com列表的正确 A 记录,并且该名称服务器实际上对某些子域有不同的 A 记录,会发生什么?

  • subdomain.econemon.com根据您询问的名称服务器,请求会产生不同的地址吗?(我想会的。)
  • 如果是这样,如果我的 DNS 出现故障,这实际上可能有助于回退到“主服务器”,但是如何让客户端在它启动时使用我的名称服务器?
  • 这会破坏客户端的缓存吗?(大概。)

(注:这与我的另外两个 问题有关

tom*_*drz 4

DNS 查找是连续的,从末尾开始。假设缓存为空,则 MISSING.DOMAIN.COM 的查找将如下所示......

  • DNS 客户端将从 DNS 服务器请求 MISSING.DOMAIN.COM。
  • DNS 服务器向“根”DNS 询问 MISSING.DOMAIN.COM 域,并获取 COM 域的名称服务器。
  • DNS 服务器向 COM 名称服务器请求 MISSING.DOMAIN.COM,并返回 DOMAIN.COM 域的名称服务器。
  • DNS 服务器向 DOMAIN.COM 名称服务器询问 MISSING.DOMAIN.COM。DOMAIN.COM 名称服务器没有答案,因此它会根据其配置报告 DOMAIN.COM 的地址。
  • 如果存在MISSING.DOMAIN.COM的NS记录,则会返回该记录,然后原DNS服务器会查询它。如果存在 MISSING 的 A 记录,则会报告其 IP。

这就是它的要点。实际上,由于缓存、负载平衡以及名称服务器可以通过名称指定因此也必须查找这一事实,情况要复杂得多。

总结您的问题..您可以为一个域指定多个名称服务器,并使用不同的信息设置它们。答案是肯定的,但你必须小心并知道你在做什么。您可以使用 DNS 来支持负载平衡,并可以使用它来支持精简版故障转移。但你需要小心!

编辑:在评论中,bortzmeyer 指出了一些简化,在他看来,这些简化跨越了错误的界限。我做了一些调整,希望能解决这些问题。