分类:
2007-07-17 11:23:00
目录
6.1. 配置文件组成
6.2. 配置文件原理
6.3. 区域数据文件
配置文件组成
以下是BIND配置文件的组成元素。 acl_name 访问控制列表名:一个 address_match_list 的名字,使用acl statement定义。 address_match_list 地址匹配表:一组或一个ip_addr, ip_prefix, key_id, 或 acl_name 组成,参看Section 6.1.1。 domain_name 域 名:一个双引号之间的字符串,用做DNS的名字,例如:"my.test.domain"。 dotted_decimal 点分隔的10进制数:一个或多个整数,值从0到255之间,只用“点”分隔 (`.'),例如123, 45.67 或89.123.45.67。 ip4_addr IPv4地址:4个点分隔的十进制数( dotted_decimal) 。 ip6_addr IPv6地址:例如: 2001:db8::1234。 ip_addr Ipv4地址或者Ipv6地址:ip4_addr 或ip6_addr。 ip_port IP端口号:整数在0 到65535之间,小于1024的限制为根用户使用,某些情况下使用“星号”(`*') 是作为占位符,表示此处可以随机使用一个(high-numbered)数。 ip_prefix IP地址网络号:由IP地址紧跟一个斜杠 (`/'),然后是子网掩码中1的个数。ip_addr后面的0会被忽略。例如127/8是网络127.0.0.0 子网掩码 255.0.0.0,1.2.3.0/28 是网络 1.2.3.0 子网掩码是 255.255.255.240. key_id 共享密钥所代表的域名:用来传送加密数据。 key_list 密钥列表:一组key_ids,一个或几个,用分号分隔,用分号结束。 number 数字:一个32位无符号整数(例如:在0到4294967295,包括这两个数)。根据环境,这个值会有很多限制。 path_name 路径名:引号中用来表示路径的名称:如 zones/master/my.test.domain. size_spec 指定的大小(数):无限制或有限制,或者默认 无限制数(unlimited size_spec )在没有限制的地方用,默认值( default size_spec )则强制使用限制的值。 一个数可选的在其后跟一个字符:K or k为1K倍, M or m 为1M倍, G or g 为1G倍,它们的实际倍数是1024, 1024*1024, 和1024*1024*1024。 这个值 必须为64位无符号整数, (0 到 18446744073709551615, 包含这两个数)。使用无限制数最安全的方法是设置一个实际的大数。 yes_or_no 逻辑值: yes 或 no,true 和false,或者是1和0。 dialup_option Dialup_option选项,可以是yes, no, notify, notify-passive, refresh 或passive。在区域中, notify-passive, refresh, 和 passive 限制只能用于从属区域或stub 区域。 地址匹配列表主要用于决定不同服务器的存取权限。也用来定义优先查询的其它域名服务器的地址,那台主机使用named 进程监听查询。地址匹配表可以由下面任何一项或多项组成: · IP地址 (IPv4 或 IPv6) · 网络地址(IP prefix ,使用 `/'符号) · 密钥字( key ID),由key 语句定义 · 先前已经定义的地址匹配列表 · 使用括号包括的嵌套的地址匹配表 如果在某个元素前面加上 (`!'),表示是否定的意思。匹配表的名字是"any," "none," "localhost" 和 "localnets" 已经预先定义过了,它们的精确定义可以在ACL描述一节中找到。 Key子句名称有些不合语法,既然不论是主机还是网络地址都可以使用密钥进行有效的存取,而地址匹配依旧在使用。(即生瑜,何生亮?用密钥就可以了,还搞个地址匹配。呵呵) 当一个指定的IP 地址或网络地址与地址匹配表比较时,它会依次比较表中所有地址直到找到匹配或者表结束。匹配的解释依赖与它使用的地方,是存取控制,定义监听端口,或者作为一个拓扑来判断该元素是否被否定。 当用在存取控制表中,一个肯定的匹配允许存取,一个否定匹配拒绝存取。如果没有匹配,存取就被拒绝,子句allow-notify, allow-query, allow-transfer, allow-update 和 blackhole 都使用肯定地址匹配。相似的,监听选项使服务器不接收不在本机列表中的地址。 当使用拓扑子句时,一个肯定的比较会基于匹配到元素在表中的位置返回一个距离,(离地址匹配表的开头越近,它离服务器的距离就越近)。一个否定的比较将会设置为离服务器的最大距离,如果没有匹配,地址得到的距离比任何肯定的表元素的距离都长,比任何否定的表元素的距离都短。 因为使用了发现匹配就结束的算法,一个元素如果是其它元素的子网,就要先写这个元素,就是先写精确的子网,后写较大的子网,不管是不是否定的元素。例如,1.2.3/24; ! 1.2.3.13; 两个元素1.2.3.13 出现就会完成匹配,因为算法匹配它符合1.2.3/24,使用! 1.2.3.13; 1.2.3/24(顺序反过来) 来解决这个问题,此时先匹配1.2.3.13已经被否定,而其它这个子网中的元素都可以通过。 句法 注释语句可以出现在配置文件任何空白的地方。 类C注释语句开始于/* (slash, star) 结束于 */ (star, slash)。因为他们被完整的界定,所以他们可以用在一行中的一部分,或者跨过多行。 类C注释语句不能被嵌套,例如,下面的例子是非法的,因为第一个*/已经使注释结束了。 类C++的注释语句用// (slash, slash)开头,直到这一行的结束,不能连续数行,如果想要连续多行,每行都要用// 开头。 例如: 类Shell的注释语句(或者类perl,如果你愿意) 用# (number sign)开头,直到行的结束。和C++类似。 例如: 警告 警告:不能使用分号(`;') 开始注释语句,分号在区域配置文件中表示一个语句的结束。
地址匹配表
句法
address_match_list = address_match_list_element ;
[ address_match_list_element; ... ]
address_match_list_element = [ ! ] (ip_address [/length] |
key key_id | acl_name | { address_match_list } )
定义和使用
注释语句
/* This is a 定义和使用
/* This is the start of a comment.
This is still part of the comment.
/* This is an incorrect attempt at nesting a comment. */
This is no longer in any comment. */
// This is the start of a comment. The next line
// is a new comment, even though it is logically
// part of the previous comment.
# This is the start of a comment. The next line
# is a new comment, even though it is logically
# part of the previous comment.