DNS服務(4)Slave DNS及高階特性
為了簡化運維人員的負擔,使用Master/Slave DNS架構的情況比較好,現在我們來簡單敘述一下Master/Slaver DNS的特點
主DNS伺服器:維護所負責解析的域內解析庫伺服器;解析庫由管理員維護;
從DNS伺服器:從主DNS伺服器或其它的從DNS伺服器那裡“複製”(區域傳遞)一份解析庫;
序列號:解析庫的版本號;前提:主伺服器解析庫內容發生變化;其序列號遞增;
重新整理時間:從伺服器從主伺服器請求同步解析庫的時間間隔;
重試時長:從伺服器從主伺服器請求同步解析庫失敗時,再次嘗試請求的時間間隔;
過期時長:從伺服器時鐘聯絡不到伺服器時,多久以後放棄從伺服器角度,停止提供服務
區域傳送:
全量傳送:傳遞整個解析庫
增量傳送:傳遞解析庫變化的那部分內容
環境準備
centso 6.5主機兩臺
master主機IP地址192.168.1.1,主機名為master.test.com
slave主機IP地址為192.165.1.2,主機名為slave.test.com
1.master DNS許可權的開放
(1)提供Slave DNS伺服器進行zone transfer的伺服器為master.test.com.
(2) test.com及 1.1.168.in-addr-arpa兩個Zone提供給Slave DNS使用。(正解反解都要提供)
(3) master.tst.com的named僅提供給slave.test.com這臺主機進行zone transfer。
(4)Slave DNS假設在192.168.1.2這臺伺服器上面。
我們在master.test.com這臺伺服器中除了named.conf需要調整之外,兩個zone file也需要調整,在named.conf當中,需要設定哪個IP可以對我的zone進行傳輸(allow-yransfer),而在zone file中,只要加入一項NS記錄即可。
進入到/etc/named.conf,或者是/etc/named.rfc1912.zones檔案中。
備註:這兩個配置檔案一個為根域的解析配置檔案,一個為使用者自定義區域解析檔案,二者都可以讓使用者新增新的區域解析資訊。看個人使用習慣,決定在哪個檔案中定義新的區域資訊。在這裡我們使用named.rfc1912.zones檔案進行zone記錄的新增
在named.rfc1912.zones檔案中建立兩條zone記錄test.com以及1.168.192.in-addr.arpa併為其指定配置檔案路徑
備註:其中allow-transfer後面括號中的地址要填寫為slave伺服器的ip地址,有過個地址的話,中間用分號隔開。
2. 然後我們建立兩個zone file檔案,在/var/named/目錄下面建立兩個zone file檔案
編輯第一個檔案test.com.zone
備註:其中@表示當前區域主機名稱即master.test.com
編輯反解的192.168.1.zone檔案
3.設定完master伺服器的配置後,我們來設定slaver伺服器的配置檔案
編輯/etc/named.rfc1912.zones檔案
在檔案中建立兩條zone記錄test.com以及1.168.192.in-addr.arpa
備註:這裡因為是從DNS伺服器所以type型別要設定為 slave;同時指名masters的正確IP地址。slave DNS的zone filename部分,由於zone file都是從Master取得的,通過named這個程式來主動建立起需要的zone file,因此這個zone file的路徑只要設定為slaves/zone name即可。
如此一來Slave DNS就建立起來了,未來如果Master DNS要跟新資料庫時,只需要修改過序號,並重新啟動named後,這臺Slave DNS就會跟著更新。
DNS的高階特性
1. bind中基礎的安全相關配置:
acl:把一個或多個地址歸併為一個集合,並通過一個同一的名稱呼叫;
示例:
acl mynet{
172.16.0.0/16;
};
(1) 訪問控制的指令:
allow-query {};允許查詢的主機;白名單
備註:只允許定義的這幾個IP地址進行查詢。一般來說為any,因為DNS主機應該允許所有人檢視其解析的主機,注意將allow-query定義在zone中只能對一個zone生效,定義在/etc/named.conf的options中則對所有的zone都生效
(2)只允許slaves中定義的主機進行區域傳送;
(3)allow-recursion{}:允許遞迴的主機;通常定義在options全域性配置中;示例:自己定義mynet訪問控制列表
備註: allow-update{}:允許更新區域資料庫中的內容;通常設定為none,不允許任何人更新,zone中定義為 allow-update { none; };用YUM下載BIND安裝包,預設會啟用dnssec,配置檔案中dnssec-enable不能註釋掉;將後面的yes改為no,父域子域都要做更改。
dnssec-enable no;
dnssec-validation no;
2.view檢視
檢視:
一個bind伺服器可定義多個view,每個view可以有一個或多個zone;
每個view用來匹配一組客戶端;
多個view內可能需要對同一區域進行解析,但使用不同的區域解析檔案;
view VIEW_NAME {
match-clients {}; //匹配的客戶端
};
注意:
(1)一旦啟用了viwe,所有的zone都定義在view中;
(2)僅有必要在匹配到允許遞迴請求的客戶所在viwe中定義根區域;
(3)客戶端請求到達時,是自下而上檢查每個view所服務的客戶端列表;
示例:
第一步:將named.conf中根區域的定義刪除將它定義到named.rfc1926.zones
options定義一個acl
第二步:在named.rfc1925.zones定義view
上圖定義的檔案表示對匹配到的客戶端同時對這些客戶端進行遞迴查詢
新增一個新的view
配置檔案不同,在/var/named/中從新定義一個區域資原始檔
vim external.zone
這樣通過BIND元件的view功能可以根據不同網段的IP請求轉發給不同的伺服器進行處理