1. 程式人生 > >Linux-dns基礎知識和BIND的簡單配置-3(主從DNS服務器及轉發)

Linux-dns基礎知識和BIND的簡單配置-3(主從DNS服務器及轉發)

-m 區域解析庫 com window 完成 file 發的 new 配置

rndc的相關知識:
1.什麽是rndc:
Remote Name Domain Controller,遠程名稱域控制器
rndc 通過一個 TCP 連接與名字服務器通信,發送經過數字簽名認證的命令。在當前版本的rndc 和 named 中,唯一支持的認證算法是 HMAC-MD5,在連接的兩端使用共享密鑰。它為命令請求和名字服務器的響應提供 TSIG類型的認證。所有經由通道發送的命令都必須被一個服務器所知道的 key_id 簽名。
監聽端口:953/tcp
語法:
rndc [-b address] [-c config] [-s server] [-p port]
[-k key-file ] [-y key] [-V] command
command is one of the following:
reload Reload configuration file and zones. #重新加載配置文件和區域文件
reconfig Reload configuration file and new zones only. #重新加載配置文件和新的區域文件
freeze Suspend updates to all dynamic zones.
stats Write server statistics to the statistics file. #將服務器統計信息寫入統計文件中
stop Save pending updates to master files and stop the server.
halt Stop the server without saving pending updates.
flush Flushes all of the server‘s caches. #清空DNS緩存
status Display status of the server. #顯示bind服務器的工作狀態
2、rndc的調試和日誌:
調試:顯示程序運行中的詳細信息(會產生I/O,正常情況下建議關閉)
調試級別:0,1,2,3...
提升調試級別:
rndc trace
rndc trace LEVEL
rndc notrace
打開查詢日誌:記錄查詢動作(會增加磁盤I/O)
技術分享圖片
——————————————————————————————————————————————————
主從DNS服務器的配置
功能:避免因主DNS服務器掛了而影響一個域下的所有主機無法訪問;服務器可均衡訪問負載。
從服務器上的解析庫文件內容要與主服務器一致,從服務器要隨時從主服務器同步,這個同步是單向的,只有從服務器拉取主服務器的解析庫文件
如何令解析請求均衡負載

如果是對本地緩存DNS服務器的請求,則只需令本地一半主機DNS地址配置為主服務器的IP,另一半配置為從的即可;
如果是對互聯網上負責指定域的服務器,則只需在該服務器上級DNS服務器寫兩條NS記錄即可,bind給客戶主機答案時會采取輪詢方式。
配置主從服務器
主從服務器時間要一致。
從服務器的解析文件從主DNS服務器同步而來,不能手動創建和修改。從服務器的解析庫文件放置在/etc/named/slaves目錄下。
named進程對工作目錄/var/named是沒有寫權限的,而在從服務器上又不能像在主服務器上那樣以管理員的身份手動創建解析庫,故bind提供了一個目錄/var/named/slaves用來專門存放同步而來的解析文件。named進程對該目錄是有寫權限的
技術分享圖片

區域的定義:
zone “區域名稱” IN {
type slave; #區域類型為從DNS服務器
file "slaves/ZONE_NAME.zone"; #區域文件必須保存在slaves目錄下,放在其他目錄沒有權限
masters { #指出主服務器是誰,註意:花括號前後要有一個空格
MASTER_DNS_IP;主dns服務器IP地址,可一個也可以多個
MASTER_DNS2_IP;
};
};
我們在這裏以正向解析的主從DNS服務器配置為例子
首先編輯主dns服務器上的區域解析庫文件添加相應記錄
技術分享圖片
編輯從DNS服務器的/etc/named.rfc1912.zones 添加相應區域記錄
zone "lishuai.com" IN {
type slave;
file "slaves/lishuai.com.zone";//這裏的區域名稱和解析庫文件名稱要和主DNS服務器的保持一致
masters { 192.168.2.18; };
};
在從DNS服務器上檢查語法錯誤,重讀配置文件
技術分享圖片
我們在主DNS服務器解析庫文件裏修改一下序列號
技術分享圖片
rndc reload
我們可以在主DNS服務器日誌中看到
技術分享圖片
在從DNS服務器的/var/named/slaves內我們也可以看到同步的解析庫文件
技術分享圖片
技術分享圖片
如果同步的解析庫文件亂碼,我們就在區域文件裏指定格式即可
zone "lishuai.com" IN {
type slave;
file "slaves/lishuai.com.zone";
masters { 192.168.2.18; };
masterfile-format text;
};
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

測試
技術分享圖片
1、每個DNS服務器必須要有一個對應的NS資源記錄;
2、創建slave的時候,其配置文件類型必須是type slve; 必須指定主服務器的 IP地址 ;
3、可以使用dig -t axfr test.com @server_IP 從主DNS服務器拉取所有解析庫資源記錄;
4、主輔同步完成後,將自動在slave服務器上的slaves/目錄下生成zone文件,這些區域文件是從主DNS同步過來的,一般為只讀,不建議更改slave的zone文件;
5、在主DNS上修改區域文件時,必須將SOA記錄的serial加1 因為slave是通過serial值來進行判斷更新的(windows系統上是自動完成的);
6、DNS的日誌默認全部保存在/var/log/messege 文件中;
7、DNS的解析依賴於解析庫,所以就算是所配置的內容是完全不存在的也可以解析(且正向解析和反向解析的解析庫是各自獨立的)。需要註意,正向解析裏沒有PTR記錄,而反向解析庫裏不需要A記錄、MX記錄和CNAME記錄

創建子域
這裏我們還是以從DNS服務器作為子域服務器(192.168.2.29)主DNS服務器作為父域(192.168.2.18)
我們在子域服務器編輯/etc/named.rfc1912.zones創建子域區域文件
zone "son.lishuai.com" IN {
type master;
file "son.lishuai.com.zone";
};
創建子域區域文件的解析庫文件
技術分享圖片
我們在父域服務器編輯解析庫文件添加子域的NS記錄和A記錄
技術分享圖片

named-checkconf
named-checkzone lisuai.com lishuai.com.zone
技術分享圖片
extra GLUE A表示額外的粘附A記錄
rndc reload

測試
技術分享圖片
此時我們把主從DNS服務器功能關掉 並且清除緩存我們測試一下子域是否能訪問父域
技術分享圖片
rndc reload
rndc flush
技術分享圖片
此時我們發現子域無法解析父域
授權是自上而下的,上級(父域)知道下級(子域)的存在,而下級(子域)並不知道上級(父域)的存在(因此子域的解析從根開始層層往下叠代)
我們可以通過轉發讓子域也能解析父域
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

DNS名稱解析轉發器:

技術分享圖片

(1)當本地DNS服務器(也是轉發器)收到查詢時,它會嘗試使用它主持和緩存的主要和輔助區域解析該查詢;
(2)如果不能使用本地數據解析查詢,此時它作為客戶端,會將查詢轉發給外網DNS服務器;
(3)本地DNS(轉發器)收到客戶端的請求後會等待一段很短的時間,等待來自外網DNS的應答;
(4)對於外網DNS來說,它接收到的查詢請求是遞歸查詢,此時,它自己需要向外層層叠代找到最終答案返回給轉發器(此時轉發器作為DNS客戶端)
(5)轉發器將外網DNS返回的查詢結果送到客戶端(非權威答案),完成解析過程。
註:轉發的前提——接收轉發請求的服務器(這裏是外網DNS)必須能夠為請求者(這裏是本地DNS,也是轉發器)做遞歸查詢;
3、轉發的類型:
(1)無條件轉發:轉發所有針對非本機負責解析的區域的請求;

#在主配置文件/etc/named.conf的全局選項中添加如下內容:
options {
forwarders { ip; }; #指明轉發器是誰
forward only|first; #only表示僅轉發 ;first表示先進行轉發,如果沒查詢到結果,那麽它自己還會根據根提示向外叠代查詢
};

(2)條件轉發:僅轉發對特定區域的請求(即轉發域);

#在區域置文件/etc/named.rfc1912.zone中定義轉發域:
zone "區域名稱" IN {
type forward; #區域的類型為轉發
forwarders { ip; }; #指明轉發器是誰
forward only|first; #only表示僅轉發 ;first表示先進行轉發,如果沒查詢到結果,那麽它自己還會根據根提示向外叠代查詢

};

我們在子域服務器的全局配置文件裏加入如下:
技術分享圖片
檢查配置文件然後rndc reload
測試
技術分享圖片
此時子域已經能正常解析父域
我們把剛才在全局配置文件中加的轉發給註釋掉,然後rndc flush
在子域的的/etc/named.rfc1912.zones 配置條件轉發,轉發只針對父域的請求

zone "lishuai.com" IN {
type forward;
forwarders { 192.168.2.18; };
forward first;
};

檢查配置文件並執行rndc reload
測試
技術分享圖片
此時針對lishuai.com的請求我們可以通過子域去解析

Linux-dns基礎知識和BIND的簡單配置-3(主從DNS服務器及轉發)