本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第4章,第4.3节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
4.3 建立BIND配置文件
现在已经创建好了区域数据文件,接下来必须指引名称服务器读取这些文件。对于BIND来说,指引服务器读取其区域数据文件的机制便是配置文件。到目前为止,本章已经讨论了那些数据和格式被DNS规范描述过的文件。不过,下面所讨论的配置文件的语法,虽然是BIND所特有的,但是却没有在DNS RFC中被定义。
从版本4到版本8之间,BIND配置文件的语法发生了显著的变化。幸运的是,BIND 8和BIND 9之间未发生任何变化。BIND 4已问世很久了,这里就不再讨论它的配置文件。如果还在使用那些老古董的话,那么应该去参考一下本书之前的版本(应该能找到一本便宜的二手书)。在配置文件中,可以使用三种样式的注释:C样式、C++样式或者shell样式。
通常,配置文件中会有一行用来说明区域数据文件所存放的目录。名称服务器在读取区域数据文件之前会将它的工作目录切换到该目录下。这就允许指定相对于当前目录的文件名称,来代替完整的路径名称。下面是options语句中用来说明区域数据文件所在目录的行:
https://yqfile.alicdn.com/51a7ca99f84873ce0d76f8dfadca25b45479d9f3.png" >
提示
由于配置文件中只能出现一个options语句,所以本书后面提到的任何其他选项都必须和上面的directory选项放在一起。
在primary服务器上,每个要读取的区域数据文件在配置文件中都有一个zone语句。每行都以关键字“zone”开头,后面跟着区域的域名以及类(in表示Internet)。master类型用来指出这个名称服务器是一个primary名称服务器。最后一行包含了文件名:
https://yqfile.alicdn.com/279a7d1f5ed5cc6864f1b278c0c633c0516ba390.png" >
本章前面曾经提到过,如果省略了资源记录的类字段,那么名称服务器将根据配置文件来决定正确的类。zone语句中的in表示将类设置成Internet类。而zone语句的默认类就是in,因此对于Internet类的区域,可以不设定该字段。
下面是配置文件中用来读取root提示文件的语句:
正如前面所提到的,该文件不是用于一般的缓存数据的。它只包含了root名称服务器的提示数据。
在默认情况下,BIND希望配置文件被命名为/etc/named.conf。我们的例子中的区域数据文件在目录/var/named中。使用哪个目录其实并不重要。但是如果根文件系统的空间有限,那么就要避免将这个目录放在根文件系统中,并且要确保该目录所在的文件系统在名称服务器启动之前就被挂载。下面是一个完整的/etc/named.conf文件: