針對需要最新功能、安全修補或特定編譯選項的環境,從原始碼編譯安裝 BIND 是最佳選擇。本文以 BIND 9.2.2rc1 為例,完整記錄下載、編譯、安裝、配置 named.conf、區域檔案、rndc 遠端控制到設定開機自動啟動的全流程。
https://www.isc.org/products/BIND/ → bind-9.2.2rc1.tar.gztar -xzvpf bind-9.2.2rc1.tar.gzcd bind-9.2.2rc1su -mkdir -p /usr/local /var/namedb./configure --prefix=/usr/local --mandir=/usr/local/share/manmake(約 20 分鐘)make install/usr/local/etc/named.confoptions {
directory "/var/namedb";
pid-file "named.pid";
};
zone "." { type hint; file "named.root"; };
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
notify no;
};
zone "173.76.207.in-addr.arpa" in {
type master;
file "db.207.76.173";
notify no;
};
zone "bind.com" {
type master;
file "bind.com.zone";
notify no;
};
/var/namedb/localhost.rev(本機反解)$TTL 3600
@ IN SOA user1.bind.com. hostmaster.bind.com. (
1 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS nameserv1.bind.com.
IN NS nameserv2.bind.com.
1 IN PTR localhost.
named.root(根伺服器提示)下載 ftp://ftp.internic.net/domain/named.root → 放入 /var/namedb/,定期更新。
cd /usr/local/etc/usr/local/sbin/rndc-confgen > rndc.conf(Solaris 需鍵入隨機字串產生熵)named.conf:tail -n10 rndc.conf | head -n9 | sed -e 's/# //g' >> named.conf# /usr/local/sbin/named -gc /usr/local/etc/named.conf &
# /usr/local/sbin/rndc status
number of zones: 5
server is up and running
在 /etc/rc2.d/ 建立啟動腳本(如 S99named),內容:
#!/bin/sh
/usr/local/sbin/named -c /usr/local/etc/named.conf
chmod +x /etc/rc2.d/S99named
| 指令 | 功能 |
|---|---|
rndc status | 顯示伺服器狀態、區域數、查詢統計 |
rndc reload | 重新載入配置與區域檔(不中斷服務) |
rndc reconfig | 重新讀取 named.conf |
rndc flush | 清除快取 |
rndc stop | 優雅關閉服務 |