字體:  

使用 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

就會順利生成檔案囉~