是否可以将 NS 记录设为 CNAME?例如:
subdomain.example.com. IN NS ns1.example.com.
ns1.example.com. CNAME foo.example.com.
foo.example.com. IN A 10.1.1.1
尽管这(当然)可以,但这似乎在 bind 中不起作用:
subdomain.example.com. IN NS foo.example.com.
foo.example.com. IN A 10.1.1.1
任何指向禁止此设置的 RFC 的指针都将受到赞赏。
答案1
RFC 1035将 NS 资源记录 (RR) 仅定义为域名,而没有指定目标的 RR 类型(尽管它确实表明它不能是 IP)。
RFC 1912在第 2.4 节中有更多具体内容:
让 NS 记录指向 CNAME 是不好的,并且可能与当前的 BIND 服务器严重冲突。事实上,当前的 BIND 实现将忽略此类记录,可能会导致授权不充分。BIND 中进行了一定程度的安全检查,以防止欺骗 DNS NS 记录。此外,据报道,较旧的 BIND 服务器将陷入无限查询循环,试图找出别名名称服务器的地址,从而导致连续发送 DNS 请求流。
正如后来评论中指出的那样,RFC 2181第 10.3 节明确禁止这种行为:
MX 和 NS 记录
用作 NS 资源记录的值或 MX 资源记录值的一部分的域名一定不是别名。不仅规范在这一点上很明确,而且在这两个位置使用别名既不能像希望的那样发挥作用,也不能很好地实现可能导致这种方法的抱负。此域名必须具有一个或多个值地址记录。目前这些将是 A 记录,但将来其他提供寻址信息的记录类型也可能被接受。它也可以有其他 RR,但永远不是 CNAME RR。