天天看點

DNS三部曲之DNS的疊代、遞歸、轉發

dns的疊代和遞歸就是一個概念,在正常的完成一整串dns查詢流程的時候,我們需要用這麼一個概念來區分它們。

遞歸:a查詢b,如果b找不到,那麼就會b向c發起請求,直到找到請求,後将結果發送給a.

疊代:a查詢b,如果b找不到,但是知道c有,那麼告訴b的c伺服器位址,讓b去向c伺服器發起請求。

其實不必糾結它們細節的稱呼,如果我面試一個人,能答出這句話,我就算他這題過了。

DNS三部曲之DNS的疊代、遞歸、轉發
DNS三部曲之DNS的疊代、遞歸、轉發

options{

        directory" /var/named";

        recursion no; 

};

zone "imoocc.com" {

        typemaster;

        file"imoocc.com.zone";

zone "iaskjob.com" {

        file"iaskjob.com.zone";

zone "11.156.10.in-addr.arpa" {

        file"10.156.11.zone";

用戶端檢視效果:

[root@iaskjob opt]# dig @www.iaskjob.com www.imooccc.com

; <<>> dig 9.8.2rc1-redhat-9.8.2-0.17.rc1.el6 <<>> @www.iaskjob.com www.imooccc.com

; (1 server found)

;; global options: +cmd

;; got answer:

;; ->>header<<- opcode: query, status: refused, id: 55372

;; flags: qr rd; query: 1, answer: 0, authority: 0, additional: 0

;; warning: recursion requested but not available

;; question section:

;www.imooccc.com.ina

2、用戶端發起疊代查詢請求

dig +norecurse @199.7.91.13 www.imoocc.com

dig +norecurse @192.33.14.30 www.imoocc.com

dig +norecurse @111.30.136.110 www.imoocc.com

在我答案中,我沒有确定的域名,但是能告訴你誰能有這個更精确的答案。

伺服器和伺服器的的疊代查詢也是一個道理,我們接觸比較多的就是dns的子域授權。

DNS三部曲之DNS的疊代、遞歸、轉發

父域

<a href="http://imooc.com/">imooc.com</a>

子域

<a href="http://test.imoocc.com/">test.imoocc.com</a>

a伺服器(ip:30.96.8.232) 負責imoocc域名解析,并授權b伺服器test.imoocc.com的域名解析

a伺服器:

$ttl 7200

@  in  soa  imoocc.com.   jeson.imoocc.com. (222 1h 15m 1w 1d) 

imoocc.com.   in    ns    dns1.imoocc.com.

dns1  in a  10.156.11.232

www  in  a  115.182.41.180

@ in  mx10  mail

mail   in   a  10.156.11.233

test.imoocc.com.  in  ns  ns1.test     --将test.imoocc.com的這個子域授權給了ns1.test 30.96.8.233來作

ns1.test         in      a    30.96.8.233

~                            

b伺服器(ip:30.96.8.233),完成整段子域授權:

$ttl 7200                                                                       

@ in soa  test.imoocc.com.  jeson.test.imooccc.com. (222 1h 15m 1w 1d) 

    in ns dns1

dns1   in     a  30.96.8.233

www   in     a  30.96.8.233

dig @30.96.8.232 www.test.imoocc.com -trace

如果我沒法解析,那麼我就指定一台dns來解析。

注意:bind9版本後,可以支援指定域來轉發。

DNS三部曲之DNS的疊代、遞歸、轉發

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

如果你要禁止 bind 在無法聯系到轉發器時不做任何操作,那麼你還可以使用 forward only 指令,這樣 bind 隻能使用區的權威資料和緩存來響應查詢了( 在連接配接不到轉發器的情況下 )。

forward first說明先把dns請求轉發出去然後再查本機的dns記錄

b服務(30.96.8.233)

設定将iaskjob.com這個域,轉發由a伺服器解析

vim name.conf

                type forward;

                forwarders { 30.96.8.232; };

a伺服器(30.96.8.232)

設定機器的權威域

iaskjob.com.                in   soa     iaskjob.com.iaskjob.163.com. ( 20140122

100 1h 15m 1w 1d)  

iaskjob.com.       in   ns      dns1.iaskjob.com.

dns1.iaskjob.com.  in   a       10.156.11.232    

www  in   a       10.156.11.232   

 dig @30.96.8.233 www.iaskjob.com -trace

繼續閱讀