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


17

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

尽管这样做(尽管如此)似乎在绑定中不起作用:

subdomain.example.com.       IN NS  foo.example.com.
foo.example.com.             IN A   10.1.1.1

指向禁止这种设置的RFC的任何指针将不胜感激。

Answers:


20

定义NS RR的实际RFC(RFC1035)只是说这是一个域名,没有指定目标的RR类型(尽管它明确表明它不能是IP)。它确实在RFC1912第2.4节中得到了具体提及:

使NS记录指向CNAME是不好的,并且可能与当前的BIND服务器严重冲突。实际上,当前的BIND实现将忽略这些记录,可能导致行事不便。BIND中进行了一定程度的安全检查,以防止欺骗DNS NS记录。而且,据报道,较旧的BIND服务器将陷入无限查询循环,试图找出别名名称服务器的地址,从而导致连续不断的DNS请求发送。

并非一定不能,但它确实符合您所看到的行为


5
RFC1034说,“在其中的RR点另一名应该总是点在主名称而不是别名。这样就避免了在获取信息....当然,在稳健性原则额外的间接性,域软件不应该失败域名当出现CNAME链或循环时;应遵循CNAME链,并且将CNAME循环表示为错误。”
Larsks 2011年

10
我发现RFC 2181 10.3清楚地表明它无效,但是您的回答足够好。
马克·瓦格纳

1
为了更加清楚起见:MUST NOT这里的用法无关紧要,因为RFC 1912是信息性的,并且没有定义标准。标记RFC 2181是正确的参考是正确的。(RFC 1034是在语言标准巩固之前编写的,因此是含糊的)
Andrew B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.