在 DNS 中,IN NS 可以指向 CNAME 吗?

在 DNS 中,IN NS 可以指向 CNAME 吗?

是否可以将 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

相关内容