在進行網路設定的時候,除了要輸入 IP 位址、子網路遮罩、通訊閘之外,至少還要輸入二個 DNS 伺服器,這是為了避免第一台 DNS 伺服器故障的話,還有第二台可以接手負責解析。
而我們已經架好了第一台,理所當然要再建置第二台,不過,可不是照同樣的步驟進行就可以了。
想像一下,當我們有五台 DNS Server 一起負責管理 30 筆記錄。
某一天,三位系統管理員在各自管轄的 DNS Server 上修改了 3、5、10 筆記錄,請問是要以誰修改的記錄為準?最後送出修改的?網路速度最快的?還是修改數量最多的?
如果真的是這樣,全世界的 DNS 記錄早就大亂了,所以實際上的運作模式是:
- 最早建立的 DNS Server 會先宣告成為 Master,只有它有權力進行新增、修改、刪除的動作。
- 後續建立的 DNS Server 則是要宣告成 Slave,它只能把主要伺服器的記錄複寫回來,並分擔 Client 端的 DNS 記錄查詢,其他什麼事都不能做。
事前準備
請參照 CentOS 7.0 不完全安裝手冊 系列文章,完成作業系統的安裝。
我們會以下面的網路環境來實作:
- 網域:itist.local.
- 網段:192.168.88.0 / 24
- 主 DNS 伺服器:192.168.88.155
- 次 DNS 伺服器:192.168.88.154
- Mac 用戶端:192.168.88.62
主要伺服器請依照 [CentOS 7] 網際網路裡的 104 查號台 - DNS Server,完成所有實作的步驟。
至於,次要伺服器只要先搞定作業系統的安裝,再依照接下來的步驟進行實作。
主要伺服器設定
打開主設定檔。
sudo vi /etc/named.conf
指定此區域允許次要伺服器複寫 DNS 記錄,並在主要伺服器更新記錄後,自動通知次要伺服器來複寫。
allow-transfer { 192.168.88.154; };
notify yes;
打開正解區域設定檔。
sudo vi /var/named/zone-itist.local
只要新增、刪除、修改過任何一筆記錄,別忘了要更新日期序號,這樣子次要伺服器才知道此區域的記錄有更新過。
itist.local. IN SOA ns1.itist.local. webmaster.itist.local. ( 2016021801 14400 900 604800 86400 )
並且加入次要伺服器的 NS 記錄和 A 記錄。
itist.local. IN NS ns2.itist.local.
ns2.itist.local. IN A 192.168.88.154
如果我們需要更多台伺服器的話,輸入它們的 NS 及 A 記錄,也別忘了在 allow-transfer 參數加上其他伺服器的 IP。
反解區域同樣比照辦理,打開反解區域設定檔。
sudo vi /var/named/zone-192.168.88.0
加入 Slave DNS Server 的 NS 記錄和 PTR 記錄。
88.168.192.in-addr.arpa. IN NS ns2.itist.local.
154.88.168.192.in-addr.arpa. IN PTR ns2.itist.local.
完成後,重新載入設定值。
sudo systemctl reload named
次要伺服器設定
安裝 Bind。
sudo yum -y install bind
打開主設定檔。
sudo vi /etc/named.conf
修改這幾個參數:
- listen-on port 53 - 提供 DNS 服務的 IP。
- allow-quqry - 允許進行查詢的 Client 端 IP 或網段。
- allow-recursion - 允許遞迴查詢的 Client 端 IP 或網段。
allow-query { localhost; 192.168.88.0/24; };
allow-recursion { 127.0.0.1; 192.168.88.0/24; };
重點來了,次要伺服器在正反解區域的宣告就是關鍵。
- type 宣告成 slave。
- file 的路徑一定要指到「 slave」目錄裡面,檔名可以跟主要伺服器不同,利於辨識即可。
- masters 指定主伺服器的 IP。
type slave;
file "slaves/zone-itist.local";
masters { 192.168.88.155; };
};
zone "88.168.192.in-addr.arpa" IN {
type slave;
file "slaves/zone-192.168.88.0";
masters { 192.168.88.155; };
};
檢查一下主設定檔有沒有錯誤。
sudo named-checkconf /etc/named.conf
開啟防火牆的 DNS 通訊埠。
sudo firewall-cmd --permanent --zone=public --add-port=53/tcp
sudo firewall-cmd --permanent --zone=public --add-port=53/udp
sudo firewall-cmd --reload
調整 SELinux 權限。
sudo restorecon /etc/named.conf
sudo restorecon -r /var/named
重新啟動服務,並讓它在開機後自動啟動。
sudo systemctl restart named
sudo systemctl enable named
不需要建立正解及反解區域設定檔,因為會從主伺服器複寫過來,儲存在 /var/named/slaves 目錄裡。
實際測試
比照 [CentOS 7] 網際網路裡的 104 查號台 - DNS Server 的測試方式,只是把 DNS Server 的 IP 從主伺服器改成次要伺服器的 IP。這邊以 Mac 上的操作為例,DNS Server 改成 192.168.88.154。
同樣的去查詢我們所建立的記錄,只要有正確的回傳就大功告成了。
參考資料
圖片來源
- https://pixabay.com
- https://openclipart.org
更新紀錄
- 2016/02/06 撰文 。
0 意見 :
張貼留言