本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第10章,第10.13节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
10.13 兼容性
为了完整性,现在本节将讨论一些与兼容性(名称服务器与解析器,以及与其他名称服务器之间)相关的配置子语句。
rfc2308-type1子语句可以控制名称服务器发送否定应答(negative answers)的格式。默认情况下,BIND 8和9名称服务器的否定应答只包含区域的SOA记录。而另一个合法的格式还可以包含区域的NS记录,但是某些较旧版本的名称服务器会将这种应答误解为指向另一个服务器。如果为了某个奇怪的原因(想象不到的原因)打算一并发送NS记录,可以使用:
BIND 8.2最先支持rfc2308-type1,而BIND 9不支持该功能。
当给较旧版本的名称服务器发送缓存的否定应答时,可能也会出问题。在缓存否定应答的功能出现之前,所有的否定应答自然都是权威的。但是某些名称服务器的设计者增加了检查机制:让服务器只接受权威的否定应答。后来,缓存否定应答的功能出现了,否定应答也可能是非权威的了。
options的子语句auth-nxdomain让名称服务器谎称其缓存中的否定应答实际上是权威的,这样那些较旧版本的名称服务器就会接受它。默认情况下,BIND 8名称服务器会开启auth-nxdomain(设置成yes);而BIND 9名称服务器默认会关闭该功能。
当有人将BIND 移植到Windows NT上时,他们发现需要让名称服务器将由carriage return(回车)和newline(换行)所组成的行结束符(Windows的行结束序列),视为newline(UNIX的行结束序列)。针对这样的情况,可以使用:
https://yqfile.alicdn.com/29cdb033c083f9b75ccf7e47340464415e9d3bdc.png" >
BIND 9会忽略该选项,因为其本来就是用相同的方式对待carriage return与newline的组合和单独的newline。
最后,如果有一个运行BIND的名称服务器,被配置为具有Active Directory- integrated区域的Microsoft DNS服务器的slave,则可能会在syslog中看到一条错误信息,告知区域的序号减少了。这是Active Directory所使用的复制(replication)机制产生的副作用,而不是发生了什么问题。如果不想看到该信息,则可以使用BIND 中新增加的zone子语句multi-master来告诉slave,masters子语句指定的IP地址实际上属于多个名称服务器,而不是一个名称服务器上的多个接口: