本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第10章,第10.1节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
第10章 高级功能
蚊子问道:“如果你叫它们的名字,它们却不答应,那要名字又有什么用呢?”
最新版本(本书英文版撰写时为和9.3.2)的BIND名称服务器,提供了许多新功能。其中最值得介绍的包括支持动态更新、异步区域变更通知(简称NOTIFY),以及增量区域传输。在其余部分中,与安全相关的功能也很重要:允许配置名称服务器可以响应谁的请求,给谁提供区域传输,以及允许谁进行动态更新。在企业内部网络中,虽然许多安全功能不是必需的,但是有些机制对于任何名称服务器的管理员而言,都是有所帮助的。
本章将介绍这些功能,并且对于如何在DNS基础设施中使用这些功能提出建议。(部分有关防火墙的内容,将在下一章进行介绍。)
10.1 地址匹配列表和ACL
在介绍新功能之前,最好先了解下地址匹配列表(address match lists)。在BIND 8和9中,几乎所有的安全功能,以及一些与安全完全无关的功能都会用到地址匹配列表。
地址匹配列表中的每一项指定一个或多个IP地址。列表中的元素可以是独立的IP地址、IP前缀(即网络地址,包含多个IP地址)或已命名的地址匹配列表(稍后会进一步说明)1。IP前缀的格式如下:
例如,网络.0的网络掩码为255.0.0.0(8位连续的1)可以表示为15/8。依照惯例,15/8被看作网络号为15的A类网络。此外,如果一个网络包含的IP地址范围从192.168.1.192到192.168.1.255,则可以表示为192.168.1.192/26(网络地址为192.168.1.192,网络掩码为255.255.255.192,即26位连续的1)。下面就是包括上述两个网络的地址匹配列表:
https://yqfile.alicdn.com/044ad63d5eda967910a9a2c79a7d5593cc8fad38.png" >
一个已命名的地址匹配列表其实就是一个有名称的地址匹配列表。如果想在其他地址匹配列表中使用已命名的地址匹配列表,必须事先在named.conf中用acl语句进行定义。acl语句的语法很简单,如下所示:
这条语句表示,从现在开始,name和address_match_list等效。虽然语句本身的名称——acl,会让人联想到“access control list”(访问控制列表),但是只要是在可以使用地址匹配列表的地方,都可以使用已命名的地址匹配列表,包括一些与访问控制无关的地方。
如果想在某些访问控制列表中使用一个或多个相同的项目时,最好先用acl语句将其关联到某个名称。然后就可以在地址匹配列表中引用其名称了。例如,用“HP-NET”表示15/8,用“internal”表示192.168.1.192/26:
https://yqfile.alicdn.com/7e5f35284401f5b7c808eaf67440442f5de78c06.png" >
现在就能在其他地址匹配列表中用名称来引用这些已命名的地址匹配列表了。这不仅可以减少输入量,简化对地址匹配列表的管理,还能让named.conf文件更具可读性。
本书谨慎地用引号将ACL名称括起来,以避免和BIND的保留字相冲突。如果确信ACL的名称不会和保留字发生冲突,那么也可以不使用引号。
下面是4个预定义的已命名地址匹配列表。
none
没有IP地址。
any
所有IP地址。
localhost
本地主机(运行名称服务器的主机)上的任意IP地址。
localnets
本地主机任一网络接口所在的网络(通过用网络掩码屏蔽掉每个网络接口IP地址中的主机位后得到)。