我刚刚读过这个问题这本质上意味着当我为 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 地址)。
首先,客户端会从 example.net 的名称服务器请求一条
A
记录。example.net
example.net 的名称服务器会通知我们需要遵循一条
CNAME
记录才能继续。所以我们照做了。CNAME
指向 的点host.example.com
。客户端将向的名称服务器请求
A
记录。host.example.com
注意到了吗,我们从来没有机会A
从 example.net 读取记录或任何其他记录类型? 优先CNAME
。