第 6 章 BIND 9 配置参考 (2)
时间:2007-05-22 来源:liufirst
6.2. 配置文件原理
一个BIND 9的配置文件包含语句和注释,语句用分号结束,只有语句和注释可以出现在括号之外,许多语句都包含子句,它们也用分号结束。
支持以下语句:
acl |
访问控制列表:定义一个命名的IP地址匹配表,用于存取控制或其它用途。 |
controls |
控制:宣告一个用于rndc的控制管道。 |
include |
引用:引用 一个文件。 |
key |
密钥:指定密钥信息,用在管理区域和使用TSIG。 |
logging |
日志:指明哪一个服务器作日志服务器,记录哪些内容。 |
options |
选项:服务器的全局配置选项和其它语句的默认项。 |
server |
服务器:在一个per-server basis上设置一定的配置选项。 |
trusted-keys |
信任的密钥:定义信任的DNSSEC 密钥。 |
view |
View:defines a view. |
zone |
区域:定义一个区域。 |
logging 和options 语句在一个配置文件中只能有一个。
6.2.1. acl 语句句法
acl acl-name {
address_match_list
};
6.2.2. acl语句定义和使用
acl 语句定义一组地址匹配表到一个指定的名字中。ACL来自于缩写:Access Control Lists (ACLs).
注意一个地址匹配表必须定义成ACL然后才能使用。
以下是内置已经定义了的ACLs :
any |
任何:所有的主机 |
none |
无:不匹配任何主机 |
localhost |
本主机:IPv4地址中,本系统所有网络接口。 |
localnets |
本地网络: IPv4地址中的本地子网。 |
localhost 和localnets 在IPv6 中已经不支持了,(那是因为, localhost已经不匹配主机的IPv6地址了,localnets 也不匹配本地网络了) 因为没有标准的方法来确定本地主机的IPv6地址。
6.2.3. controls语句语法
controls {
inet ( ip_addr | * ) [ port ip_port ] allow { address_match_list }
keys { key_list };
[ inet ...; ]
};
6.2.4. controls 语句的定义和使用
controls 语句宣告一个系统管理使用的控制通道,用于对本地域名服务器进行操作。这个控制通道用于运行rndc 程序来发送命令,并且从域名服务器中得到其它(不是域名查询的)结果。
inet 控制通道是一个监听指定的地址和TCP端口号,可以是IPv4 或者 IPv6 地址,如果 ip_addr 中有 * ,则是指IPv4 的通配符,连接会允许所有符合要求的Ipv4地址,监听IPv6 通配符地址, ip_addr的::,如果为了安全就只在本地使用rndc,使用回环地址loopback (127.0.0.1 或者 ::1)。
通过控制通道发送命令还被allow 和keys 子句限制。连接到控制通道的许可基于地址许可address_match_list,address_match_list 的key_id 会被忽略,替换为独立的key_list,通过对服务器和命令客户机之间的每条信息进行数字签名,key_list中每个key_id 都被允许使用管理命令,回应指定的控制通道。(参见Remote Name Daemon Control application 在 Section 3.4.1.2)。所有到控制通道的命令都必须使用它自己指定的密钥签名,以保证安全。
如果没有controls 语句,named进程会使用默认的控制通道,监听本地地址,(Ipv4的127.0.0.1 ,IPv6 的::1)。这种情况和有controls 语句但没有keys 子句的情况下, named 进程会尝试找rndc.key,一般在/etc目录中 (或者其它BIND建立时指定的系统目录sysconfdir)。要建立一个rndc.key 文件,运行rndc-confgen -a.
rndc.key 特性是为了从BIND 8更容易升级到9,BIND 8 在控制通道上没有数字签名,所以也没有keys 子句。它使在BIND 9中不用改变配置文件就可以使用一个原有的BIND 8配置文件,并且rndc 仍可以用相同的方式工作,只需要在BIND 9安装完成后执行命令rndc-confgen -a 。
既然rndc.key 只用于允许后台兼容BIND 8配置文件,这个特性没有很多可以配置的地方,比如不能改变密钥名字或者大小,因此如果你想改变这些,还是要有一个rndc.conf中。rndc.key 文件也有它自己的权限,只有它的拥有者(运行named的用户) 才可以存取它。如果你想让灵活的使用rndc,需要配置rndc.conf ,并且设置成某个组可读,而需要操作的用户属于这个组。
BIND 8类型的UNIX 控制通道在BIND 9不支持,以后也不会再支持。如果从BIND 8的配置文件中读入它,会被忽略,并记录一个警告。
想要禁止控制通道,使用空的 controls 语句:
controls { };.
6.2.5. include 语句语法
include filename;
6.2.6. include 定义和使用
include 语句在include语句出现的地方插入指定的文件, include 语句使管理(读或写)配置文件更容易,没有其它用途。例如,可以引用一个私钥,它只可以被域名服务器读取。
6.2.7. key 语句语法
key key_id {
algorithm string;
secret string;
};
6.2.8. key 定义和使用
key 语句定义了一个TSIG使用的共享密钥,参见Section 4.4.
key 语句可以在配置文件的最高层中出现,也可以出现在view 语句中。Key也可以在最高层定义,但用在view语句中。Key经常用在controls 语句中使用必须定义在最高层(参见 Section 6.2.4) 。
key_id,也叫密钥名(key name),它可以用在"server" 语句中,使发送请求时使用这个密钥名来加密,也可以用在地址匹配列表中,用于接收请求时用这个密钥来验证密文。
algorithm_id 是一个指定加密算法的字符串,当前只TSIG 只支持hmac-md5算法。secret_string 是被当成64位编码的加密串。