语句语法
如下:
options {
[ version version_string; ]
[ directory path_name; ]
[ named-xfer path_name; ]
[ tkey-domain domainname; ]
[ tkey-dhkey key_name key_tag; ]
[ dump-file path_name; ]
[ memstatistics-file path_name; ]
[ pid-file path_name; ]
[ statistics-file path_name; ]
[ zone-statistics yes_or_no; ]
[ auth-nxdomain yes_or_no; ]
[ deallocate-on-exit yes_or_no; ]
[ dialup dialup_option; ]
[ fake-iquery yes_or_no; ]
[ fetch-glue yes_or_no; ]
[ has-old-clients yes_or_no; ]
[ host-statistics yes_or_no; ]
[ minimal-responses yes_or_no; ]
[ multiple-cnames yes_or_no; ]
[ notify yes_or_no | explicit; ]
[ recursion yes_or_no; ]
[ rfc2308-type1 yes_or_no; ]
[ use-id-pool yes_or_no; ]
[ maintain-ixfr-base yes_or_no; ]
[ forward ( only | first ); ]
[ forwarders { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
[ check-names ( master | slave | response )( warn | fail | ignore ); ]
[ allow-notify { address_match_list }; ]
[ allow-query { address_match_list }; ]
[ allow-transfer { address_match_list }; ]
[ allow-recursion { address_match_list }; ]
[ allow-v6-synthesis { address_match_list }; ]
[ blackhole { address_match_list }; ]
[ listen-on [ port ip_port ] { address_match_list }; ]
[ listen-on-v6 [ port ip_port ] { address_match_list }; ]
[ query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ]; ]
[ query-source-v6 [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ]; ]
[ max-transfer-time-in number; ]
[ max-transfer-time-out number; ]
[ max-transfer-idle-in number; ]
[ max-transfer-idle-out number; ]
[ tcp-clients number; ]
[ recursive-clients number; ]
[ serial-query-rate number; ]
[ serial-queries number; ]
[ transfer-format ( one-answer | many-answers ); ]
[ transfers-in number; ]
[ transfers-out number; ]
[ transfers-per-ns number; ]
[ transfer-source (ip4_addr | *
) [port ip_port] ; ]
[ transfer-source-v6 (ip6_addr | *
) [port ip_port] ; ]
[ notify-source (ip4_addr | *
) [port ip_port] ; ]
[ notify-source-v6 (ip6_addr | *
) [port ip_port] ; ]
[ also-notify { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
[ max-ixfr-log-size number; ]
[ coresize size_spec ; ]
[ datasize size_spec ; ]
[ files size_spec ; ]
[ stacksize size_spec ; ]
[ cleaning-interval number; ]
[ heartbeat-interval number; ]
[ interface-interval number; ]
[ statistics-interval number; ]
[ topology { address_match_list }];
[ sortlist { address_match_list }];
[ rrset-order { order_spec ; [ order_spec ; ... ] ] };
[ lame-ttl number; ]
[ max-ncache-ttl number; ]
[ max-cache-ttl number; ]
[ sig-validity-interval number ; ]
[ min-roots number; ]
[ use-ixfr yes_or_no ; ]
[ provide-ixfr yes_or_no; ]
[ request-ixfr yes_or_no; ]
[ treat-cr-as-space yes_or_no ; ]
[ min-refresh-time number ; ]
[ max-refresh-time number ; ]
[ min-retry-time number ; ]
[ max-retry-time number ; ]
[ port ip_port; ]
[ additional-from-auth yes_or_no ; ]
[ additional-from-cache yes_or_no ; ]
[ random-device path_name ; ]
[ max-cache-size size_spec ; ]
[ match-mapped-addresses yes_or_no; ]
[ root-delegation-only [ exclude { namelist
} ] ; ]
};
语句的定义和使用
options 语句为BIND建立一个全局的选项。它在配置文件中只能定义一个。如果多于一个,如果多于一个,会使用第一个,并产生一个警告信息。如果没有options 语句,他的每个选项都使用默认值。
version
通过查询version.bind 回复查询,使用 CHAOS类别,默认是BIND的实际版本号。
directory
服务器的工作目录,配置文件中所有相对路径的路径名都基于此目录,默认的输出文件位置。 (例如named.run) ,如果没有指定,默认的目录是`.',就是BIND启动的目录。指定这个目录应该使用绝对路径。
named-xfer
这个选项是原来版本的。它在BIND 8 中用来指明named-xfer 程序使用的路径。在In BIND 9中,没有独立的named-xfer 程序了,它内建在服务程序中。
tkey-domain
在TKEY 产生的所有共享密钥后添加的域。当客户需要TKEY 交换时,它可能指明或不指明密钥的名字。如果指明,密钥的名字会是"client specified part" + "tkey-domain",否则,共享密钥的名字是"random hex digits" + "tkey-domain",在更多情况下,域的名称应该是服务器的域名。
tkey-dhkey
服务器使用Diffie-Hellman 密钥模式的TKEY,必须能够在工作目录中载入公钥和私钥,大多数情况下,密钥名字应该是服务器的主机名。
dump-file
当 rndc dumpdb运行时,服务器建立的数据库路径文件名,如果不指定,默认是named_dump.db。
memstatistics-file
服务器退出时记录内存使用统计文件,默认是named.memstats.
Note: 在 BIND 9中已经没有了。
pid-file
服务器记录服务运行PID号的文件。如果没有指定,默认是var/run/named.pid。这个文件用于需要给域名发信号的程序。
statistics-file
当使用rndc stats时建立或添加的统计文件路径名,默认是服务器的当前目录下的named.stats 格式参见Section 6.2.14.15
port
UDP/TCP 端口号,服务器用来接收或发送DNS 协议数据。默认是53,这个选项主要用于测试,如果不定为53,它就不能和其它的DNS通信。
random-device
服务器使用的信息源,它主要是由DNSSEC操作所需要。例如一个加密区域的TKEY 传送和动态更新,这个选项指定了读取信息的设备或文件,如果是文件,当文件结束时,操作为失败。不指定的默认值是/dev/random (或等价的东西) , random-device 选项在配置初始化载入时起效,以后重新载入时会被忽略。
root-delegation-only
用一个可选的排除表,在TLDs和根区打开强制的delegation-only 模式。
注意有些TLDs不是delegation only 的(例如:"DE", "LV", "US" 和"MUSEUM").
options {
root-delegation-only exclude { "de"; "lv"; "us"; "museum"; };
};
选项
auth-nxdomain
如果是 yes,那么NXDOMAIN 的AA 位总是置1,即使服务器不是真正的管理服务器。默认是no; 这与BIND 8是不同的,如果使用了一个非常老的DNS 软件,就需要设成yes。
deallocate-on-exit
这个选项用在BIND 8 中,退出时检查内存使用问题,BIND 9 忽略这个选项并每次都进行检查。
dialup
如果设为yes, 服务器将认为所有区域数据传送是按需拨号的连接。它会带给服务器一些流量,对不同的区域类型有不同的影响,集中进行区域 维护,这样,这些事情在很短的时间就完成了。在每个这样的短的间隔时间里,它也会影响正常区域的维护流量。默认是no。
dialup 选项也会在view 和zone语句中,这种情况下,它会替换全局设定里的值。
如果区域是一个管理区域,服务器会发送NOTIFY 请求到所有的从属服务器。这会导致从属服务器检查管理主机的身份 (假定从属主机支持 NOTIFY),允许从属机在连接激活状态下验证管理主机。
如果区域是从属主机或是stub区域,服务器将会阻止通常的"zone up to date" (更新) 请求,并只在周期完成后发送NOTIFY 请求。
更精细的控制可以使用notify ,只发送NOTIFY 信息, notify-passive 发送NOTIFY 信息,阻止正常的更新请求,refresh 会阻止正常的更新并在间隔周期结束后再发送更新请求,Passive则只阻止正常的更新。
fake-iquery
在BIND 8中,这个选项用来模拟过时的DNS请求类型IQUERY, BIND 9不再模拟这种请求。
fetch-glue
这个选项已经过时。
has-old-clients
这个选项在BIND 8中有问题,在BIND 9中被忽略。模拟has-old-clients yes,可以用两个选项: auth-nxdomain yes 和 rfc2308-type1 no 来代替。
host-statistics
在BIND 8中,它使域名服务保存一个与所有相关主机的统计信息,在 BIND 9已经取消了。
maintain-ixfr-base
已经过时。BIND 8 中用来决定哪里记录增量数据传送, BIND 9 只要需要就记录,如果不需要记录这个,可以设置provide-ixfr no。
minimal-responses
如果是yes,服务器在产生回应信息时只给管理区域(authority)回应增加的记录和必须加入的数据部分。(例如 delegations, negative responses)。这会提高服务器的性能表现,默认是no。
multiple-cnames
这个选项在BIND 8中允许域名有多个CNAME 记录,不符合标准的DNS,BIND 9.2 则严格按CNAME 规则,不管是主管理文件还是动态更新域。
notify
如果是yes (默认), DNS的 NOTIFY信息会在区域信息改变时发送,参见Section 3.3,发送给在区域的NS记录中列出的主机 (除了在SOA MNAME 域中定义过的),和所有在also-notify 中列出的主机。
如果是explicit, notifies 就只发送给列在also-notify中的主机,如果是no,则不发送notifies信息。
notify 选项也会在zone 语句中出现,那时,它会替代全局中设置的值,只在这个选项有可能使从属主机崩溃时才会关闭它。
recursion
设置为yes,并且DNS 查询需要递归,那么,服务器会尝试递归来回应那个查询请求。如果递归被关闭,服务器也不知道要查询的答案,它会回应一个推荐应答(referral response)。默认是yes。如果设置为no,不会阻止客户从服务器缓存中获得数据,它只会阻止客户机的新查询结果存入缓存。服务器内部操作依旧会产生缓存,如NOTIFY 地址,参见fetch-glue。
rfc2308-type1
设置为yes 会使服务器发送否定答复向NS 记录时也向SOA 记录发送,默认是no。
Note: 在BIND 9中已经取消。
use-id-pool
已经过时。BIND 9 总是从“池(pool)”中分配查询号。
zone-statistics
如果是yes(默认),服务器会收集所有区域的统计信息。这个信息可以由rndc stats 查询,它会把这些统计信息写入一个statistics-file中的文件。参见 Section 6.2.14.15.
use-ixfr
已经过时。如果想要禁止某个服务器的IXFR,想查询provide-ixfr信息,参见 Section 6.2.16,或 Section 4.2.
provide-ixfr
参见Section 6.2.16 中的provide-ixfr 。
request-ixfr
参见Section 6.2.16 中的request-ixfr 。
treat-cr-as-space
这个选项在BIND 8 用来把“回车符号("\r")”当成“空格”或“tab”符号,它使UNIX系统下的主机载入在DOS或者NT下主机产生的配置文件时更容易。在BIND 9中, UNIX "\n" 和 NT/DOS "\r\n" 都可以被接受,所以这个选项没用了。
additional-from-auth, additional-from-cache
这个选项控制管理服务器在回复有额外数据的查询请求时的行为,或者查询数据在CNAME 或 DNAME 后面。
这两个选项都设置成yes (默认)时,管理服务器已经回复了查询要求 (这个服务器中配置了一个区域),回复的数据额外的部分会使用其它管理区域和缓存中的数据。有些情况下,我们不希望发生这种情况,例如担心缓存的正确性,或者从属服务器可能加入或修改不被信任的第三方数据。而且,避免查找额外数据也会加速服务器的操作。
例如,如果查询请求一个foo.example.com 主机的MX 记录,查到记录是 "MX 10 mail.example.net",通常如果知道mail.example.net的地址记录 (A, A6, and AAAA), 也会同时发送。设置为no 则禁止此功能。
这个选项经常用在只作管理区域的服务器里,或只作管理的(views)里。把它设置为no 而不把recursion 设为no,会使服务器忽略这个选项并记录下警告信息。
指定additional-from-cache 为no 则不仅禁止在额外数据中查找缓存,也会禁止在缓存中查找数据。这在仅作管理的服务器中是需要的。
当一个不允许递归的域名服务器遇到了不属于它知道答案的地址查询,它会向它的上级域或根域发一个"upwards referral" 地址查询,但上级的域可能仍然是从本机的缓存中找到答复,因此,它回复这类查询是REFUSED。
match-mapped-addresses
如果是yes,那么IPv4映射的IPv6地址将会匹配所有对应的Ipv4地址。这个选项有时在使用Ipv6的Linux系统中有用,用来工作在特殊的内核上, 例如在区域数据传送时使用Ipv4的TCP与Ipv6的Socket使用映射地址相连接,导致为Ipv4设计的地址匹配表匹配失败(原文看起来也是有些矛盾,最后一句话如果加上“不这样的话会”可能更能表达原意)。不允许其它原因使用这个选项。