DNS Delegate和Forwarder的區別


一. DNS的委派

所謂DNS委派就是一個DNS服務器將某些區域的解析委托給其他DNS服務器負責.

區域中的子域過多時,維護起來不方便,還用遇到域名查詢的瓶頸,通過在區域中新建委派,可以將子域名委派到其它服務器維護。

子域文件在父域文件中; 委派有獨立的區域文件。

DNS委派: DNS服務器把一個區域的子域委派給另外一台DNS服務器來管理,這樣當客戶端向DNS提交查詢請求時,根域的DNS服務器會把這種請求轉發給維護其子域的DNS服務器。

二. DNS的轉發

轉發DNS是一種特殊的遞歸。如果本地的緩存記錄中沒有相應域名結果時,其將查詢請求轉發給另外一台DNS服務器,由另外一台DNS服務器來完成查詢請求。

當你設置了轉發器后,所有非本域的和在緩存中無法找到的域名查詢都將轉發到設置的DNS轉發器上,由這台DNS來完成解析工作並做緩存,因此這台轉發器的緩存中記錄了豐富的域名信息。因而對非本域的查詢,很可能轉發器就可以在緩存中找到答案,避免了再次向外部發送查詢,減少了流量。只有當服務器是非授權的,並且緩存中沒有相關記錄時,才會進行轉發。

1、完全轉發:當DNS服務器收到查詢請求的時候會先看看是不是查詢本域的信息,本地緩存是否有數據,如果不能使用本地數據解析DNS會將查詢請求發送給轉發器,此時是以遞歸查詢的方式發送給轉發器的,而在標准的DNS解析中,DNS服務器將以迭代查詢的形式發送給另一個DNS服務器。

    所謂的 forwarder,就是當某一台 NS 主機遇到非本機負責的 zone ( slave zone 也屬於本機負責的范圍) 查詢請求的時候,將不直接向 "." zone 查詢,而把請求轉交給指定的 forwarder (一台或多台) 主機代為查詢。我們知道,當DNS服務器接到客戶端主機的查詢請求時,首先會檢查這個查詢是否屬於本機管轄,否則將轉向 "." zone 再逐級的查詢下去,最后再把查詢結果告訴客戶端。在這個過程之中,DNS服務器還會將查詢到的結果存放到緩存中。只要緩存中的 TTL 沒過期,在下次遇到同樣查詢的時候,就可以直接將結果響應給客戶端,而無需再重復上次的查詢流程。如果DNS服務器上指定了forwarder,那這個DNS發現緩存中沒有記錄時,將不向 "." 查詢,而是向 forwarder 送出同樣的請求(轉發),然后等待查詢結果,即把逐級往下查詢這個耗費精力的動作,交給 forwarder 負責。但無論這個結果是自己直接查詢得來的,還是 forwarder 送回來的,DNS服務器都會保存一份數據在緩存中。這樣,以后的相同查詢就快多了,這對於DNS所服務的客戶端而言查詢效率會提高很多。
   當forwarder沒有返回答案時,奔DNS會自己去遠端請求。但是如果配置了forward only;   則他僅僅處理轉發,而不自己查詢。


2、部分轉發(只轉發解析某個域的DNS):假設有兩個域,a.com和b.com,a.com這個域是經過授權(向上級注冊,也就是.com知道他的存在)的,而b.com這個域沒有經過授權,此時如果a.com中的一台主機要訪問www.b.com就會出現訪問不了,但是如果a.com知道b.com這個域的DNS主機是誰,即便b.com沒有經過授權,這時a.com的DNS可以設一個部分轉發,將本域所有要求解析b.com域的請求全部都發給b.com這個域的DNS主機就可以了。
部分轉發一般用於訪問未經授權的DNS域。配置格式
zone “b.com” IN {
 type forward;
 forwarders {IP;};

 }

 

注意:
1.轉發服務器的查詢模式必須允許遞歸查詢,否則無法正確完成轉發
2.轉發服務器列表如果是多個DNS服務器,則會依次嘗試,直到獲得查詢信息為止
3.配置區域委派時,如果使用轉發服務器,有可能會產生區域引用的錯誤
#作為轉發服務器,千萬不要出現轉發循環。
配置轉發服務器技巧:
1).轉發列表配置精簡
對於配置有轉發器的DNS服務器,可將查詢發送至多個不同的位置,如果配置轉發服務器配置過多,則會增加查詢的時間,應根據需要使用轉發器,例如:將本地無法解析的DNS信息轉發至其他域名服務器。

2).避免鏈接轉發器
如果配置了DNS服務器server1將查詢請求轉發給DNS服務器server2,則不要在為server2配置其他轉發服務器。如果其他轉發服務器進行了錯誤的配置,將查詢轉發給server1,那么可能導致錯誤。

3).減少轉發器負荷
如果大量的DNS服務器使用這些轉發器進行域名信息查詢,則會增加轉發器的工作量,降低解析的效率,所以建議使用一個以上的轉發器實現負載。

4).避免轉發器配置錯誤
DNS服務器會按照轉發器配置文件設置的順序來轉發域名,如果國內的域名服務器,錯誤的將第一個轉發器配置為美國的DNS服務器地址,則所有本地無法解析的查詢均會發送至指定美國的DNS服務器,這會降低網絡上名稱解析的效率

 三. Forwarder的設置

forwarder轉發功能只需要在named.conf中配置即可:

# cat /etc/named/named.conf
options {
             listen-on port 53 { any; };
             listen-on-v6 port 53 { ::1; };
             directory "/var/named";
             dump-file "/var/named/data/cache_dump.db";
             statistics-file "/var/named/data/named_stats.txt";
              memstatistics-file "/var/named/data/named_mem_stats.txt";
              allow-query { any; };
              recursion yes;
              forward first;
              forwarders {            #即訪問非kevin.cn域名時將解析轉發到這幾個DNS地址(分別為阿里的DNS、google的DNS)上進行解析。
                     223.5.5.5;          #注意這里轉發的是DNS地址,沒有指定DNS轉發域名。
                     223.6.6.6;
                     8.8.8.8;
                     8.8.4.4;
               };
               };
zone "grace.cn" {                       #訪問grace.cn域名時,將解析請求轉到192.168.51.39(即grace.cn域名的DNS地址),注意這個不能寫在上面的forwarder處,否則轉發無效!
              type forward;                #注意這里轉發配置中制定了轉發的域名,即forwad轉發區(forward zone)設置,這是bind9之后的新特性。
              forwarders { 192.168.51.39; };
};

forward first | only;
forward指令用於設置DNS轉發的工作方式:
1)forward first設置優先使用forwarders DNS服務器做域名解析,如果查詢不到再使用本地DNS服務器做域名解析。
2)forward only設置只使用forwarders DNS服務器做域名解析,如果查詢不到則返回DNS客戶端查詢失敗。

轉發器的配置格式是: 
options { 
            forwarders { 192.168.10.35; 192.168.10.36; }; 
};

這里需要注意的是:
轉發器本身不用做任何設置,而是對需要轉發器的其他DNS server做以上配置。還有,如果該DNS Server無法聯系到轉發器,那么BIND會自己嘗試解析。

 
         

如果要禁止BIND在無法聯系到轉發器時不做任何操作,那么還可以使用forward only命令,這樣BIND只能使用區的權威數據和緩存來響應查詢了(在連接不到轉發器的情況下)。 
options { 
            forwarders { 192.168.10.35; 192.168.10.36; }; 
            forward only; 
};

 
在BIND8.2以后引入了一個新的特性:轉發區(forward zone),它允許把DNS配置成只有查找特定域名的時候才使用轉發器。( BIND 9從9.1.0才開始有轉發區功能 )例如,你可以使你的服務器將所有對 kevin.cn 結尾的域名查詢都轉發給 kevin.cn 的兩台名字服務器: 
zone "kevin.cn" { 
          type forward; 
          forwarders { 110.50.80.208; 110.50.80.209; }; 
};

這樣的功能有什么用呢?
假設kevin.cn和你的網絡有一個私有的連接,而kevin.cn又沒有連接上Internet ,那么你從Internet 是無法查到 kevin.cn 后綴的域名的,這時你就要使用轉發區的功能了。

還有一種轉發區設置和剛才的設置剛好相反,它允許設置什么樣的查詢將不被轉發,當然這只適用於在options語句中指定了轉發器的DNS 。配置如下: 
options { 
            directory "/var/named"; 
            forwarders { 192.168.10.35; 192.168.10.36; }; 
};

zone "kevin.cn" { 
          type master; 
          file "zone.kevin.cn"; 
          forwarders {}; 
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM