为什么域名的根不能是 CNAME?

为什么域名的根不能是 CNAME?

我刚刚读过这个问题这本质上意味着当我为 example.com 设置 DNS 时,根记录不能是 CNAME,而必须是 A 记录。

我的问题是,为什么?

我确信设计 DNS 的聪明人不会无缘无故地做出任意限制,但我看不出要求根域为 A 记录对我们有什么好处。我很想将我的 example.com 域指向 someserver.somewebhost.example 然后忘掉它,但我做不到。

请赐教,billpg。

答案1

首先,根本原因不是您必须使用 A 记录,而是您不能使用 CNAME 记录,因为它们不能与其他正常资源记录类型共存。

的原因限制在 RFC 1034 的§3.6.2 中:

如果节点上存在 CNAME RR,则不应存在其他数据;这确保了规范名称及其别名的数据不会不同。此规则还确保可以使用缓存的 CNAME,而无需与权威服务器核实其他 RR 类型。

由于(委托)域的根必须具有 SOA 和 NS 记录,因此上述规则开始生效,从而阻止使用 CNAME。

答案2

嗯,并不是说域的根不能是CNAME- 而是CNAME不能与同一域的其他记录类型共存。

简而言之,带有 的域名拥有CNAME任何其他记录类型都是没有意义的,因为这CNAME将确保它们永远不会被看到或读取。

假设我们确实尝试给予example.net两者CNAME(指向 host.example。com) 和一条A记录(指向其他 IP 地址)。

  1. 首先,客户端会从 example.net 的名称服务器请求一条A记录。example.net

  2. example.net 的名称服务器会通知我们需要遵循一条CNAME记录才能继续。所以我们照做了。CNAME指向 的点host.example.com

  3. 客户端将向的名称服务器请求A记录。host.example.com

注意到了吗,我们从来没有机会A从 example.net 读取记录或任何其他记录类型? 优先CNAME

相关内容