当指向同一域时解析域的 NS

当指向同一域时解析域的 NS

阅读这个问题让我思考:

我想在家里为我的家庭网站托管一个 DNS 服务器(具有静态 IP),我需要做什么?

我对 DNS 以及它的工作原理很熟悉,但这个问题让我走上了一条我以前从未考虑过的道路。

假设我在 上为自己的域 ( example.com)托管一个 DNS 服务器1.2.3.4,并且该 DNS 服务器通告以下(简化的)区域:

@   NS ns.domain.com.
@   A  1.2.3.4
ns  A  1.2.3.4

然后,我随后在我的注册商处注册ns.example.comexample.com的名称服务器。

ns.example.com如果不知道谁负责,我们就无法解析的地址example.com

一旦我们知道了这ns.example.com是名称服务器,example.com我们就不会陷入困境吗?肯定没有办法联系,ns.example.com因为标识其 IP 地址的 A 记录由同一台服务器保存……?

大概是我在查找时遗漏了某个步骤......


读过,我的理解得到了证实,但我仍然感到困惑......

看起来这是可能的,因为google.com似乎是这样配置的(如链接文章中概述的那样)。

5 和 6 之间是不是缺少一个步骤?

步骤5:[...] .com gTLD 服务器会响应一份包含所有 google.com NS 记录的列表。在本例中,Google 有四个名称服务器,从“ns1.google.com”到“ns4.google.com”。

第 6 步:最后,DNS 解析器向 Google 的一个名称服务器查询“www.google.com”的 IP。

...是的,但我们需要知道其中一个名称服务器的 IP 才能查询它们,从而有效地将www.google.com查询换成临时ns1.google.com查询。


我在这里遗漏了什么?

答案1

在这种情况下,父区域有副本相关 A/AAAA 记录(称为胶水记录– 因此在“步骤 5”中,服务器会自动将它们包含在响应中,不需要进一步的嵌套查询。

任何包含 NS 记录的响应(无论是对 NS 记录的直接查询,还是生成引荐的普通查询)都将始终在“ADDITIONAL”部分下包含相应的粘合记录:

$挖掘 google.com。A@c.gtld-servers.net。

;; 标志:qr rd;查询:1,答案:0,权限:4,附加:9

;; 权威部分:
google.com。172800 IN NS ns1.google.com。
google.com。172800 IN NS ns2.google.com。
...

;; 附加部分:
ns1.google.com.172800 IN AAAA 2001:4860:4802:32::a
ns1.google.com.172800 IN A 216.239.32.10
ns2.google.com.172800 IN AAAA 2001:4860:4802:34::a
ns2.google.com.172800 在 216.239.34.10
...

(此副本是手动管理的 - 当域所有者在父区域中配置名称服务器时,他们也可以指定IP 地址和名称。

作为记录实际如何的一个例子存储,你可以看看根区它有许多这样的带有粘合记录的委托 - 它们只是简单地放置在父区域中:

lt. 172800 IN NS a.tld.lt.
lt. 172800 IN NS b.tld.lt.
a.tld.lt.172800 IN A 195.8.218.131
b.tld.lt.172800 IN A 194.0.20.1
b.tld.lt.172800 IN AAAA 2001:678:19:0:0:0:0:1

最后需要注意的是,粘合记录仅对同一域名服务器才具有强制性,但它们不需要当不会发生循环时 - 域 A 使用域 B 下的名称服务器是很常见的,在这种情况下,父区域通常不会有粘合记录,并且客户端确实必须自行进行额外查询。

答案2

该文章的第 5 步说明:

[...] .com gTLD 服务器没有 google.com 的 IP 地址,但它知道 google.com 名称服务器的位置。.com gTLD 服务器会以 google.com 所有 NS 记录的列表作为响应。

如果我没记错的话,尽管.comgTLD 服务器没有记录对于 IP 地址google.com,知道google.com的名称服务器,它可以查询 IP 地址并使用它们进行响应。

也许通过几个步骤进行一些实验可以dig弄清楚发生了什么。+trace+norecurse

相关内容