我自己的名称服务器如果不添加粘合记录就无法工作,为什么?

我自己的名称服务器如果不添加粘合记录就无法工作,为什么?

我不明白这一点。我到处都读到粘合记录只是为了防止循环依赖,例如我想为 example.com 域名设置 ns1.example.com 和 ns2.example.com 名称服务器。

但根据我的经验,事实并非如此。我想创建自己的名称服务器,例如 ns1.example.com 和 ns2.example.com。Example.com 是我的域名,我已经拥有名称服务器的 2 个 IP,并且名称服务器可以正常工作。我只需为名称服务器 IP 创建主机名即可。

因此,我使用 DNS 区域文件编辑器为我的 example.com 域名添加了 2 个 A 记录(ns1.example.com. 300 IN A [nameserverip1] 和 ns2.example.com. 300 IN A [nameserverip2])。Example.com 使用外部 DNS 服务,它永远不会使用 ns1.example.com 和 ns2.example.com 名称服务器,因此理论上不需要粘合记录。

然而,我遇到了这样的情况:有 example.net,我想将 ns1.example.com 和 ns2.example.com 名称服务器用于 example.net,但你猜怎么着,它不起作用。因为当我尝试输入这些名称服务器时,我收到错误:未找到实体引用 [未找到主机 ns1.example.com。]

但是,在我打开我的 example.com 域名注册商的控制面板并注册 ns1.example.com 和 ns2.example.com 名称服务器(我创建了粘合记录)后,它就可以工作了。

但我想避免设置粘合记录,因为我无法控制粘合记录的 TTL,所以如果 IP 发生变化,我可能会遇到停机。

为什么只添加 ns1.example.com 和 ns2.example.com 的 A 记录还不够?为什么我必须在我的域名注册商处注册它们?

更新:根据我的经验,这只是 .com、.net 和 .org 域名的问题。这些顶级域名是否真的需要胶合记录,即使没有循环依赖关系?因为例如当我使用 ns1.example.hu 和 ns2.example.hu 名称服务器时,它们只能使用 A 记录,而不能使用胶合记录。似乎 .hu 根服务器的行为与 .com 根服务器不同?

答案1

comnet共享一组权威名称服务器:

$ dig @f.root-servers.net. +noall +authority +norecurse com
net.                    172800  IN      NS      b.gtld-servers.net.
net.                    172800  IN      NS      h.gtld-servers.net.
net.                    172800  IN      NS      c.gtld-servers.net.
net.                    172800  IN      NS      j.gtld-servers.net.
net.                    172800  IN      NS      f.gtld-servers.net.
net.                    172800  IN      NS      l.gtld-servers.net.
net.                    172800  IN      NS      m.gtld-servers.net.
net.                    172800  IN      NS      k.gtld-servers.net.
net.                    172800  IN      NS      d.gtld-servers.net.
net.                    172800  IN      NS      i.gtld-servers.net.
net.                    172800  IN      NS      e.gtld-servers.net.
net.                    172800  IN      NS      a.gtld-servers.net.
net.                    172800  IN      NS      g.gtld-servers.net.

$ dig @f.root-servers.net. +noall +authority +norecurse net
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.

这是互联网上最古老和最常见的两个顶级域名,这带来了一个有趣的问题。这些顶级域名中的域名需要粘合在一起全部com或结尾的域名服务器的排列net。这也往往会给许多处理这些域名的人留下这样的印象:不是选修的。

即使在您没有使用有问题的排列的情况下,在尝试为属于此范围的域设置名称服务器时,您也可能会遇到更严格的粘合检查。考虑到这些注册商必须为这两个域名(以及共享一组名称服务器的任何其他后缀)编写代码的问题,他们不太可能对他们的要求更加细致入微。

一般而言,TLD 越新,该 TLD 的注册商就越不可能对您实施这些限制。在处理较新的后缀时,经常会看到无粘合名称服务器。

答案2

这不仅仅是 .com/.net 的要求,.info 和许多其他 TLD 也会这样做(域名销售网站的支持告诉我他们所有网站都这样做),因此如果您想将 example.info 的 NS 设置为 ns1.anything.info,ns1.anything.info 必须在 .info 中有一个 GLUE 记录,否则 NS 设置将失败(无论您从哪个网站购买了 example.info 域名,它们都会报告一般错误)。更令人担忧的是,如果任何 .info 网站将 NS 设置为 ns1.anything.info,anything.info 的所有者也无法删除 GLUE 记录 ns1.anything.info,它也会失败并出现一般错误(我已在 3 个不同的域名销售网站上尝试过)。但是,由于 .info 和 .com/.net 不是由同一个注册商管理的,您可以将 example.info 上的 NS 设置为 ns1.anything.net 或 ns1.anything.com,反之亦然,而不需要任何 GLUE 记录。

相关内容