安裝 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只是想嘗試實切操作而已﹗ |