最新消息:时间抓起来说是金子,抓不住就是流水。

BIND配置文件详解

Bind 老子黑牵翻 4639浏览 0评论

options语句

options语句的定义和使用:
options语句用来设置可以被整个BIND使用的全局选项。这个语句在每个配置文件中只有一处。如果出现多个options语句,则第一个options的配置有效,并且会产生一个警告信息。
如果没有options语句,则每个选项使用缺省值。
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 | * ) ]; ]
[ 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] ; ]
[ alsonotify { 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; ]
};
 
version
回答针对服务器版本的请求时的内容。缺省返回的是服务器的真实版本。
directory
服务器的工作目录。配置文件中所有使用的相对路径,指的都是在这里配置的目录下。大多数服务器的输出文件(如named.run)都缺省生成在这个目录下。如果没有设定目录,工作目录缺省设置为服务器启动时的目录‘.’。指定的目录应该是一个绝对路径。
named-xfer
这个选项已经被废弃了。它在BIND8 中,它用来给named-xfer程序设定路径名。在BIND9中,不需要单独的named-xfer程序;它的功能已经内置在域名服务器中。
tkey-domain
这个域名将会附带在由TKEY 生成的所有共享密匙名字的后面。当用户请求进行TKEY交换时,它会为密匙设定或不设定所要求的名称。如果设置了tkey_domain,共享密匙的名字将会是"client specified part"(用户设定的部分)+ "tkey-domain"。否则,共享密匙的名字将是"random hex digits"(随机的16 进制数)+ "tkey-domain"。在大多数情况下,domainname应该是服务器的域名。
tkey-dhkey
针对使用Diffie-Hellman 的TKEY模式的用户,服务器用来生成共享密匙的Diffie-Hellman 密匙。服务器必须可以从工作目录中调入公共和私人密匙。大多数情况下,密匙的名称应该是服务器的主机名。
dump-file
当执行rndc dumpdb命令时,服务器存放数据库文件的路径名。如果没有指定,缺省名字是named_dump.db。
memstatistics-file
服务器输出的内存使用统计文件的路径名。如果没有指定,默认值为named.memstats。
注意:还没有在BIND9中实现!
pid-file
进程ID文件的路径名。如果没有指定,默认为/var/run/named.pid。pid-file是给那些需要向运行着的服务器发送信号的程序使用的。
statistics-file
当使用rndc stats命令的时候,服务器会将统计信息追加到的文件路径名。如果没有指定,默认为named.stats在服务器程序的当前目录中。
port
服务器用来接收和发送DNS协议数据的UDP/TCP端口号。默认为53。这个选项主要用于服务器的检测;因为如果不使用53端口的话,服务器将不能与其它的DNS进行通讯。
random-device
服务器使用的entropy源:entropy主要用于DNSSEC操作,如TKEY的数据交换和加密域的动态更新。此选项指定了entropy将会从哪个设备(或文件)中读取信息。如果它是一个文件,则当文件耗尽后,需要entropy的操作将会失败。如果没有指定,默认值是/dev/random(或等价的),如果它存在,否则就是没有。random-device选项是在服务器启动时,初始化配置时起作用的,在以后的重启时则被忽略。
 
A.Boolean 选项
auth-nxdomain
如果是yes,那么AA位将一直设置成NXDOMAIN响应,甚至在服务器不是授权服务器的情况下都是这样的。默认值是no;这与BIND8不同。如果用户使用的是非常老版本的DNS软件,则有必要把它设置成yes。
deallocate-on-exit
此选项在BIND8中用于检查出口处内存泄露。BIND9忽略此选项,并始终进行检查。
dialup
如果是yes,那么服务器将会像在通过一条按需拨号的链路进行域传送一样,对待所有的域(按需拨号就是在服务器有流量的时候,链路才连通)。根据域类型的不同它有不同的作用,并将集中域的维护操作,这样所有有关的操作都会集中在一段很短的时间内完成,每个heartbeat-interval一次,一般是在一次调用之中完成。它也禁止一些正常的域维护的流量。默认值是no。
dialup选项也可以定义在view和zone语句中,这样就会代替了全局设置中dialup的选项。
如果域是一个主域,服务器就会对所有辅域发送NOTIFY请求。这将激活辅域名服务器中的对域的序列号的检验。这样当建立一个连接时,辅域名服务器才能确认这个域的传输合法性。
如果这个域是一个辅域或是末梢域(stub zone),那么服务器将会禁止通常的“zone up to date”(refresh)请求,为了能发送NOTIFY请求,只有在heartbeat-interval 过期之后才执行。
通过下列的设置,可以实现更好的控制。
1、notify 只发送NOTIFY信息。
2、notify-passive 发送NOTIFY信息,并禁止普通的刷新(refresh)请求。
3、refresh 禁止普通的刷新处理,当heartbeat-interval 过期时才发送刷新请求。
4、passive 只用于关闭普通的刷新处理。
fake-iquery
在BIND8中,此选项用来模拟陈旧的DNS查询类型IQUERY。BIND9不再进行IQUERY模拟。
fetch-glue
这个选项以后不再使用。
has-old-clients
这个选项在BIND8中执行有问题,BIND9则忽略了这个选项。为了达到has-old-clients yes的预期效果,可以设定两个独立选项auth-nxdomain yes和rfc2308-type1 no来代替。
host-statistics
在BIND8中,它可以保留每台和域名服务器交互的主机统计信息。BIND9中不支持。
maintain-ixfr-base
此选项不再使用了。在BIND8用于判定是否保存了增量域传输的处理日志。BIND9任何可能的时候都会保存传输日志。如果需要禁止流出的增量域传输,可以使用provide-ixfr no。
minimal-responses
如果是yes,当产生响应的时候,服务器将只会按照需要将记录添加到authority和additional的数据部分。(例如,delegations,negative responses)。这样会改善服务器的性能。默认值为no。
multiple-cnames
这个选项在BIND8中使用,允许一个域名承认多条CNAME记录(与DNS标准相违
背)。BIND9.2在主hosts文件和动态更新中都严格强制执行CNAME规则。
notify
如果是yes(默认),当一个授权的服务器修改了一个域后,DNS NOTIFY信息被发送出去。此信息将会发给列在域NS记录上的服务器(除了由SOA MNAME标示的主域名服务器)和任何列在also-notify选项中的服务器。
如果是explicit,则notify将只发给列在also-notify中的服务器。如果是no,就不会发出任何报文。
notify选项也可能设定在zone语句中,这样它就替代了options中的notify 语句。如果notify会使得辅域名服务器崩溃,就需要将此选项关闭。
recursion
如果是yes,并且一个DNS询问要求递归,那么服务器将会做所有能够回答查询请求的工作。如果 recursion是off的,并且服务器不知道答案,它将会返回一个推荐(referral)响应。默认值是yes。注意把recursion设为 no,不会阻止用户从服务器的缓存中得到数据,它仅仅阻止新数据作为查询的结果被缓存。服务器的内部操作还是可以影响本地的缓存内容,如NOTIFY地址查询。
rfc2308-type1
设置成yes 将会使得服务器发送NS 记录和关于negative answer 的SOA记录。默认值为no。
注:BIND9 中还不支持。
use-id-pool
此选项已经不再使用。BIND9 始终都是从池中分配请求ID的。
zone-statistics
如果是yes,缺省情况下,服务器将会收集在服务器所有域的统计数据。这些统计数据可以通过使用rndc stats来访问,rndc stats命令可以将这些信息转储到statistics-file定义的文件中去。
use-ixfr
这个选项不再使用。如果需要针对一个或多个特殊的服务器关闭IXFR,可以参考provide-ixfr中的内容。
provide-ixfr
参阅中关于provide-ixfr的陈述。
request-ixfr
参阅关于request-ixfr的陈述。
treat-cr-as-space
这个选项应用于BIND8中,使服务器正确处理回车(”\r”)字符,就象其它的空格或tab字符一样。这样可以便于在unix系统上加载由NT或DOS系统生成的域文件。在BIND9中,UNIX”的\n”和DOS 的”\r\n”都可以正确处理为换新行,这个选项就被忽略了。
additional-from-auth
additional-from-cache
当回答具有additional数据的请求,或者当在CNAME 和DNAME串的后面时,这些选项控制一个权威服务器的操作。
当这两个选项都被设成yes(默认状态),并且查询的是授权的数据(这个域就配置在本地服务器中)时,回答中的additional部分的数据将使用来自于其它授权域和cache。
在许多情况下这是不需要的,比如在缓存内容的正确性受到怀疑的情况下,或是在某些辅域可能被非法修改的服务器。还有,避免对这些additional数据的搜索将会加速服务器运转。
例如,如果一个查询需要主机foo.example.com的MX记录,找到的记录是"MX 10
mail.example.net",如果知道的话, mail.example.net的地址记录(A,A6 和AAAA)也会被提供出来。把选项设置为no,则禁止了这种操作。
这些选项用于授权的服务器,或者是授权的视图中。把它们设成no,但没有同时设置recursion no,将会使得服务器忽略这些选项,并记录一个警告日志。
设定additional-from-cache为no实际上针对additional信息的查询和正在响应的查询,都禁止了缓存的使用。这常常使用在一台授权的服务器中,因为在这里缓存数据的正确性非常重要。
当一台域名服务器不提供递归查询时,并且查询的名称并不在本地域中,一般会对根服务器或者其他已知的上级服务器回答"upwards referral(向上推荐)"。既然在向上查询中的数据来自于缓存,那么当additional-from-cache被设定为no时,服务器就不能提供向上推荐。相反,它会使用REFUSED(拒绝)回答这些查询。因为向上推荐不是在用户解析过程中需要的,所以就不会出任何问题。
match-mapped-addresses
如果是yes,那么一个ipv4映射成的ipv6地址就会匹配任何地址匹配表中能匹配于对应的ipv4 地址的记录。打开这个选项,对于运行了ipv6的linux系统有时非常有用,这样通过地址映射,就可以使得ipv4的TCP连接(如域传送)实现在 Ipv6的soket上,因为地址匹配列表是给Ipv4设计的。
 
B. 转发
转发功能可以用来在一些服务器上产生一个大的缓存,从而减少到外部服务器链路上的流量。它可以使用在和internet没有直接连接的内部域名服务器上,用来提供对外部域名的查询。只有当服务器是非授权的,并且缓存中没有相关记录时,才会进行转发。
forward
此选项只有当forwarders列表中有内容的时候才有意义。当值是First,默认情况下,使服务器先查询设置的forwarders,如果它没有得到回答,服务器就会自己寻找答案。如果设定的是only,服务器就只会把请求转发到其它服务器上去。
forwarders
设定转发使用的ip地址。默认的列表是空的(不转发)。转发也可以设置在每个域上,这样全局选项中的转发设置就不会起作用了。用户可以将不同的域转发到服务器上,或者对不同的域可以实现forward only或first的不同方式,也可以根本就不转发。
 
C. 访问控制
可以根据用户请求使用的IP地址进行限制。
allow-notify
设定哪个主机上的辅域(不包括主域)已经进行了修改。allow-notify也可以在zone语句中设定,这样全局options中的allow-notify选项在这里就不起作用了。但它只对辅域有效。如果没有设定,默认的是只从主域发送notify信息。
allow-query
设定哪个主机可以进行普通的查询。allow-query也能在zone语句中设定,这样全局options中的allow-query选项在这里就不起作用了。默认的是允许所有主机进行查询。
allow-recursion
设定哪台主机可以进行递归查询。如果没有设定,缺省是允许所有主机进行递归查询。注意禁止一台主机的递归查询,并不能阻止这台主机查询已经存在于服务器缓存中的数据。
allow-v6-synthesis
设定哪台主机能接收对ipv6的响应。
allow-transfer
设定哪台主机允许和本地服务器进行域传输。allow-transfer也可以设置在zone语句中,这样全局options中的allow-transfer选项在这里就不起作用了。如果没有设定,默认值是允许和所有主机进行域传输。
blackhole
设定一个地址列表,服务器将不会接收来自这个列表的查询请求,或者解析这些地址。从这些地址来的查询将得不到响应。默认值是none。

转载请注明:LINUX服务器运维架构技术分享 » BIND配置文件详解

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址