BIND 是 Berkeley Internet Name Domain 的縮寫,為目前被廣泛使用的 Domain Name System(DNS)。 目前已經發展到版本 9,即 Bind9,解決了一些先前版本的問題。
安裝
$ sudo aptitude install bind9
設定
有關整個 DNS 的架構與設定方法參考 StudyArea;範例網域為 x9.idv.tw,dns 主機 ip 220.132.142.52,主機名稱 dnsvr。另外考量到安全性因素,建議讓 bind 執行於 chroot 環境,以保護系統免被入侵。
在一般 Linux distro. 上面 bind 主要設定檔為 /etc/bind/named.conf,但 Debian 上略有不同;Debian 上面主要設定檔為 /etc/bind/named.conf.local。除了設定檔的檔名不同外其餘設定皆大同小異。
首先看看 /etc/bind/named.conf.local 的內容:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "x9.idv.tw" in {
type master;
file "/etc/bind/db.x9.idv.tw";
};
zone "142.132.220.in-addr.arpa" in {
type master;
file "/etc/bind/db.220.132.142";
};
上面第一個 zone 定義了 x9.idv.tw 這個網域的正解部份,並設定類型為 master,設定檔為 /etc/bind/db.x9.idv.tw;142.132.220.in-addr.arpa 的部份則是反解的部份且設定檔為 /etc/bind/db.220.132.142。
接著來看看正解設定檔 db.x9.idv.tw 的內容:
$TTL 86400
$ORIGIN x9.idv.tw.
@ IN SOA x9.idv.tw. root.x9.idv.tw. (
20070927 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
; 主要 NS、MX 與主要主機
@ IN NS x9.idv.tw.
@ IN A 220.132.142.52
@ IN MX 10 x9.idv.tw.
dnsvr IN A 220.132.142.52
dnsvr IN MX 20 x9.idv.tw.
; 別名紀錄,直接指向主機 dnsvr
www IN CNAME dnsvr
ftp IN CNAME dnsvr
mail IN CNAME dnsvr
正解設定檔內除了設定兩筆 mailserver MX 紀錄外,另外還設定了 www、ftp、mail 三個 CNAME 指向 x9.idv.tw;特別注意到上面 “x9.idv.tw.”,最後的 ”.” 意思為代表這是 FQDN。
最後來看反解設定檔 db.220.132.142:
$TTL 86400
@ IN SOA x9.idv.tw. root.x9.idv.tw. (
20070926 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS x9.idv.tw.
52 IN PTR x9.idv.tw.
52 IN PTR dnsvr.x9.idv.tw.
52 IN PTR www.x9.idv.tw.
52 IN PTR mail.x9.idv.tw.
52 IN PTR ftp.x9.idv.tw.
完成網域的正反解設定後,最後修改幾個 bind9 的執行相關參數設定檔:
/etc/default/bind9:
OPTIONS="-u bind"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes
/etc/bind/named.conf.options:
forwarders {
168.95.1.1;
168.95.192.1;
};
auth-nxdomain yes; # conform to RFC1035 default is no. edit by neio
listen-on-v6 { none; }; # listen ipv6 default is any
/etc/resolv.conf:
nameserver 168.95.192.1
nameserver 168.95.1.1
search neio.idv.tw
接著重新啟動 bind9 後,一個簡易的小型 DNS 伺服器便已架設完畢。
Chrooting Bind9
倘若 bind9 架設完畢且一切都測試無誤後,以下的設定可以把 bind9 運行於 chroot 模式。
建立 bind9 的 chroot 執行目錄與設定相關權限:
停止 bind9
$ sudo /etc/init.d/bind9 stop
建立 chroot 環境中必要的目錄
$ sudo mkdir -p /var/lib/bind9/etc
$ sudo mkdir -p /var/lib/bind9/dev
$ sudo mkdir -p /var/lib/bind9/var/cache/bind
$ sudo mkdir -p /var/lib/bind9/var/run/bind/run
搬移原 bind9 設定檔與建立鏈結
$ sudo mv /etc/bind /var/lib/bind9/etc/bind
$ sudo ln -s /var/lib/bind9/etc/bind /etc/bind
建立執行所需裝置檔
$ sudo mknod /var/lib/bind9/dev/null c 1 3
$ sudo mknod /var/lib/bind9/dev/random c 1 8
設定相關權限
$ sudo chmod 666 /var/lib/bind9/dev/null /var/lib/bind9/dev/random
$ sudo chown -R bind:bind /var/lib/bind9/var/*
$ sudo chown -R bind:bind /var/lib/bind9/etc/bind
修改 bind9 設定檔,指定啟動方式
$ sudo vim /etc/default/bind9
修改 OPTIONS 選項如下
OPTIONS="-u bind -t /var/lib/bind9"
重新啟動 bind9
$ sudo /etc/init.d/bind9 start
安裝
$ sudo aptitude install bind9
設定
有關整個 DNS 的架構與設定方法參考 StudyArea;範例網域為 x9.idv.tw,dns 主機 ip 220.132.142.52,主機名稱 dnsvr。另外考量到安全性因素,建議讓 bind 執行於 chroot 環境,以保護系統免被入侵。
在一般 Linux distro. 上面 bind 主要設定檔為 /etc/bind/named.conf,但 Debian 上略有不同;Debian 上面主要設定檔為 /etc/bind/named.conf.local。除了設定檔的檔名不同外其餘設定皆大同小異。
首先看看 /etc/bind/named.conf.local 的內容:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "x9.idv.tw" in {
type master;
file "/etc/bind/db.x9.idv.tw";
};
zone "142.132.220.in-addr.arpa" in {
type master;
file "/etc/bind/db.220.132.142";
};
上面第一個 zone 定義了 x9.idv.tw 這個網域的正解部份,並設定類型為 master,設定檔為 /etc/bind/db.x9.idv.tw;142.132.220.in-addr.arpa 的部份則是反解的部份且設定檔為 /etc/bind/db.220.132.142。
接著來看看正解設定檔 db.x9.idv.tw 的內容:
$TTL 86400
$ORIGIN x9.idv.tw.
@ IN SOA x9.idv.tw. root.x9.idv.tw. (
20070927 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
; 主要 NS、MX 與主要主機
@ IN NS x9.idv.tw.
@ IN A 220.132.142.52
@ IN MX 10 x9.idv.tw.
dnsvr IN A 220.132.142.52
dnsvr IN MX 20 x9.idv.tw.
; 別名紀錄,直接指向主機 dnsvr
www IN CNAME dnsvr
ftp IN CNAME dnsvr
mail IN CNAME dnsvr
正解設定檔內除了設定兩筆 mailserver MX 紀錄外,另外還設定了 www、ftp、mail 三個 CNAME 指向 x9.idv.tw;特別注意到上面 “x9.idv.tw.”,最後的 ”.” 意思為代表這是 FQDN。
最後來看反解設定檔 db.220.132.142:
$TTL 86400
@ IN SOA x9.idv.tw. root.x9.idv.tw. (
20070926 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS x9.idv.tw.
52 IN PTR x9.idv.tw.
52 IN PTR dnsvr.x9.idv.tw.
52 IN PTR www.x9.idv.tw.
52 IN PTR mail.x9.idv.tw.
52 IN PTR ftp.x9.idv.tw.
完成網域的正反解設定後,最後修改幾個 bind9 的執行相關參數設定檔:
/etc/default/bind9:
OPTIONS="-u bind"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes
/etc/bind/named.conf.options:
forwarders {
168.95.1.1;
168.95.192.1;
};
auth-nxdomain yes; # conform to RFC1035 default is no. edit by neio
listen-on-v6 { none; }; # listen ipv6 default is any
/etc/resolv.conf:
nameserver 168.95.192.1
nameserver 168.95.1.1
search neio.idv.tw
接著重新啟動 bind9 後,一個簡易的小型 DNS 伺服器便已架設完畢。
Chrooting Bind9
倘若 bind9 架設完畢且一切都測試無誤後,以下的設定可以把 bind9 運行於 chroot 模式。
建立 bind9 的 chroot 執行目錄與設定相關權限:
停止 bind9
$ sudo /etc/init.d/bind9 stop
建立 chroot 環境中必要的目錄
$ sudo mkdir -p /var/lib/bind9/etc
$ sudo mkdir -p /var/lib/bind9/dev
$ sudo mkdir -p /var/lib/bind9/var/cache/bind
$ sudo mkdir -p /var/lib/bind9/var/run/bind/run
搬移原 bind9 設定檔與建立鏈結
$ sudo mv /etc/bind /var/lib/bind9/etc/bind
$ sudo ln -s /var/lib/bind9/etc/bind /etc/bind
建立執行所需裝置檔
$ sudo mknod /var/lib/bind9/dev/null c 1 3
$ sudo mknod /var/lib/bind9/dev/random c 1 8
設定相關權限
$ sudo chmod 666 /var/lib/bind9/dev/null /var/lib/bind9/dev/random
$ sudo chown -R bind:bind /var/lib/bind9/var/*
$ sudo chown -R bind:bind /var/lib/bind9/etc/bind
修改 bind9 設定檔,指定啟動方式
$ sudo vim /etc/default/bind9
修改 OPTIONS 選項如下
OPTIONS="-u bind -t /var/lib/bind9"
重新啟動 bind9
$ sudo /etc/init.d/bind9 start