BIND配置文件詳解(三)

http://yuanbin.blog.51cto.com/363003/108583


BIND配置文件詳解(三)
 
7.server語句
服務器(server)語句的定義和使用:
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 ; [...]] } ; ]
};
服務器語句定義了與遠程服務器相關的性質。
服務器語句可以出現在配置文件的頂層或者在視圖語句的內部。如果一個視圖語句包括一個或更多的服務器語句,只有那些視圖語句內的被應用到視圖和任何頂層的語句被忽略。如果一個視圖不包括服務器語句,則任何頂層服務器語句都被當做默認。
bogus
如果你發現一臺遠端服務器正在輸出錯誤數據,使用bogus標記它,將會阻止對它的更多查詢。Bogus的默認值爲no。
provide-ixfr
provide-ixfr子句決定本地服務器是否作爲主域名服務器,當遠端的一臺輔域名服務器要求的時候,響應增量的域傳輸。如果設定成yes,增量傳輸將會在任何可能的時候進行。如果設定爲no,所有對遠端服務器的傳輸都將是非增量的。如果不設置,在視圖或者全局選項塊中的provide-ixfr選項的值將使用默認值。
request-ixfr
request-ixfr子句決定本地服務器是否作爲輔域名服務器,將會向給定的遠端服務器(一般爲主域名服務器)發送域的增量傳送請求。如果不設置,在視圖或者全局選項塊中的provide-ixfr選項的值將使用默認值。
對不支持IXFR的服務器的IXFR請求將會自動轉回AXFR。這樣,就不需要用手工列出哪個服務器支持IXFR哪個不支持。全局默認值yes 一直會起作用。provide-ixfr和request-ixfr子句的作用是使IXFR無效,甚至當主域名服務器和輔域名服務器宣佈支持它。
例如當使用IXFR時,如果一臺服務器受災並且崩潰或者破壞了數據。
edns
edns子句決定本地服務器與遠端服務器通訊時是否使用EDNS.默認值爲yes。
服務器支持兩類域傳輸方式:
第一類,one-answer,每個源數據傳輸使用一個DNS報文。
第二類,many-answer,在一個報文中彙集了儘可能多的記錄。多答案更有效率,但是
只被BIND9,BIND8.X 和BIND4.9.5補丁版本識別。你可以使用transfer-format選項爲
一個服務器指定使用哪種方式。如果transfer-format沒有被指定,就使用options裏的
語句指定的transfer-format。
transfers
transfers用來限定同時從特定服務器進行數據傳輸的域的數量。如果transfers子句沒有被指定,限制將會參照transfers-per-ns制定。
keys
keys子句用來確定一個由key語句定義的key_id,用於當遠端服務器通話時的安全處理。key語句必須在涉及它的服務器語句之前。當一個請求發送到遠端服務器,一個請求報文將會產生(使用本地指定鍵並附在報文上)。一個來自遠端服務器的請求不要求被這個鍵標記。
儘管鍵子句語法支持多鍵,但是目前每個服務器只支持一個鍵.
 
8. trusted-keys語句
trusted-keys語句的定義和使用:
trusted-keys {
string number number number string ;
[ string number number number string ; [...]]
};
trusted-keys語句定義DNSSEC安全根。當非授權域的公共鍵是已知的但是卻不能安全的通過DNS得到,或者因爲DNS根域或者它的當前域沒有被標記時定義安全根。一旦一個鍵被設置成信任鍵,它就被認爲是有效和安全的。解答器在所有存在於安全根次級域中的DNS 數據上嘗試DNSSEC有效性。
trusted-keys語句能包含多重鍵入口,每個由鍵的域名,旗幟,協議算法和鍵數據的64進位組成。
 
9. view語句
視圖(view)語句的定義和使用:
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; ...]
};
視圖是BIND9強大的新功能,允許名稱服務器根據詢問者的不同有區別的回答DNS查詢。特別是當運行拆分DNS設置而不需要運行多個服務器時特別有用。每個視圖定義了一個將會在用戶的子集中見到的DNS名稱空間。
根據用戶的源地址(“address_match_list”)匹配視圖定義的“match_clients”和用戶的目的地址(“address_match_list”)匹配視圖定義的” matach-destinations”。
如果沒有被指定,match-clients和match-destinations默認匹配所有地址。一個視圖也可以做爲match-recursive-only來指定,意思是來自匹配用戶的遞歸請求將會匹配該視圖。視圖語句的順序是很重要的,一位用戶的請求將會在它所匹配的第一個視圖中被解答。在視圖語句中定義的域只對匹配視圖的用戶是可用的。通過在多個視圖中用相同名稱定義一個域,不同域數據可以傳給不同的用戶。例如:在拆分DNS設置中的”內部”和”外部”用戶。
許多在named.conf 的options裏的語句中給出的選項也能在視圖語句中使用,僅僅用於使用哪個視圖解答請求的時候。當view-specific值沒有給出,options裏的語句值就使用默 認值。域選項也可以在視圖語句中指定默認值;這些view-specific默認值的優先級高於那些在options裏面配置的語句。
視圖精確到類。如果沒有給定任何類,就假設爲IN類。注意到所有非-IN視圖必須包含一個暗示域,因爲只有IN類具有compiled-in默認暗示。
如果在配置文件中沒有view語句,在IN類中就會自動產生一個默認視圖匹配於任何用戶,任何指定在配置文件的最高級的zone語句被看作是此默認視圖的一部分。如果存在外部view語句,所有的域視圖必須會在view語句內部產生。
 
這是一則典型的使用視圖語句運行的拆分DNS設置
view "internal" {
match-clients { 10.0.0.0/8; };
// 應該與內部網絡匹配.
// 只對內部用戶提供遞歸服務.
// 提供example.com zone 的完全視圖
//包括內部主機地址.
recursion yes;
zone "example.com" {
type master;
file "example-internal.db";
};
};
view "external" {
match-clients { any; };
// 拒絕對外部用戶提供遞歸服務
// 提供一個example.com zone 的受限視圖
// 只包括公共可接入主機
recursion no;
zone "example.com" {
type master;
file "example-external.db";
};
};
 
10. zone語句
Zone語句的定義和使用:
zone zone_name [class] [{
type ( master | slave | hint | stub | forward ) ;
[ allow-notify { address_match_list } ; ]
[ allow-query { address_match_list } ; ]
[ allow-transfer { address_match_list } ; ]
[ allow-update { address_match_list } ; ]
[ update-policy { update_policy_rule [...] } ; ]
[ allow-update-forwarding { address_match_list } ; ]
[ alsonotify
{ ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
[ check-names (warn|fail|ignore) ; ]
[ dialup dialup_option ; ]
[ file string ; ]
[ forward (only|first) ; ]
[ forwarders
{ ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
[ ixfr-base string ; ]
[ ixfr-tmp-file string ; ]
[ maintain-ixfr-base yes_or_no ; ]
[ masters [port ip_port] { ip_addr [port ip_port] [key key]; [...] } ; ]
[ max-ixfr-log-size number ; ]
[ max-transfer-idle-in number ; ]
[ max-transfer-idle-out number ; ]
[ max-transfer-time-in number ; ]
[ max-transfer-time-out number ; ]
[ notify yes_or_no | explicit ; ]
[ pubkey number number number string ; ]
[ 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] ; ]
[ zone-statistics yes_or_no ; ]
[ sig-validity-interval number ; ]
[ database string ; ]
[ min-refresh-time number ; ]
[ max-refresh-time number ; ]
[ min-retry-time number ; ]
[ max-retry-time number ; ]
}];
 
A. 域文件類型
master
服務器有一個主域(控制域或主域)的配置文件拷貝,能夠爲之提供授權解析服務。
slave
輔域(也可以叫次級域)是主域的複製。主域名服務器定義了一個輔域或多個輔域(次級域聯繫以更新域拷貝)的IP地址.默認下,傳輸是從服務器上的53端口進行的;對所有的服務器來說這是可變的,通過設定一個在IP地址表前或者在IP地址之後基於每個服務器設定端口數字。對主域名服務器的鑑別也能通過每個服務器上的TSIG鍵來完成。如果文件被指定了,那麼任何主域配置信息改變的時候就要複製文件,並且當輔服務器重新啓動的時候都會從主域名服務器上重新下載文件。這可能會導致帶寬的浪費和服務器重新啓動次數的增加。
注意對每個服務器的數量衆多的域來說(數萬或者數十萬),最好使用兩級方式命名配置。
例如:一個域的服務器example.com可能把域內容放到一個叫做ex/example.com的文件中,在此, ex/只是域名前兩個字符(如果把100K 的文件放入一個單獨的目錄中,大多數操作系統都會反應緩慢)
stub
子根域與輔域類似,子域只複製主域的NS記錄而不是整個域。根域不是DNS的一個標準部分,它們是BIND運行的特有性質。
根域可以用來避免在本機重新獲得該域的NS記錄,代價是保存一個根域入口和一組named.conf名稱服務器地址。這個用法在新設置中並不建議使用,BIND9只在有限的情況下才支持它。在BIND4/8中當前的域傳輸包括來自當前域的子根的NS記錄。這表明,在某些情況下,用戶可以爲當前域設置只存在於控制服務器裏的子根。BIND9服務器從不以這種方式把來自不同域的數據混合。這樣的話,如果一個BIND9控制服務器服務於一個已經設定了子根域的母域,所有的當前域的次級服務器都需要設定相同的子根域。子根域也可以用來作爲一種促使一個特定域的解答使用一個授權服務器的特定系。例如,在一個使用RFC2157 地址的私有網絡上緩存域名服務器可以用子根域進行設置。
forward
一個”轉發域”是一種在每個域基礎上進行配置轉發的一種方式。forward 類型的域語句包括一個轉發語句和轉發列表,都應用於在域內的由域名給出的查詢。如果當前沒有轉發器語句,就會給出空列表,在域中就不會轉發,也就取消了所有在選項中的轉發的作用。如果你要使用此種域來改變整體轉發選項的狀態(”forward first”,”forward only”但是要用同一服務器作爲是全局設置)你需要理解全局轉發器的特點。
hint
根名稱服務器在最初設置時指定使用一個”hint zone”。當配置了”hint zone”的服務器
啓動的時候,它使用根線索的設置找到根的名稱服務器並得到根名稱服務器的最新表。
如果沒有爲IN類設定線索域,服務器使用一個compiled-in的默認根服務器列表。
 
B. 類
域名後面的選項可以對應類。如果沒有指定類,系統假定爲IN類。這在大多數的情況下都是正確的。
Hesiod類是以一個信息服務的名稱命名的,信息服務源於MIT的Athena工程.。Hesiod類是用來在多系統數據之間共享信息,如用戶、組、打印機等等。”HS”對Hesiod來說是相同的類。
MIT發展的另一個是CHAOSnet,一個在70年代中期創立的本地協議。它的域數據可以用CHAOS類設定。
 
C. zone 選項
allow-notify
allow-query
allow-transfer
allow-update
設定哪臺主機允許爲主域名服務器提交動態DNS更新。默認爲拒絕任何主機進行更新。
update-policy
設定一個”簡單安全更新政策”。
allow-update-forwarding
設定哪個主機能夠向輔域名服務器的次級域提交動態域名服務器更新。默認值爲{ none; },意味着不能進行動態更新轉發。要使用更新轉發,設定allow-update-forwarding{ any; };設定其他值而不是{ none; } 或者{ any; } 是常常起反作用的,因爲主域名服務器擁有接入控制的權利,而輔域名服務器沒有。
注意到激活一臺次級服務器上的更新轉發性質可能使主域名服務器依賴基於不安全IP地址的接入控制而可能使之受到攻擊。
also-notify
只當本域notify被激活時纔是有意義的。能夠收到本域DNS NOTIFY信息的計算機的集合是由所有域中列明的名稱服務器加上任何由also-notify設定的IP地址。一個端口可能用每個also-notify地址設定以發送通告信息到那個端口而不是默認的53端口。
also-notify 對根域是無意義的。默認值爲空。
check-names
此選項應用於BIND8中以約束hosts文件中的域名的字符集和/或從網絡上接收的DNS響應。BIND9不限制域名的字符集也不執行check-names選項。
database
設定儲存域數據的數據庫的類型。Database後面的關鍵詞是一列whitespace-delimited(非限制空白空間)詞。第一個詞定義數據庫類型,後續詞作爲數據庫的參數傳給數據庫,解釋爲特殊的數據庫類型。默認值爲"rbt",BIND9的本地native in-memory red-black-tree 庫,則此數據庫沒有參數如果其它數據庫驅動連接到服務器上的話其他值也是可能的。這些可能的數據庫包括分佈式的數據庫,但缺省是沒有連接的。
dialup
forward
只當域有一個轉發器列表的時候纔是有意義的。當配置爲”only”時,在轉發查詢失敗和得不到結果時會導致查詢失敗;在配置爲”first”時,則在轉發查詢失敗或沒有查到結果時,會在本地發起正常查詢。
forwarders
用來代替全局的轉發器列表。如果如故不在forward類型的域中設定,就不會有這個域查詢的被轉發;全局的轉發設置則沒有起作用。
ixfr-base
在BIND8中設定動態更新和IXFR的交易日誌文件(journal)的名稱。BIND9 忽略這個選項而通過附加".jnl"到域文件名後創建日誌文件.
ixfr-tmp-file
BIND8的非正式選項,BIND9忽略
max-transfer-time-in
max-transfer-idle-in
notify
pubkey
在BIND8中,此選項用於爲DNSSEC標記域的信號(當它們從磁盤裝載的時候)的驗證設定一個公共域密鑰,BIND9不在裝載的時候驗證密鑰並忽略此選項。
zone-statistics
如果設爲”yes”,服務器將會爲本域儲存統計信息,可以存儲到在服務器選項中定義的統計文件中。
sig-validity-interval
transfer-source
transfer-source-v6
notify-source
notify-source-v6
min-refresh-time
max-refresh-time
min-retry-time
max-retry-time
 
D. 動態更新政策
BIND9支持兩個授予用戶對一個域執行動態更新權限的備選方案,分別由allow-update和update-policy設定。
allow-update 的使用與以前的BIND版本相同。它授於指定用戶對域中的任何名稱的任何的記錄更新的權利。
update-policy 是BIND9中新出現的,允許更多更新控制,定義了一個規則集,規則授予或者取消一個或多個名稱被一個或多個用戶更新的權利。如果動態更新要求信息被標記(也就是說,可以包含TSIG 或SIG(0)記錄),標記人的身份就能被確定。
規則在update-policy 域選項中指定,並只對主域有意義。當update-policy語句出現,這是一個allow-update的配置錯誤.。update-policy語句只檢查信息的簽名人,與源地址是不相關的。
這是一則規則的定義:
( grant | deny ) identity nametype name [ types ]
每條規則賦予或者取消授權,一旦一條信息成功的匹配一個規則,則馬上執行該規則的給予或者取消操作,並且不檢查其它的規則。一個規則是匹配的,就是當標記人匹配身份字段,名稱匹配名稱字段並且類型是在類型字段中定義的時候。
身份字段定義一個名稱或者一個通配符名稱,名稱類型字段有四個值:
name, subdomain, wildcard 和self
name
當更新名稱與原定義的名稱字段相同時匹配。
subdomain
當更新名稱與原定義的子域的一個名稱字段相同時匹配。(包含它本身的名字)
wildcard
當更新名稱與原定義的一個位於名稱字段中的統配符名稱的有效延伸相同時匹配
self
當更新名稱與信息標記人的名稱相同時匹配。忽略名稱字段。
如果沒有設定任何類型,規則匹配所有類型除了SIG、NS、SOA 和NXT;類型可能用
名稱設定,包括"ANY"。(ANY 匹配所有類型除了NXT,NXT 不能被更新)。
 

發佈了27 篇原創文章 · 獲贊 5 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章