本文檔摘錄自《BIND9管理員手冊》,若是有不對或者不清楚的地方,請你們告訴我,謝謝!
BIND配置文件詳解(二)
6.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 過時
以後才執行。
經過下列的設置,能夠實現更好的控制。
一、notify 只發送NOTIFY信息。
二、notify-passive 發送NOTIFY信息,並禁止普通的刷新(refresh)請求。
三、refresh 禁止普通的刷新處理,當heartbeat-interval 過時時才發送刷新請求。
四、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。
D. 接口
接口和端口(服務器回答來自於此的詢問)可使用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 的ip地址上打開53端口,在除了1.2.3.4的1.2 網段上打開1234 端口。
若是沒有設定listen-on,服務器將在全部接口上監聽端口53。
listen-on-v6選項用來設定監聽進入服務器的ipv6請求的端口。
服務器並不象在ipv4中那樣對每一個IPV6端口地址綁定一個獨立的socket。相反,它一直監聽ipv6通配的地址。這樣,對於listen-on-v6語句惟一的address_match_list的參數就是:
{ any; }和{ 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地址。
E. 查詢地址
若是服務器查不到要解析的地址,它將會查詢其它域名服務器。query-source能夠用來設定這類請求所使用的地址和端口。對於使用ipv6發送的查詢,有一個獨立的query-source-v6選項。若是address是*或者被省略了,則將會使用一個通配的IP地址
(INADDR ANY)。若是port是*或者被省略了,則將會使用一個隨機的大於1024的端口。
默認爲:
query-source address * port *;
query-source-v6 address * port *;
注:query-source選項中設置的地址是同時用於UDP和TCP兩種請求的,可是port僅僅用
於UDP請求。TCP請求使用的是隨機的大於1024的端口。
F. 域傳輸
BIND有適當的機制來簡化域傳輸,並限定系統傳輸的負載量。下列設定應用於域傳輸:
also-notify
定義一個用於全局的域名服務器IP地址列表。不管什麼時候,當一個新的域文件被調入系統,域名服務器都會向這些地址,還有這些域中的NS記錄發送NOTIFY信息。這有助於更新的域文件儘快在相關的域名服務器上收斂同步。若是一個also-notify列表配置在一個zone語句中,全局options中的also-notify語句就會在這裏失效。當一個zone-notify語句被設定爲no,系統就不會向在全局中also-notify列表中的IP地址發送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
輔域名服務器將會定時查詢主域名服務器,來肯定域的串號是否改變。每一個查詢將會佔用一些輔域名服務器網絡帶寬。爲限制佔用的帶寬,BIND9能夠限制每一個查詢發送的頻率。serial-query-rate的值是一個整數,就是每秒能發送的最大查詢數。默認值爲20。
serial-queries
在BIND8中, serial-queries選項設定了在任什麼時候候容許達到的最大的併發查詢數。BIND9不限制串號查詢的數量並忽略了serial-queries選項。它會使用serial-query-rate選項來限制查詢的頻率。
transfer-format
域傳輸能夠用兩種不一樣格式,one-answer和many-answer。transfer-format選項使用在主域名服務器上,用來肯定發送哪一種格式。one-answer在每一個資源記錄傳輸中使用一個
DNS消息。many-answer則將盡量多的資源記錄集中在一個消息中。many-answer是
更加有效的,但只有相對比較新的輔域名服務器才支持它,如BIND九、BIND8.x 和打了補丁的BIND4.9.5。默認的設置爲many-answer。使用server語句中的相關選項,能夠替代全局選項中的transfer-format設置。
transfers-in
能夠同時運行的進入的域傳輸的最大值。默認值爲10。增長transfers-in的值,能夠加速輔域的收斂速度,但也可能增長本地系統的負載。
transfers-out
能夠同時運行的發出的傳輸的最大值。超過限定的域傳輸請求將會被拒絕。默認值爲10。
transfers-per-ns
從一臺指定的遠程域名服務器,同時進行的進入的域傳輸的最大值。默認值2。增長
transfers-per-ns的值,會加速輔域的收斂速度,但也可能增長遠程系統的負載。使用
server語句中的transfer短語能夠替代全局選項中的transfers-per-ns。
transfer-source
transfer-source決定在從外部域名服務器上獲得域傳送數據時,選哪一個本地的ip地址使用在IPV4的TCP鏈接中。它能夠選定IPV4的源地址,和可選的UDP端口,用於更新的查詢和轉發的動態更新。不過不作設置,它會缺省挑選一個系統中的地址(經常是最靠近遠程終端服務器的接口地址)。但這個地址必須已經配置在遠程終端的allow-tranfer選項中,才能進行域傳送。此語句爲全部的域設定了transfer-source,但若是view或zone中也使用了transfer-source語句,則全局選項中的配置就在這裏失效了。
transfer-source-v6
和transfer-source同樣,只是域傳輸是經過IPV6執行的。
notify-source
notify-source肯定使用哪些本地的源地址和可選的UDP端口,用於發送NOTIFY消息。這個地址必須在輔域名服務器的master域或在allow-notify中設置。它會爲全部域設定
notify-source, 但若是view或zone中也使用了notify-source語句,則全局選項中的配置就在這裏失效了。
notify-source-v6
與notify-source相似,但應用於ipv6地址的notify報文的發送。
G. 操做系統資源限制
能夠限制服務器對許多系統資源的使用。這些就是經過調節資源限制的數值來完成的。例如,1G能夠代替1073741824,限定一個十億字節的限制。Unlimited 要求不限制使用,或者最大可用量。Default 將會使用服務器啓動時的缺省值。
下列選項設定了域名服務器進程的操做系統資源佔用限制。一些操做系統可能不支持一些
或全部的限制。在這樣的系統中,當使用不被支持的限制時,會產生一個告警。
coresize
core dump文件的最大值尺寸。默認值爲default
datasize
服務器可使用的最大數據內存量。默認值爲default。這是一個在服務器系統內存中
已經設置了的參數。若是服務器要超過這個限制的內存量,則會失敗,這將使服務器不能
提供DNS服務。因此,這個選項做爲一種限制服務器所使用的內存量的方式就不太有效,可是它可以將操做系統設置的過小的缺省數據尺寸增大。若是要限制服務器使用的內存量,可使用max-cache-size和recursive-clients選項。
files
服務器能夠同時打開的最大文件數。默認是unlimited。
stacksize
服務器可使用最大的堆棧內存量。默認值爲default。
H. 服務器資源限制
下列選項設定了服務器資源使用限制,這是由域名服務內部作的而不是操做系統設定的。
max-ixfr-log-size
此選項比較老;它由BIND8兼容接受或者忽略。
recursive-clients
服務器同時爲用戶執行的遞歸查詢的最大數量。默認值1000,由於每一個遞歸用戶使用許多位內存,通常爲20KB,主機上的recursive-clients選項值必須根據實際內存大小調整。
tcp-clients
服務器同時接受的TCP鏈接的最大數量,默認值100。
max-cache-size
服務器緩衝使用的最大內存量,用比特表示。但在緩存數據的量達到這個界限,服務器將會使記錄提前過時這樣限制就不會被突破。在多視圖的服務器中,限制分別使用於每一個視圖的緩存。默認值沒有限制,意味着只有當總的限制被突破的時候記錄纔會被緩存清除。
I. 週期性任務間隔
cleaning-interval
服務器將在cleaning-interval的每一時間中從緩存中清除過時的資源記錄。默認爲60分鐘,若是設置爲0,就不會有周期性清理。
heartbeat-interval
服務器將會爲全部標記dialup的域運行維護任務,不管它的間隔在什麼時候到期。默認爲60分鐘,合理值不超過1天(1440 分鐘)。若是設定爲0,不會爲這些域產生域維護。
interface-interval
服務器將在每一個interface-interval時間掃描網絡接口表。默認爲60分鐘。若是設置爲0,僅當配置文件被加載時纔會進行接口掃描。在掃描以後,全部新接口上的監聽器將會被打開(listen-on配置使用的接口)。關閉接口上的監聽器將會被清除。
statistics-interval
域名服務器統計將會在每一個statistics-interval時刻被記入日誌。默認值60分鐘,若是設爲0,就沒有統計數據記入日誌。
注意:BIND9 不支持
J. 拓撲
當服務器從一個域名服務器列表中選擇一個域名服務器查詢時,這些域名服務器是沒有什麼不一樣的,可是服務器會先選擇在拓撲結構上距離本身最近的服務器去作解析。拓撲語句使用一個地址匹配列表而且以一個特殊方式解釋它。每一個頂層列表元素被賦了一段距離,非否認元素獲得它們在列表中的位置的距離,匹配距離表的開頭越近,它離服務器的距離就越小。否認匹配元素將會從服務器分配最大距離;沒有匹配的地址將會獲得一個比任何非否認表元素都遠的而且比任何否認元素近的距離。例如:
topology {
10/8;
!1.2.3/24;
{ 1.2/16; 3/8; };
};
最優先網段10的服務器,而後是在網絡1.2.0.0(網絡掩碼255.255.0.0)和3.0.0.0(網絡掩
碼255.0.0.0);再就是沒列出來的,可是沒有否認的網段。否認的網段1.2.3 的主機(網絡掩
碼255.255.255.0)。
默認拓撲爲:
topology { localhost; localnets; };
注意:BIND9不支持拓撲選項。
K. sortlist 語句
對一個DNS詢問的響應包括造成一個資源記錄集(RR集)的多資源記錄(RRs)。名稱服務器將會以不肯定的順序返回在RRset中的RRs(參見rrset-order語句)。用戶端的解答器會從新適當的排列,也就是說,使用任何在本地網上的地址優先於其餘的地址。儘管如此,不是全部的解答器能夠作到或者正確配置。當用戶使用一個本地服務器的時候,服務器能夠基於用戶地址進行分類。這隻要求配置名稱服務器,而不是全部用戶端。
sortlist語句(以下)使用一個地址匹配表甚至比拓撲語句還要特殊的解釋它。每一個在sortlist 的頂層語句必須本身就是一個清楚的擁有一個或兩個元素的地址匹配表。每一個頂級表的第一個元素(多是一個IP地址,一個IP前綴,一個ACL名稱或者一個地址匹配表)與查詢源地址進行匹配檢查直到找到匹配的地址。
一旦查詢的源地址被匹配,若是頂級語句只包括一個元素的話,真正的匹配於源地址的原始元素就被用來選擇地址,對應的轉移到了響應的開始。若是語句是兩個元素的表,那麼第二個元素遵守拓撲語句中地址匹配表的方式進行處理。每一個頂級元素被賦予一個距離和與響應的開頭距離最近的地址。
在下列例子中,任何來自於任何主機地址的查詢將會獲得本地網上第一首選地址的響應。下一個首選地址在網段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上主機的查詢將只優先直連的網段。
sortlist {
{ localhost; //IF 主機名
{ localnets;
192.168.1/24; //THEN 在下列網中最適合
{ 192.168.2/24; 192.168.3/24; }; }; }; //IF 在C類192.168.1
{ 192.168.1/24; //THEN 使用.1, 或.2 或.3
{ 192.168.2/24; 192.168.3/24; }; }; };
{ 192.168.2/24; //IF C類192.168.1
{ 192.168.2/24; //THEN使用2, 或.1 或.3
{ 192.168.1/24; 192.168.3/24; }; }; };
{ 192.168.3/24; //IF 在C類192.168.3
{ 192.168.1/24; 192.168.2/24; }; }; }; //THEN使用.3 或.1 或.2
};
};
下個例子將給出一個本地主機和直接鏈接到網上的主機的合理的狀態(behavior)。它很象BIND4.9.x分類的地址狀態。從本地主機發給查詢的響應支持任何直接鏈接的網絡,從其餘直接鏈接網絡上的主機發送給查詢的響應優先在相同網段上的地址。對其餘查詢的響應沒有分類。
sortlist {
{ localhost; localnets; };
{ localnets; };
};
L. RRset 排序
當多重記錄在一個解答中被返回的時候,設定在響應中的記錄順序是頗有用的.。
rrset-order語句容許對在多記錄響應下的記錄順序的設定。參見sortlist語句。
一個order_spec定義以下:
[ class class_name ][ type type_name ][ name "domain_name"] order ordering
若是沒有設定類,默認值爲ANY。若是沒有設定類型,默認值爲ANY。若是沒有設定
名稱,默認值爲」*」。
合法的排序值是:
fixed:記錄以它們在域文件中的順序
random:記錄以隨機順序被返回
cyclic:記錄以環順序被返回
例如:
rrset-order {
class IN type A name "host.example.com" order random;
order cyclic;
};
將會使得任何處於IN類中的A類記錄的響應以隨機順序返回,IN 類以"host.example.com"爲後綴。其餘的記錄以循環記錄被返回。
若是多重rrset-order語句出現,它們並不組合在一塊兒,只適用於最後一個條。
注意:rrset-order語句不被BIND9支持,BIND9目前只支持"random-cyclic"排序,服務器隨機選擇RRset集中的開始點,有順序返回在那個點開始的記錄。若是須要的話圍繞RRset
結尾。
M. 合成的IPV6響應
許多現存的子域解答器支持ipv6的DNS查詢(定義在RFC1986 中,使用AAAA 記錄進行前向查詢和ip6.int域中的」nibble labels」進行反向查詢)可是不支持RFC2874-style 查詢(使用A6記錄和在ip6.arpa 中的二進制標籤)對於那些但願繼續使用子域解答器而不是轉到
BIND9 lightweight 解答器的人來講,BIND 9提供一種自動把RFC1886-型查詢轉換成
RFC2874-型查詢的方法。返回合成的AAAA和PTR記錄。
這個性質默認下是無效的,能夠在分用戶基礎上添加一個allow-v6-synthesis
{ address_match_list };子句到選項或者視圖語句中。當它被激活時,遞歸AAAA查詢使服
務器先進行A6查詢,若是失敗,執行AAAA查詢。無論哪一個成功,結果都做爲一個合成的AAAA 記錄返回。
相似的,在ip6.int中的遞歸PTR查詢將會促使一個ip6.arpa查詢使用二進制標籤,若是失敗,執行另外一個在ip6.int中的查詢,結果將會以在ip6.int中的合成PTR記錄返回。合成記錄的TTL 爲0值。合成響應的DNSSEC確認當前並不被支持;也沒有了AD標記。
注:allow-v6-synthesis僅爲提供了遞歸服務的用戶執行。
N. 調諧
lame-ttl
設定緩存有問題服務器指示的秒數。0使不緩存(不被推薦)。默認值600(10 分鐘)。最大值1800(30 分鐘)。
max-ncache-ttl
爲下降網絡流量和提高服務器存儲否認回答的性能。max-ncache-ttl以秒爲單位設定這些回答的保存時間。默認max-ncache-ttl是10800秒(3小時)。max-ncache-ttl不能超過7天,若是設成一個更大的值,則將會被自動減爲7天。
max-cache-ttl
max-cache-ttl設定了服務器儲存普通(確定)答案的最大時間。默認值一週(7 天)。
min-roots
一個請求要求的最小的根服務器數量。默認爲2。
注意:不被BIND9 支持
sig-validity-interval
設定將來做爲動態更新結果的自動生成的DNSSEC信號過時的天數。默認是30天。信號的初始時間無條件設爲在當前時間的前一個小時,以容許一個有限的時鐘誤差。
min-refresh-time
max-refresh-time
min-retry-time
max-retry-time
這些選項控制了服務器在更新一個域(詢問SOA變化)或者重試失敗的傳輸時的狀態。一般域的SOA值(可是這些值是由主服務器設定的)幾乎不給此級服務器管理者對它們內容的控制。
這些選項容許管理者爲每域,每一個視圖或者全局設定一個最小或者最大更新和重試時間。這些選項對於此級和根域是有效的而且設定SOA更新和重試時間。
O. 統計文件
由BIND9產生的統計文件和由BIND8產生的相似,但不徹底同樣。
一個統計數據開始於行+++ Statistics Dump +++ (973798949),這裏出現的數字是一個標準UNIX型的時間戳,從1970年1月1日開始以秒計。緊跟這行的是一系列行,包括一個
記數器類型,記數器值,任意的域名和任意的視圖名,沒有所列的視圖和域的行是整個服務器的總體統計。具備域和視圖的行以給定的視圖和域命名(對默認的視圖來講視圖名缺省)。
這個統計數據以行--- Statistics Dump ---(973798949)結束,在這數字是和開始行的數字同樣的。Success對服務器或者域作出的成功查詢。定義一個成功查詢是查詢返回非錯誤響應而不是返回推薦響應。
Referral:致使推薦響應查詢
Nxrrset:致使沒有數據的非錯誤查詢的響應
Nxdomain:致使NXDOMAIN 的查詢數量
Recursion:使服務器運行遞歸以找出最後答案的查詢數量
Failure:致使失敗的查詢數量