BIND 9 會執行 named 名稱伺服器。其設定決定它是否以權威方式回答、提供遞迴、傳送區域,或接受動態更新。將這些角色分開處理,因為面向網際網路的權威伺服器不應成為開放的遞迴解析器。
伺服器設定 #
named.conf 定義全域選項、存取控制清單、區域與記錄。最小的權威設定會限制遞迴與區域傳送:
acl trusted-recursors { 192.0.2.0/24; 2001:db8:1::/48; };
options {
directory "/var/named";
listen-on { any; };
listen-on-v6 { any; };
recursion no;
allow-transfer { none; };
minimal-responses yes;
};
zone "example.net" {
type primary;
file "zones/example.net";
allow-transfer { 192.0.2.53; };
};遞迴解析器需要 recursion yes,以及限制於其用戶端的 allow-recursion 或 allow-query-cache ACL。除非部署明確提供具有濫用控制的公開解析器,否則絕不要讓不受信任的網路使用遞迴。
ACL 可以由 allow-query、allow-recursion、allow-query-cache、allow-transfer 與 match-clients 重複使用。BIND view 陳述式會依來源位址、目的位址或 TSIG 身分,呈現不同的區域與遞迴政策:
view "internal" {
match-clients { trusted-recursors; };
recursion yes;
allow-recursion { trusted-recursors; };
zone "example.net" {
type primary;
file "zones/internal/example.net";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "example.net" {
type primary;
file "zones/external/example.net";
};
};啟用 view 時,請在適用的 view 中定義每個用戶端可見的區域。將最具體的 match-clients 規則放在前面,因為 BIND 會選取第一個相符的 view。
區域檔案 #
區域檔案記錄遵循:
owner [TTL] [class] type rdata$ORIGIN 提供相對名稱的後綴;$TTL 提供預設 TTL。@ owner 表示目前的 origin。區域頂點需要 SOA 記錄與 NS 記錄。缺少結尾句點的名稱會相對於 $ORIGIN。
$ORIGIN example.net.
$TTL 3600
@ IN SOA ns1.example.net. hostmaster.example.net. (
2026080701 7200 900 1209600 300 )
IN NS ns1.example.net.
IN NS ns2.example.net.
ns1 IN A 192.0.2.53
www IN A 192.0.2.80
docs IN CNAME www每次發布區域變更都要遞增 SOA 序號。次要伺服器會使用序號判斷是否需要傳送。使用明確 ACL 設定傳送,並在適當時以 TSIG 驗證。
A 或 AAAA 記錄會將名稱對映到位址。CNAME 使其 owner 成為別名,且不能與該 owner 的一般資料共存。在父區域使用 NS RRset 委派子區域;當被委派的名稱伺服器位於被委派名稱下方時,將同屬委派範圍的 A 或 AAAA glue 放入父區域:
child IN NS ns1.child
ns1.child IN A 192.0.2.91驗證與作業 #
重新載入前先驗證:
named-checkconf /etc/named.conf
named-checkzone example.net /var/named/zones/example.net
rndc reload example.net
dig @127.0.0.1 www.example.net A +norecurse變更區域宣告後使用 rndc reconfig,變更區域資料後使用 rndc reload。使用 dig 分別查詢權威與遞迴路徑,檢查狀態旗標與權威區段,並在防火牆行為不同時測試 UDP 與 TCP。
DNSSEC 加入已簽署的 RRset、DNSKEY 發布與從父區域開始的 DS 鏈。BIND 可以透過 dnssec-policy 維護簽章與金鑰;金鑰檔案、輪替狀態、父區域 DS 更新與時鐘同步會成為作業相依性。使用 dig +dnssec 驗證已簽署的回答,並透過驗證解析器測試,而不要將存在 RRSIG 視為有效鏈的證明。
以專用的非特權服務帳戶執行 named,並確保工作目錄、金鑰、日誌檔案與區域檔案具有所需權限。使用 named -g 執行前景診斷,正常操作則使用服務管理器。在降低權限前先繫結特權連接埠,限制可寫入的目錄,並只讓服務與獲授權的管理員讀取控制通道金鑰。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)