分类:
2007-07-17 13:29:10
当服务器在一组域名服务器中选择一个进行查询时,如果其它条件都一样,那么它会选择一个离自己“最近”的服务器进行查询。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 选项在语句
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 的主机将只使用他们直连的网络。 下面的例子将会对本主机和本地直连网络回应,它与排序
当得到一个有多个RR记录的RR组时,重新给这些记录排定顺序是有用的。rrset-order 语句允许对RR组的记录排序,参见sortlist语句,Section 6.2.14.11。 一个order_spec 定义如下: 如果没有指定class,默认是ANY,如果没有指定type,默认也是ANY,如果没有指定name默认是"*"。 ordering 可选的值是: Fixed 固定的:记录按它们在区域文件中定义的顺序排列。 random 随机的:随机排序。 Cyclic 循环的:使用循环方法。 例如: 会使class IN 中type A 的有"host.example.com" 后缀的回应使用随机的顺序,所有其它记录回应使用循环顺序。 如果有多个rrset-order 语句,他们并不是组合关系,只有最后一个有效。 注意: rrset-order 语句在组合的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 只为那些支持递归的客户机执行。 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服务器也有效,规定了更新和重试的上、下限。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
};
};
[ class class_name ][ type type_name ][ name "domain_name"]
order ordering
rrset-order {
class IN type A name "host.example.com" order random;
order cyclic;
};
调整(Tuning)
统计文件
对于服务器或者区域成功的查询。一个成功查询的定义是对一个查询返回一个NOERROR 应答而不是推荐应答(referral response)。
referral
推荐应答的数目。
nxrrset
使用NOERROR 但没有数据的应答。
nxdomain
应答是NXDOMAIN 的数目。
recursion
导致服务器产生递归查询的数目。
failure
产生failure应答而不是上面其它种应答的数目。
每一个查询都只会引起success, referral, nxrrset, nxdomain, 或 failure 中一种数目的增加,也可能同时引起recursion 计数的增加。