[測試] 安裝DNS(BIND9)全紀錄

安裝 BIND9

更新系統及安裝BIND9.

sudo apt update
sudo apt install bind9

檢視BIND9是否工作中

nslookup google.com 127.0.0.1

有類似以下顯示結果,則表示成玏。

Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: google.com
Address: 64.233.164.138

BIND9 設定

安裝後要進行BIND9按自身需要來設定,使DNS能正常為系統工作,先要使BIND9能通過火牆

sudo ufw allow Bind9

編輯主要設定檔「named.conf.options」

sudo nano named.conf.options

設定檔大致如下﹕在 «options» 目錄下按自身需要加上參數

The «listen-on» 目錄下加上DNS的服務網段,(例如﹕192.168.0.0/24則是192.168.0.0的同一網層的主機),但不要寫成以下方式為所有主機服務。

listen-on {
10.10.10.0/24;
10.1.0.0/16;
...
};


若要為所有主機服務應在«allow-query»欄目下寫上「any」如下圖﹕

allow-query { any; };

若主機沒有所查主機記錄,便轉向8.8.8.8/8.8.4.4的Google DNS 查詢﹕


forwarders {
8.8.8.8;
8.8.4.4;
};

設定好後存檔及登出,使用「named-checkconf」檢查設定有無語法問題

sudo named-checkconf

若無出現錯誤,便可以重啟BIND9

sudo systemctl restart bind9


測試BIND9

從別的電腦鍵入以下指令,測試BIND9,「dns-server-ip-address」即是BIND9主機的IP

nslookup ubuntu.com dns-server-ip-address

顯示:
Server: dns-server-ip-address
Address: dns-server-ip-address#53
Non-authoritative answer:
Name: ubuntu.com
Address: 91.189.88.181
...

若出現以上資訊,表示系統已架好「cache」BIND9

設定BIND9成為主DNS伺服器
可在主DNS伺服器內指定IP提供各類服務,如郵件伺服器或使成為轉遞伺服器(thrid-level domain)等等

創建 DNS 「域」

以«domain-name.com» 作例子,將它轉成你的主機名稱,同時填上主機真實IP來代替10.1.1.xxx

sudo nano /etc/bind/named.conf.local

加入以下內容﹕

zone "domain-name.com" {
type master;
file "/etc/bind/db.domain-name.com";
allow-transfer { 10.1.1.10; };
also-notify { 10.1.1.10; };
};

重啟服務
systemctl reload bind9

設定「域」的檔案

sudo cp /etc/bind/db.local /etc/bind/db.domain-name.com
sudo nano /etc/bind/db.domain-name.com

將db.domain-name.com內容設定如下﹕

;
$TTL    604800
@       IN      SOA     ns.domain-name.com. admin.domain-name.com. (
2             ; Serial
604800        ; Refresh
86400         ; Retry
2419200       ; Expire
604800 )      ; Negative Cache TTL
;
@       IN      NS      ns.domain-name.com.
@       IN      A       10.1.1.1
ns      IN      A       10.1.1.9
ns2     IN      A       10.1.1.10
mx      IN      A       10.1.1.15

「domain-name.com.」改成你主機名稱,注意最尾的「.」是必須的,因這才符合FQDN,而10.1.xx.xx換上真實的相應IP
若架有郵件伺服器,便要加上MX記錄如下﹕
pipikeung.dnsalias.net.  IN   MX 10 mail.pipikeung.dnsalias.net.
pipikeung.dnsalias.net.  IN   A  10.1.xx.xx

DNS最常見的記錄﹕A, NS, MX, CNAME, TXT
                «A»    是伺服器的IP
                «NS»   是「域」伺服器名稱
                «MX»   是郵件伺服器名稱
                «CNAME»是(別名)的實切伺服器名稱

重啟rndc (remote name daemon control)控制管理Bind,並以加密方式來傳送資料。
sudo rndc reload

測試DNS伺服器﹕
nslookup domain-name.com 10.1.xx.xx

「domain-name.com」是主機名稱,10.1.xx.xx是剛設定名稱伺服器的真實IP
例如﹕nslookup domain-name.com 10.1.1.9 (10.1.1.9是ns.domain-name.com.的IP)

意思是請在伺服器ns.domain-named.com. (IP為10.1.1.9)中找出domain-named.com的IP
所以結果應顯示為10.1.1.1

若顯示的內容與你的DNS的記錄是一致,即表示已成功架設了DNS伺服器,在此沒有記錄的資料全部轉給8.8.8.8及8.8.4.4處理。

例如﹕以ns.pipikeung.dnsalias.net 查ubuntu.com的記錄﹕
nslookup ubuntu.com ns.pipikeung.dnsalias.net

結果﹕
~$ nslookup ubuntu.com ns.pipikeung.dnsalias.net
Server:                ns.pipikeung.dnsalias.net
Address:        xx.xx.xx.xx#53 (xx.xx.xx.xx是ns.pipikeung.dnsalias.net的IP)

Non-authoritative answer:
Name:        ubuntu.comotf
Address: 91.189.91.45
Name:        ubuntu.com
Address: 91.189.91.44
Name:        ubuntu.com
Address: 91.189.88.180
Name:        ubuntu.com
Address: 91.189.88.181
Name:        ubuntu.com
Address: 2001:67c:1360:8001::2c
Name:        ubuntu.com
Address: 2001:67c:1360:8001::2b

表示在ns.pipikeung.dnsalias.net內無ubuntu.com的記錄,交給別的伺服器查到的結果在Non-authoritative answer下例出。

例二﹕以ns.pipikueng.dnsalias.net查pipikeung.dnsalias.net有無MX記錄﹕
nslookup -q=mx pipikeung.dnsalias.net ns.pipikeung.dnsalias.net

結果﹕
~$ nslookup -q=mx pipikeung.dnsalias.net ns.pipikeung.dnsalias.net
Server:                ns.pipikeung.dnsalias.net
Address:    xx.xx.xx.xx#53

pipikeung.dnsalias.net        mail exchanger = 10 mail.pipikeung.dnsalias.net.

表示在ns.pipikeung.dnsalias.net中有pipkeung.dnsalias.net的MX記錄,並已例出如上。

後話﹕若主機量少,直接交上層DNS設定好,便一了百了﹗自架DNS只是想嘗試實切操作而已﹗