第 6 章 BIND 9 配置参考 (7)
时间:2007-05-22 来源:liufirst
6.2.14.10. 拓扑(Topology)
当服务器在一组域名服务器中选择一个进行查询时,如果其它条件都一样,那么它会选择一个离自己“最近”的服务器进行查询。topology 语句设置一个地址匹配表(address_match_list)并且用一个特别的方法解释它。每一个最高级的表的元素都被设置一个“距离”(distance),一个非否定的元素的距离值基于它在表中的位置,离表开头越近,距离值越小。一个否定的匹配将会设置一个离本服务器最大的值。如果匹配不成功,这个地址会比任何非否定的元素都“远”,并且比所有否定的元素都近。例如:
topology {
10/8;
!1.2.3/24;
{ 1.2/16; 3/8; };
};
将会先判断是否是网络10,然后判断是否在网络 1.2.0.0 (netmask 255.255.0.0) ,最后是网络不属于1.2.3 (netmask 255.255.255.0)。
默认的拓扑是:
topology { localhost; localnets; };
注意: topology 选项在BIND 9中已经不用了。
6.2.14.11. sortlist语句
DNS查询的应答可能会是包括许多条记录 (RRs)组成的RR组(RRset),RR记录在组中会有一个不确定的顺序,(但需要参见rrset-order 语句 Section 6.2.14.12),客户机需要以一个合适的方法重新排列这个顺序,在本地网络中的地址比其它网络中的地址更优先。然而不是所有的解析器都能做到这个,或者他们的配置有问题。当一个客户机使用本地域名服务器时,可以由本地域名服务器基于客户地址执行排序,这仅需要配置域名服务器,而不是所有客户机。
sortlist 语句(如下) 设置一个地址匹配表(address_match_list),并且用比topology 语句更特殊的方法解释。每个sortlist 中的最高级语句必须是有一个或两个元素的清晰的地址匹配表(address_match_list),每个最高级语句的第一个元素(可能是IP地址,IP地址前缀,一个ACL的名字或者嵌入一个地址匹配表address_match_list) 与要比较的源地址对比,直到找到匹配。
一旦找到匹配地址,如果最高级的语句只有一个元素,实际的元素将被用来作为应答列表的第一个元素。如果语句里有两个元素,那么第二个元素将会按拓扑语句里面的地址匹配表一样对待,每个最高级的元素都被设定一个距离值, 最短距离的值将会放到应答的开头。
在下面的例子中,主机收到的任何查询的应答都与相连接的本地网络相关。Next 应答中的第一个地址是在192.168.1/24 网络中,其后是192.168.2/24 或者192.168.3/24 网络,这两个网络没有先后。在192.168.1/24 网络中查询的主机得到192.168.2/24 和 192.168.3/24 两个网络,在192.168.4/24 或者192.168.5/24 的主机将只使用他们直连的网络。
sortlist {
{ localhost; // IF the local host
{ localnets; // THEN first fit on the
192.168.1/24; // following nets
{ 192.168.2/24; 192.168.3/24; }; }; };
{ 192.168.1/24; // IF on class C 192.168.1
{ 192.168.1/24; // THEN use .1, or .2 or .3
{ 192.168.2/24; 192.168.3/24; }; }; };
{ 192.168.2/24; // IF on class C 192.168.2
{ 192.168.2/24; // THEN use .2, or .1 or .3
{ 192.168.1/24; 192.168.3/24; }; }; };
{ 192.168.3/24; // IF on class C 192.168.3
{ 192.168.3/24; // THEN use .3, or .1 or .2
{ 192.168.1/24; 192.168.2/24; }; }; };
{ { 192.168.4/24; 192.168.5/24; };
// if .4 or .5, prefer that net
};
};
下面的例子将会对本主机和本地直连网络回应,它与BIND 4.9.x中的地址排序相似,本主机将会选择本地直连的网络,其它的主机也会选择与它们直连的网络,其它的查询不被排序。
sortlist {
{ localhost; localnets; };
{ localnets; };
};
6.2.14.12. RRset 排序
当得到一个有多个RR记录的RR组时,重新给这些记录排定顺序是有用的。rrset-order 语句允许对RR组的记录排序,参见sortlist语句,Section 6.2.14.11。
一个order_spec 定义如下:
[ class class_name ][ type type_name ][ name "domain_name"]
order ordering
如果没有指定class,默认是ANY,如果没有指定type,默认也是ANY,如果没有指定name默认是"*"。
ordering 可选的值是:
Fixed |
固定的:记录按它们在区域文件中定义的顺序排列。 |
random |
随机的:随机排序。 |
Cyclic |
循环的:使用循环方法。 |
例如:
rrset-order {
class IN type A name "host.example.com" order random;
order cyclic;
};
会使class IN 中type A 的有"host.example.com" 后缀的回应使用随机的顺序,所有其它记录回应使用循环顺序。
如果有多个rrset-order 语句,他们并不是组合关系,只有最后一个有效。
注意: rrset-order 语句在BIND 9中已经没有了。BIND 9 当前只有"random-cyclic"(随机循环)排序,服务器随机在Rrset中选择一个开始点 ,并且以开始点的记录为头返回一个记录,包括RRset的结束点。( wrapping around the end of the RRset if necessary)
6.2.14.13. 组合的IPv6 应答
许多小的解析器支持IPv6 DNS 查询,它们遵守RFC1886,转发查询时支持在IP6.INT中使用AAAA 记录和半位元标签("nibble labels"),但不支持RFC2874 类型的查询 (在IP6.ARPA中使用A6 记录和二进制标签)。
对于那些想继续使用这样的小解析器而不愿转换到BIND 9的轻量级解析器的人, BIND 9 提供了一个自动转换RFC1886类的查询到RFC2874类的查询并且返回合成的AAAA 和 PTR 记录。
这个特性默认是关闭的,由options 或 view 子句的allow-v6-synthesis { address_match_list }语句对每个客户打开。打开时,递归查询AAAA ,服务器先尝试使用A6查询,如果失败,就使用AAAA查询。不管哪种查询成功,返回都使用组合的AAAA 记录。近似的,在IP6.INT递归查询PTR将会先在IP6.ARPA 中使用二进制查询标签,如果失败,则在IP6.INT中查询,返回使用ip6.int中组合的PTR 记录。
组合记录的TTL值是0, DNSSEC有效性的组合应答当前不支持,因此,包含组合的RRs 的记录没有AD 位。
注意: allow-v6-synthesis 只为那些支持递归的客户机执行。
6.2.14.14. 调整(Tuning)
lame-ttl
问题服务器指针存在的时间:设置以秒为单位缓存一个问题服务器(lame server), 0 禁止缓存 (这不被推荐),默认是600 (10 分钟),最大是1800 (30 分钟)。
max-ncache-ttl
最大否定内容缓存时间:为了减少网络流量和提高服务器的表现,服务器保存一些否定的答案。max-ncache-ttl 用来设置这些答案保存的最长时间,以秒为单位,默认的max-ncache-ttl 是10800 秒 (3 小时)。 max-ncache-ttl 不能超过7 天,如果设置的比7天大,会自动变成7天。
max-cache-ttl
最大缓存时间:max-cache-ttl 设置服务器保存正常答案(肯定positive)的时间,默认是7天。
min-roots
最小的根服务器数(已经不用了):需要的可接受的最小根服务器数,默认是2。
注意: BIND 9中已经没有了。
sig-validity-interval
作为动态更新的结果,DNSSEC签名自动产生后多少天会过期, 参见(Section 4.1),默认是30天。签名接受时间无条件设置为1小时之前,用来允许时钟误差。
min-refresh-time, max-refresh-time, min-retry-time, max-retry-time
最短更新时间,最大更新时间,最短重试时间,最大重试时间:这些选项控制服务器刷新一个区域 (查询SOA 变化) 或者重试失败的传送。通常区域的SOA值,但这个值由管理服务器设定,从属服务器对此有很小的控制权。
这个选项允许管理员对每个区域、每个view或全部设置最小最大更新、重试时间,这些选项对从属服务器和stub服务器也有效,规定了更新和重试的上、下限。
6.2.14.15. 统计文件
BIND 9 的统计文件与BIND 8相似,但不相同。
统计文件开始一行是“+++ Statistics Dump +++ (973798949)”, 圆括号中的数是一个标准的UNIX式的时间戳,这是从1970年1月1日起以秒为单位的数。紧跟这一行是几行包括计数器类型,计数器值,可选的区域名,可选的VIEW名。没有view和zone的行是全局统计信息,有zone和view的行是对指定的view和zone有效。 (默认的view 名字可以省略)。统计文件的结束行是“--- Statistics Dump --- (973798949)”,这个数字和前面的数字是一样的。
统计信息有:
success |
对于服务器或者区域成功的查询。一个成功查询的定义是对一个查询返回一个NOERROR 应答而不是推荐应答(referral response)。 |
referral |
推荐应答的数目。 |
nxrrset |
使用NOERROR 但没有数据的应答。 |
nxdomain |
应答是NXDOMAIN 的数目。 |
recursion |
导致服务器产生递归查询的数目。 |
failure |
产生failure应答而不是上面其它种应答的数目。 |
每一个查询都只会引起success, referral, nxrrset, nxdomain, 或 failure 中一种数目的增加,也可能同时引起recursion 计数的增加。