linux主輔DNS的搭配

 主輔DNS的簡單配置

   今天我剛把主備DNS的相關內容複習了一下,自己邊編寫一個簡單的教程,也算是對自己學習的一個回顧,旨在加強學習。坦白的講DNS的相關知識還真是多,稍微一查資料就很多東西都不知道,都需要去吸收,但畢竟自己目前也是個初學者,很多東西目前不打算深究,這裏只是對主輔DNS的簡單配置進行一個說明,對一些新手或許會有所幫助,因水平有限,如果其中有不對的地方歡迎大家指正
------------------------天使的分割線----------------------
 一、首先我們先了解下爲何需要有主輔DNS服務器
假設你的 DNS 服務器總共管理 50 部主機的 IP 與主機名稱的對應好了, 同時假設你只有一部 DNS 服務器時,那麼萬一由於網路問題或者是主機的軟、硬件問題,導致這個服務終止了, 想一想,你那 50 部主機的 hostname 與 IP 的對應還能不能找的到? 所以,一般來說, DNS 系統通常會建議您至少要有兩部主機提供 DNS 的服務~這樣當一臺服務器出問題的時候我們還有備用的可以用。
既然是主輔DNS,那麼自然會有一個爲主DNS服務器(master),幾個輔DNS(slave)
Master:這種類型的 DNS 本身含有領域名稱的設定檔 (就是有 Zone 啦!),這個設定檔就是設定正解或者是反解的資料!所以他本身是具有提供 Internet 查詢所需的資料喔!例如我可以在我的主機上面設定提供 example.com 這個網域,那麼我的主機就是 master 類型的主機啦!
Slave:顧名思義其是對主DNS提供一種備份,當主DNS解析失敗的時候,客戶端通過輔DNS一樣可以進行解析。但現在就有一個問題了,輔DNS一般是不只一部的,那麼當主DNS內的A記錄發生了更改,那麼我們輔助DNS好幾部要如何去自動同步呢?總不能一臺一臺去手動更改吧?這個問題當您看完文檔後就會知道答案了
二.瞭解主輔DNS的複製原理
  首先master DNS服務器每次修改完成並重啓服務後,將傳送notify(通知)給所有的slave DNS服務器。slave DNS服務器將查詢master服務器的SOA記錄,master DNS服務器收到請求後將SOA記錄發送給Slave DNS服務器,Slave DNS服務器收到後同時對比查詢結果中的serial值,如果serial值不大於本機的話將結束數據同步過程;但是如果serial值大於本機的話,slave DNS將發送zone transfer(zone轉移)請求要求(AXFR/IXFR)。Master響應zone transfer請求並傳送結果,直到整個slave更新完成。整個過程如圖所示:                                      
三.簡單的配置
說明:主dns的ip:192.168.1.102
      dns的ip:192.168.1.101
1. master服務器的設置
主輔DNS要形成互相輔助的這種機制,那麼主DNS必須要開放一個權限讓輔助DNS可以去更新接受zone,以前我們只有一個DNS的時候是不允許zone的傳送的,但這裏卻要開放,所以需要設置allow-transfer參數;同時我們根據主輔DNS的工作原理知道,每次主DNS修改完成後重啓服務會傳送notify值,所以我們也要在這裏對notify進行設定,如圖所示:

 

 notify: 默認爲yes,當服務器的一個域授權發生改變,將發送DNS NOTIFY信息給域NS記錄的服務器列表,和一些列在also-notify選項中的服務器.如果選master-only,信息只發給主域,如果是explicit,通知只發給also-notify的列表,no不發通知.

  這裏需要注意:如果我們also-notify沒有進行設定的話,那麼會造成當主dns記錄發生改變後,輔dns並沒有同步更改相應的記錄。也許有人會說我們可以更改SOA中的Refresh值,把它改小點也一樣,這樣說到也是可以的,但問題是我們的主DNS修改完重啓服務後,它是會主動發送一個notify值,如果輔助DNS服務器沒有收到才參考Refresh,Refresh 不成功,則參考Retry ,Retry 一直不成功,則參考 Expire,如果Expire也不成功,則選擇放棄zone transfer的過程。所以爲了主輔更好的同步,建議大家在這裏設置also-notify。
  
2. slave服務器的設置
  slave DNS 的 /etc/named.conf 與 master DNS 幾乎一模一樣啊! 唯一的差異在於兩個 zone 的類型 (type) 而已。

 

 
你得要特別留意類型是 slave 之外,那個主機來源 (masters) 是有加 "s" ,可別粗心的把這個給忘記了。
另外需要注意的是權限的問題,因爲我們輔助DNS要接受來自主DNS的zone文件,比如此實驗中,輔助DNS必須接受主DNS的example.com與dl.local兩個文件,所以輔助dns的/var/named/chroot/var/named 這個目錄的權限必須要是 named 這個使用者可以寫入的狀態,也就是這個目錄的使用者必須是named,且分數最少也是750.如圖
 

3. 結尾
   到這裏基本上主輔DNS的配置就基本完成了,現在我們看看重啓named服務,看看是否可以主輔同步更新
我們進入輔DNS的slaves目錄下,觀察此目錄的文件

 
此時,slaves路徑下是沒有任何文件的。但如果我們重啓了named服務後,我們再觀察:

 
發現沒,呵呵主DNS的記錄已經被拷貝過來了。
現在我們在客戶端上進行下試驗,在客戶端上,將DNS解析地址設爲輔助DNS的地址,看看是否可以解析:

 
結果是毫無問題的,解析成功,同樣反向解析也是一樣:
 

 
 
在這裏需要強調一下每次主DNS記錄更新的時候,就像本章一開始說的那樣, 輔助服務器會查詢其serial值,如果輔助的serial值大於主DNS,則輔助DNS不會去更新,只有輔助DNS的serial小於主DNS時候纔會更新,所以我們主dns更新後,要記得將serial變的大於輔助DNS值。如圖

 
                                                                 DNS

 
                                                           輔助DNS
Ok,我們現在做個試驗,在主DNS的正向解析中添加一個記錄:
 

這個時候我們先看看輔助DNS的example.com這個文件的內容是怎樣的:

 
 現在我們主DNS重啓named服務:

 
現在在開觀察輔助DNS的變化:

 
   呵呵,發現沒,輔助DNS的zone記錄已經發生了改變。所以serial值必須是主大於輔纔可以。現在我們在客戶端上看看是否可以解析到這個新的地址(客戶端上的DNS指向的是輔服務器)

 
 呵呵沒問題吧,到這裏我們這章就結束了,下個章節我們講講述加密更新方面的內容,不過那要等我稍微複習下纔可以。
   初學者寫的教程,如果有錯誤歡迎指正
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章