为什么域的根不能是 CNAME?

bil*_*lpg 22 domain-name-system cname-record

我刚刚阅读了这个问题,它实质上是说当我为 example.com 设置 DNS 时,根记录不能是 CNAME,它必须是 A 记录。

我的问题是,为什么?

我确信设计 DNS 的聪明人不会无缘无故地进行任意限制,但我看不出通过将根域作为 A 记录来获得什么。我很想将我的 example.com 域指向 someserver.somewebhost.example 并忘记它,但我不能。

请赐教, billpg。

Aln*_*tak 24

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

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

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

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

  • 该限制仍然令人讨厌,但至少现在它是有道理的。谢谢。 (2认同)

tho*_*ter 12

好吧,并不是域的根不能是 a CNAME- 而是 aCNAME不能与同一域的其他记录类型共存。

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

比方说,我们也尽量给example.net双方一个CNAME(指向host.example。的COM)和A记录(指向一些其他的IP地址)。

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

  2. example.net 的名称服务器会通知我们,我们需要跟踪CNAME记录才能继续。所以我们这样做。该CNAMEhost.example.com

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

请注意我们从未有机会A从 example.net读取记录或任何其他记录类型?该CNAME优先。