第 6 章 BIND 9 配置参考 (6)
时间:2007-05-22 来源:liufirst
6.2.14.2. 转发
转发机制可以用来在少数几台服务器上建立一个广泛分布的缓存,这样可以减少到外网的流量。也可以用在不允许访问互联网的服务器上,但它们因某种原因需要查询外部域名,转发只发生在查询的地址不是本服务器管理的地址,也不在本机缓存中。
forward
这个选项需要在转发列表不空时才有效。如果值是first,默认的,服务器会首先查询转发器,如果它没有答复,服务器才会自己查找答案。如果值是only ,那么服务器只会查询转发器(forwarders),不会自己查询。
forwarders
指定用于转发的IP地址,默认是空表(不启用转发)(no forwarding).
“转发”也可以被配置成每个域的基本部分,全局转发选项可能会被许多其它的语句的选项改变。可以设置一个分别的域来适应不财的转发,或者有一个不同于forward only/first 的行为,或者禁止forward ,参见 see Section 6.2.21。
6.2.14.3. 存取控制
对服务器存取被限制使用特定的IP地址,参见Section 6.1.1 ,细节参见如何指定一个IP地址。
allow-notify
指定这个选项管理主机会被允许通告区域的从属服务器改变增量数据。在zone 语句中也可以指定这个选项,这时它会替代全局的变量。它只对从属服务器有意义,如果没有指明,默认是只从区域的管理服务器处理notify信息。
allow-query
指定哪个主机被允许查询普通问题。allow-query会在zone 语句中出现,那样会替代这里的值。如果没有指定,默认是允许从所有主机查询。
allow-recursion
指定哪个主机被允许向这台服务器查询递归请求。如果没有指明,默认是允许对所有主机进行递归查询,注意不允许递归查询并不阻止主机从它的缓存中查找数据。
allow-v6-synthesis
指定哪个主机可以接收Ipv6查询的合成回复,参见Section 6.2.14.13。
allow-transfer
指定哪个主机被允许接收服务器的区域传送数据。allow-transfer 也可以在zone 语句中指定,那样它会替换全局设定值。默认是允许传送给所有的主机。
blackhole
指定一组服务器不接受查询或用来解析查询的地址,从这些地址发送的查询服务器不会回应。默认是none。
6.2.14.4. 接口(Interfaces)
服务器用来回复查询的接口和端口要使用listen-on 选项来指定。listen-on 设置一个可选的端口和一个地址匹配表( address_match_list),服务器会监听所有地址匹配表允许的接口,如果不指定端口号,默认使用53。
允许出现多个listen-on 语句。例如:
listen-on { 5.6.7.8; };
listen-on port 1234 { !1.2.3.4; 1.2/16; };
会使域名服务器监听5.6.7.8的53端口,和网络1.2但不含1.2.3.4的1234端口。
如果没有指定listen-on ,服务器会监听所有接口的53端口。
listen-on-v6 选项用来指定一个服务器用来监听Ipv6查询的端口。
服务器不会像在Ipv4中一样为每个Ipv6接口绑定一个不同的套接字(socket),它总是监听Ipv6的通配地址,因此,对Ipv6它只允许有地址匹配列表的参数(address_match_list )是什么,似乎不对呀,是参数只能是通配,还是什么?。
{ any; }
and
{ none;}
多个 listen-on-v6 语句可以使用多个端口号:
listen-on-v6 port 53 { any; };
listen-on-v6 port 1234 { any; };
如果不允许服务器监听任何IPv6 地址,使用:
listen-on-v6 { none; };
如果没有listen-on-v6 语句,服务器不会监听任何Ipv6端口。
6.2.14.5. 查询地址(Query Address)
如果一台服务器不知道查询结果,它会查询其它域名服务吕。query-source 指定了此类查询的地址和端口号。对于在IPv6上的查询,有一个独立的query-source-v6 选项。如果地址是 “*”或者忽略,会使用通配IP地址, (INADDR_ANY) ,如果端口号使用“* ”或者忽略,会随机选择一个非特权使用的端口,默认是:
query-source address * port *;
query-source-v6 address * port *;
Note: 这里指定选项既使用UDP 端口,也使用TCP 端口,但是端口只使用UDP查询,TCP查询总是使用随机的非特权端口。
Note: 参见transfer-source 和 notify-source。
6.2.14.6. 区域数据传送(Zone Transfers)
BIND 有一个用于区域数据传送和设置和设置在系统中装入数据的限制的机制。以下选项用于区域数据传送。
also-notify
定义一个全局的域名服务器的IP地址列表,它是在区域数据更新时发送also NOTIFY 信息时发送的目标,在服务器区域的NS记录列表之外, 这会帮助确定区域数据的拷贝很快集中于秘密服务器。如果一个also-notify 列表出现在zone 语句中,它会替代全局的also-notify 语句。当一个区域中notify 语句设置为no,(这个区域信息改变时)也不会再向全局中also-notify 列表中的地址发送NOTIFY 信息。默认是一个空表。
max-transfer-time-in
区域数据传入时,在超过这么多分钟后将会停止,默认是120 分钟 (2 小时)。
max-transfer-idle-in
区域数据传入时,如果超过这么多分钟传送过程没有变化,传送将终止。默认是 60 分钟(1 小时)。
max-transfer-time-out
向外传送区域数据时,超过这么多分钟后将会终止传送,默认是120 分钟 (2 小时)。
max-transfer-idle-out
向外传送数据时,超过多少分钟传送过程没有进展,传送过程将会被终止。默认是60 分钟(1小时)。
serial-query-rate
序列号查询频率。从属服务器将会周期的向管理服务器查询,以确认序列号是否已经改变,每次查询都会占用从属服务器的一点带宽,为了限制这类带宽的使用, BIND 9 可以限制这类查询发送的频率。这个值是整数,单位是秒最多可以查询多少次,默认是20。(好大呀,如果不想每秒一次怎么办呢,比如想一分钟一次,怎么设置?)
serial-queries
在BIND 8中, serial-queries 选项设置在某一时间最多允许的序列号查询数目,BIND 9 不限制此数,并且忽略这个选项,它使用查询频率serial-query-rate 选项来限制查询。
transfer-format
区域数据传送可以使用两种不同的格式, one-answer 和 many-answers, transfer-format 选项用于管理服务器决定使用哪种格式传送区域数据。one-answer 用于每个信息包中传送一个resource record, many-answers 用于一个信息包中包含尽可能多的resource records 。 many-answers 更有效,但只被新的从属服务器支持,例如BIND 9,BIND 8.x 和打过补丁的 BIND 4.9.5。默认是many-answers, transfer-format 可以被servery语句中的per-server 改变。
transfers-in
同时允许的最大数目的区域数据输入,默认是10,增加这个值可以加速从属服务器得到数据的速度,但同时也增加了本地系统的负载。
transfers-out
同时允许的最大数目的区域数据输出,超过这个值的数据输出请求将被拒绝,默认值是10。
transfers-per-ns
同时从一个指定域名服务器允许的最大数目的区域数据输入,默认是2,增加这个值为加速从属服务器的速度,但也会增加远程服务器的负载。可能被server语句中的transfers语句替代。
transfer-source
transfer-source 决定哪个本地地址用于区域数据输入操作,它也决定本地源地址,可选的UDP端口,用来刷新查询和转发动态更新。如果不设置,默认由系统控制,它经常是与远端地址“最近”的接口。如果在这里指定,这个地址必须出现在远端的allow-transfer 中的区域被传送选项中(option for the zone being transferred)。这个语句为所有的区域设置transfer-source,但是可能会在某个view 或zone中的transfer-source 替换。
transfer-source-v6
和transfer-source相同,用在Pv6中。
notify-source
notify-source 决定哪个本地源地址和一个可选的UDP地址用来发送NOTIFY 信息。这个地址必须出现在从属服务器的masters 的zone子句,或者allow-notify 子句。这个语句为所有区域设置notify-source ,但可以每zone 子句或view 子句中的notify-source 子句替代。
notify-source-v6
和notify-source一样,用在IPv6 下。
6.2.14.7. 操作系统资源限制
服务器的许多资源都可以限制。允许使用有单位的值,比如用1G 代替1073741824 。 unlimited 用在不限制的地方,或者使用可能的最大值。default 值是服务器开始时使用的值,参见size_spec,在 Section 6.1。
以下选项设置域名服务所占用的操作系统资源,一些操作系统不支持部分限制,在这些系统上,如果使用不支持的选项,会有一个警告。
coresize
最大的内核(core dump)值 ,默认是default。
datasize
服务器最多使用的数据内存。默认是default。服务器内存限制是比较麻烦的,如果服务器分配的内存数超过了这个限制,分配会失败,这会使服务器不能执行DNS服务。因此,这个选项很少用来限制内存使用,但是当服务器默认可用内存太小时,可以用来增加操作系统的数据空间限制。如果你想限制服务器使用内存的值,使用max-cache-size 和recursive-clients 选项来代替。
files
服务器同一时间打开文件数的最大值。默认是unlimited。
stacksize
服务器使用栈空间的最大值,默认是default。
6.2.14.8. 服务器资源限制
以下选项更多的是对服务器的资源消耗而不是操作系统。
max-ixfr-log-size
这个选项已经过时。只是为BIND 8 兼容而保留。
recursive-clients
作为客户机行为,同时可执行的最大的递归查询数,默认是1000,因为每一个递归客户使用一点内存,大概20K,如果服务器内存太小,必须减少这个值。
tcp-clients
默认服务器同时可接受的TCP连接数目,默认是100。
max-cache-size
服务器缓存使用的最大数,单位是bytes,当缓存中的数据达到这个限制,服务器会使记录提前过期,以使内存占用小于这个数。在一个有多个views的服务器中,这个限制独立应用到每个view中,默认是unlimited,意味着只有数据的TTL过期才会被清除。
6.2.14.9. 周期任务间隔
cleaning-interval
缓存清理周期:服务器会在每个cleaning-interval(以分钟为单位)从缓存中删除过期的记录,默认是60分钟,如果设置为0,就不会周期性清理了。
heartbeat-interval
区域数据维护周期:服务器会对定期所有具有“dialup ”标志的区域进行维护,默认是60分钟,可选的时间最大值是1天(1440分钟),如果设为 0,就不进行区域数据维护了。
interface-interval
接口扫描时间周期:服务器会周期性的对网络接口扫描,默认是60分钟,如果设为0,那么只在配置文件装入时才会进行扫描。扫描之后,监听会在新增的接口上进行(假定他们支持监听),已经没有的接口上的监听会停止。
statistics-interval
服务器统计周期:周期对服务器的数据进行统计并计入日志,默认是60,如果设为0,就不再进行记录。
注意: BIND9中已经没有