字體:  

使用 Ubuntu 16.04 架設 bind9 的 DNS Server

allentsai 發表於: 2017-3-17 15:07 來源: ADJ網路控股集團


1. 首先安裝必要套件
# apt install bind9 bind9-doc dnsutils

安裝的設定主要都在 /etc/bind 目錄
named.conf.local 裡面可以設定正反解的zone,如果不想改,也可以新增自己喜歡的檔案,但要記得在named.conf裡面include他
named.conf.options 主要在設定dns的一些選項和安全性。
其他的檔案就是預設的一些localhost的正反解相關,這裡我們不用理他沒關係。

2. 設定named.conf.options,比較重要的是關閉recursion。參考底下的設定

QUOTE:


options {
        directory "/var/cache/bind/zones";
        managed-keys-directory "/var/cache/bind/";
        dnssec-validation auto;
        auth-nxdomain no;    # conform to RFC1035
        //listen-on-v6 { any; };

        forwarders {
        168.95.1.1;
        168.95.192.1;
        };

        listen-on port 53 { any; };
        allow-query { any; };
        allow-query-cache { none; };
        //recursion no;
        allow-recursion { 127.0.0.1/32; 111.222.111.222/32; };
};


recursion no和allow-recursion只能指定一個,要嘛全關(開),要嘛就只有特定IP才開。這裡我選擇指定IP。

3. 接著設定zone,一個domain還包含正解和反解,所以會有兩個以上的zone。可以把zone的設定寫在named.conf.local底下。

4. 設定檔有個重要的資訊...就是 managed-keys-directory 要設定正確的路徑,如下:

QUOTE:


managed-keys-directory "/var/cache/bind/";

要不然每次啟動都會看到這個Error , 雖然不影響運作,但就是有點煩人~

QUOTE:


/etc/bind/managed-keys.bind.jnl: create: permission denied
managed-keys-zone: sync_keyzone:dns_journal_open -> unexpected error
managed-keys-zone: unable to synchronize managed keys: unexpected error



5. 還有directory 最好放在 /var/cache/bind/zones 底下...要不然會觸發 apparmor 的權限錯誤~

QUOTE:


Mar 17 16:13:48 gdns kernel: [ 1970.721144] audit: type=1400 audit(1489738428.368:38): apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/zones/tmp-UTrm8bqOLc" pid=2093 comm="named" requested_mask="c" denied_mask="c" fsuid=113 ouid=113


6. 接著重新啟動一下:service bind9 restart
這樣就啟動我們的dns服務了,如果是slave的話也就自動向master抓好資料了。

7. /var/log/named/ 底下的 log 預設是不會 logrotate ...所以你可以自己建一個檔
# vi /etc/logrotate.d/named

QUOTE:


/var/log/named/dns-query.log {
    daily
    rotate 7
    missingok
    notifempty
    postrotate
      /etc/init.d/bind9 reload > /dev/null
    endscript
}


然後測試一下
# logrotate /etc/logrotate.d/named -f

就會順利生成檔案囉~
逢甲住宿推薦逢甲住宿台中旅店逢甲日租台中住宿台中逢甲民宿台中民宿台中一中住宿台中便宜住宿台中青年旅館