分类:
2007-07-17 13:30:46
server ip_addr {
[ bogus yes_or_no ; ]
[ provide-ixfr yes_or_no ; ]
[ request-ixfr yes_or_no ; ]
[ edns yes_or_no ; ]
[ transfers number ; ]
[ transfer-format ( one-answer | many-answers ) ; ]]
[ keys { string ; [ string ; [...]] } ; ]
};
server语句定义与远程服务器相关的特性。
server 可以出现在配置文件的最上级,或者在view 语句中。如果一个view 语句包含一个或几个server 语句,那么只有view 语句中的有效,而最上级的则被忽略。如果view 没有包含server 语句,则把最高级的server 语句作为默认值使用。
如果发现远程服务器提供“坏”的数据,可以给这个服务器打上bogus (假的,伪造的)标志,这会阻止继续向这个服务器查询,默认的bogus 值是 no。
provide-ixfr 子句决定本地主机是否作为管理服务器,并使它对指定的远程从属服务器的增量区域数据传送请求作出应答。如果设为yes,在需要时将会提供增量传送,如果设为no,所有对远程服务器的传送都会是非增量的。如果没有设置,在view中或全局中的 provide-ixfr 值将会成为默认值。
request-ixfr子句决定本地主机是否作为从属服务器, 并对指定的远程服务器作出增量区域数据传送请求。如果没有设置,在view中或全局中的 request-ixfr值将会成为默认值。
对不支持IXFR的服务器进行IXFR 请求会自动回应成AXFR,因此,不需要手工指定哪个服务器支持IXFR,哪个不支持。全局默认为yes 总是能够很好的工作 。provide-ixfr 和request-ixfr 存在的用途是在双方都支持IXFR时禁止IXFR的使用,例如其中有一台服务器有很多问题如果使用IXFR会导致数据损坏。
edns 子句决定本地主机与远程主机通讯时是否尝试使用EDNS,默认是yes。
服务器支持两种区域数据传送方法。第一种,one-answer,使用每一个RR记录一条信息的方法,第二种,many-answers ,会在一个包中尽可能多的加入RR记录。many-answers 更有效,但只在语句语法 trusted-keys 语句定义DNSSEC 安全根区域(security roots)。DNSSEC在Section 4.7中描述,安全根区域(security root)在得到非管理区域的公钥时定义。但是不能通过DNS安全的获得。因为它是DNS根区域或者没有指定它的父区域。一旦一个密钥被配置为可信任的密钥,它就会被认为是有效的,并被用来验证安全性。解析器在安全根区域的所有子域的DNS数据中尝试DNSSEC的有效性。 trusted-keys 语句可以包含多个密钥,每个包含密钥的域名,标志,协议,算法和64位的密钥数据。 view 是BIND 9中一个功能强大的新特性,它可以使DNS服务器根据不同的用户来回答不同的答案。它有时可以使DNS服务器表现的象多个服务器一样而不需要真正安装多个服务器。 view 语句定义的一个部分是为一部分客户的。如果一个客户的源IP地址匹配了一个view 的match-clients 中的地址匹配表address_match_list,它就匹配了一个view。如果没有指定, match-clients 和 match-destinations 默认都是匹配所有的地址。一个view 也可以象match-recursive-only一样指定,它是指只有从匹配客户的递归查询才可以匹配这个view。view 语句的顺序是重要的,一个客户请求在遇到第一个view中的匹配时就会被解析。 只有匹配view的用户才可以访问有view语句的区域。在多个view中定义有相同名字的区域,不同的用户会得到不同的数据。例如,对内网和外网用户得到的DNS数据不相同。 许多options 语句中的选项都可以用在view 语句中,并且只在view起效的地方这些选项才起效。当没有view值指定时,OPTIONS中的值是默认值。区域数据可以在view中指定默认的值,这个值默认通常是OPTIONS中指定的值。 Views 要指定类型,如果没有指定,假定就是class IN。注意所有non-IN 的views必须包括一个hint zone,因为只有IN class 有内置hints。 如果配置文件中没有view 语句,默认的view会建立,它自动匹配所有客户,使用class IN,配置文件中指定的最高级的zone 语句被认为是默认view中的一部分。如果view 语句存在,所有的zone 语句都必须包含在view 语句中。 这里是一个典型的使用view设置的分离 DNS的例子。trusted-keys {
string number number number string ;
[ string number number number string ; [...]]
};
语句定义和使用
语句语法
view view_name [class] {
match-clients { address_match_list } ;
match-destinations { address_match_list } ;
match-recursive-only yes_or_no ;
[ view_option; ...]
[ zone-statistics yes_or_no ; ]
[ zone_statement; ...]
};
语句的定义和使用
view "internal" {
// This should match our internal networks.
match-clients { 10.0.0.0/8; };
// Provide recursive service to internal clients only.
recursion yes;
// Provide a complete view of the example.com zone
// including addresses of internal hosts.
zone "example.com" {
type master;
file "example-internal.db";
};
};
view "external" {
match-clients { any; };
// Refuse recursive service to external clients.
recursion no;
// Provide a restricted view of the example.com zone
// containing only publicly accessible hosts.
zone "example.com" {
type master;
file "example-external.db";
};
};