大部份 Linux 發行版所採用的 DNS 系統 , 都是採用 BIND 這個套件 ,
而此套件的主要設定檔即為 named.conf .
Fedora Linux Core 6 同樣內建 bind 套件 ,
但卻不像之前的版本 , 預設就有 named.conf 設定檔 ,
因為它把 Local Loopback 等等的 zone ,
放到 Cache Server 內了(named.caching-nameserver.conf) ,
所以 named.conf 就得從頭到尾自行設定了 .
整理一下 named.conf 設定檔內容如下 :
(named.conf 內可設定的參數相當的多 , 這裡只大略整理出一點點常用的.)
(詳細設定說明 , 請參考 BIND 9 Administrator Reference Manual )
Fedora Linux Core 6(FC6) 預設使用 chroot 機制 ,
將 bind 服務 chroot 在 /var/named/chroot 資料夾內 ,
可由 /etc/sysconfig/named 設定檔內查之 , 亦可改之 .
FC6 內預設是沒有 named.conf 設定檔 ,
如果申請了一個 Domain Name , 要用 FC6 來提供 DNS 服務 ,
必須自行新增 /var/named/chroot/etc/named.conf 設定檔 .
named.conf 檔設定大至整理如下 :
[root@fc6 ~]# cat /var/named/chroot/etc/named.conf
// Red Hat BIND Configuration Tool
//
// Name server configuration
// "//" 以後的文字為說明文字
options { // 參數區段 , options 參數為 global(全域) ,
// 也就是以下任何區段(view,zone)內若沒有相同參數 ,
// 則以 options 為主 .
// 若以下任何區段內有相同參數 ,
// 以該區段內參數為主 .
directory "/var/named"; // RR(Resource Records) 檔案
// 放在 /var/named 資料夾內 .
query-source address * port 53; // 當這台 dns server 要向另一台 dns server
// 查詢時 , UDP 封包來源 port 為 53 .
// (穿越防火牆時可用)
allow-transfer { none; }; // 設定哪些位置可以做 transfer 要求 ,
// 預設為 "none" .
// 若有 slave zone 在另一台 dns server 上 ,
// 才把那台 dns server 的 IP 填上 ,
// 否則請設定為 "none" .
allow-recursion { // 允許 "遞歸查詢" .
192.168.0.0/24; // 如果 Client 查詢的資訊不在這台 DNS 的 zone 內 ,
}; // 則這台 Server 將會向 "根"(.) 伺服器開始做遞歸查詢 .
// 在這裡沒指定到的 ip 網路 , 將不做遞歸查詢 .
forwarders { // 設定這台 Server 不要自己做遞歸查詢 ,
// 而是把這個 query 轉給(forward) 別台 DNS Server .
// 也就是說 , 這台 DNS Server 把自己當成一台 Client ,
// 把自己 Client 送來的 query ,
// 當成自己的 query 向指定的 DNS Server 查詢 ,
// 等待指定的 Server 的回覆 , 再把這回覆回給自己的 Client .
168.95.1.1;
168.95.1.2; // 這三台是 Hinet 提供的 DNS Server .
168.95.192.1;
};
}; // 這是 options 項目的結束符號 .
zone "test.com.tw." IN { // "zone" 這個區段就是設定我們申請來的 Domain Name
type master; // 這是 Master Zone .
file "test.com.tw.lan"; // RR(Resource Records) 記錄檔的檔名 .
// 不要忘記路徑在上面有宣告 : directory "/var/named"; .
allow-update { none; }; // 指定哪個 ip 可以用指令(nsupdate)來更新這個 zone .
// 這裡設 none , 就是沒有的意思 .
};
include "/etc/rndc.key"; // 利用 rndc 來 ctrl 這台 DNS Server 時 , 所用的 key .
[root@fc6 ~]#
**************************************************************************
上面這 named.conf 範例少了
zone "." (root hint)
zone "localhost"
zone "0.0.127.in-addr.arpa"
...
..
.
那是因為 Fedora Linux Core 6 內建的 DNS 套件 ,
把這些放進 DNS Cache Server 內了 .
見 /var/named/chroot/etc/named.caching-nameserver.conf 檔案內只有一個 view ,
而 view 內 include 了 /etc/named.rfc1912.zones 這個檔案 ,
再看 named.rfc1912.zones 這個檔案內容 , 即存放了上面說的幾個 zone .
上面的這個 named.conf 範例 , 經測試是可用的 .
但若使用的 Linux 包裝不是 FC6 , 而是別的版本 ,
應注意上面這個幾個 zone 部份的設定 .
譬如說如果是 FC5 的版本 , 使用內建的 bind 套件 ,
named.conf 內如要設定這些 zone , 範例如下 :
zone "." IN {
type hint; // 這個 type "hint" 是 zone "." (root) 獨有的 .
file "named.ca";
};
這個 zone "." 的這個 "." 指的就是 DNS Root , 最上層的 "根伺服器" ,
當 Client 送來的查詢不在這台 DNS Server 內所宣告的 zone 內 ,
DNS Server 會從 .(root根) 伺服器開始做 "遞迴查詢" ,
所以 DNS Server 必須要先知道 .(root根) 伺服器的位置 .
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN { // IP 反解的 zone , 要把 IP 反過來寫 ,
// 用 DNS 結構樹來想 , 解析是由右往左 ,
// 所以 IP 反過來寫是可理解的 .
type master;
file "named.local";
allow-update { none; };
};
IPv6 本機迴路反解的 zone , 範例如下 :
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update { none; };
};
參考資料:
BIND 9 Administrator Reference Manual
沒有留言:
張貼留言