1. 程式人生 > >從dig命令理解DNS

從dig命令理解DNS

DNS(Domain Name System,域名系統),是一種用於將域名解析為IP的伺服器系統,當你上網時輸入一個網址,它之所以能夠找到該網址指向的伺服器地址,都是靠域名系統來進行解析的。

先來講講域名。以華工官網為例 www.scut.edu.cn,一個域名,其實是從最右端開始逐層向下的,也就是說.cn是最高階的域名,往下才是.edu,然後到.scut,最後www是華工網站伺服器的主機名,通過這樣一層一層就能找到你需要訪問的伺服器地址。

當我們輸入一個網址時,DNS幫我們找到這個網址對應的伺服器的過程是怎樣的呢?

1、首先要知道,我們每一部連上Internet的電腦都需要配置當前網路的DNS伺服器地址,例如你開通校園網時,學校會給你分配IP,以及告訴你幾個DNS(預設、備用)的地址讓你填好,這個就是直接為你服務的DNS。但是,單靠這個DNS是無法直接解析域名的,在它之上還有更高階的DNS,這些DNS協同運作最終為你找到你需要的域名所在的伺服器,下面來講講具體過程。

2、你輸入一個網址www.scnu.edu.cn(華南師範大學官網),這時直接為你服務的華工DNS首先會將請求報告給DNS系統的最高等級伺服器“. ”,沒錯,就是一個小數點,這個最高等級DNS伺服器稱為root。

華工DNS: 欸~我想找www.scnu.edu.cn這個網站啊,怎麼去啊?
root DNS:你去找cn.的DNS吧,它的IP是XXX.XXX.XXX.XXX,他負責管這部分的域名。

3、得到這個響應之後,華工DNS會將請求報告給.cn的DNS。

華工DNS: 欸~我想找www.scnu.edu.cn這個網站啊,root讓我來找你,你知不知道怎麼去啊?
.cn DNS:你去找edu.cn.的DNS吧,它的IP是XXX.XXX.XXX.XXX,他負責管這部分的域名。

4、然後,華工DNS會再次給.edu.cn的DNS提交請求。

華工DNS: 欸~我想找www.scnu.edu.cn這個網站啊,.cn讓我來找你,你知不知道怎麼去啊?
.cn DNS:哦~我知道,這是華師的域名,你去找他們家的DNS scnu.edu.cn.吧,它的IP是XXX.XXX.XXX.XXX,你去他家問就知道了。

5、最後,華工DNS向華師的DNS 提供請求,終於能夠找到這個網址對應的IP了。

華工DNS: 欸~我想找www.scnu.edu.cn這個網站啊,聽說是你家的吧,你知不知道怎麼去啊?
.cn DNS:哦~這是我們家www伺服器的域名啊,我知道,IP就是XXX.XXX.XXX.XXX,你去吧。

整個域名解析過程就是如此,可能你會覺得,這樣不是很繁瑣嗎,為什麼不直接找到華師的DNS呢?
這是不可能的,因為單一的DNS不可能記住所有域名對應的IP,這樣會使整個伺服器變得很臃腫,也就變得不可靠。採用這種分層的方法,就可以實現分層管理,從而達到效率提高的目的。

這個過程其實我們是可以很直觀的看到的,就是通過dig命令。

# dig +trace www.scnu.edu.com

這裡寫圖片描述
從dig +trace我們可以很清晰的看到一個域名解析的過程:

第一部分的左邊的“.”就是之前提到的root DNS伺服器,後面的received。。。。192.168.40.2就是直接為本機服務的DNS(由於我是在虛擬機器上執行的所以這是一個本地IP),說明這些root伺服器的資訊是由直接為本機服務的DNS提供的。

第二部分是由192.112.36.4(即root DNS的IP地址)回饋的訊息,cn.就是cn.伺服器,後面的e.dns.cn就是這些cn DNS的域名,也就是root告訴我們要到cn去找。

到了最後一部分,由202.116.32.8(華師DNS的IP地址)告訴我們,這個www.scnu.edu.cn網站的IP地址是121.8.171.13,到此一次域名解析就結束了。

其實dig命令更簡單的用法是

# dig www.baidu.cn

這裡寫圖片描述
開頭是一些統計資訊,可以不用管,我們看一看後面的SECTION

QUESTION SECTION 這部分是提問,顯示你要查詢的域名
ANSWER SECTION 即答案,顯示查詢到的域名對應的IP
AUTHORITY SECTION 這部分顯示的是直接提供這個域名解析的DNS伺服器,不包括更高階DNS伺服器
ADDITIONAL SECTION 這部分顯示的是這些直接提供解析的伺服器的IP地址
最後面的是一些統計資訊,其中SERVER指的是直接為你服務的本地DNS伺服器的IP。

除了這些內容之外,還有:
1、中間的5指的是ttl(time to live ,暫存時間),表示這次請求會在伺服器上儲存多久時間(單位:秒)。
2、IN是固定關鍵詞
3、CNAME是別名,意思是這個域名還有另外一個名字,兩者指向同一個IP。 A指的是Address,即IP地址。 NS指的是伺服器主機名,在AUTHORITY SECTION裡面的伺服器主機名,都會在ADDITIONAL SECTION裡給出該主機的IP地址。

在上面的dig命令我們可以看到,在解析一個域名的時候,往往會發現有多個DNS伺服器提供解析服務,這是因為DNS伺服器要求一般至少有兩個,以防發生伺服器宕機無法提供域名解析的情況。那麼多個伺服器,誰來響應這個DNS請求呢?這就要看伺服器管理者怎麼設定各個伺服器的主從關係(Master-Slave)了,通過dig命令也可以檢視DNS伺服器的主從關係。

dig -t soa www.baidu.com

這裡寫圖片描述

SOA是start of authority的簡稱,提供了DNS主伺服器的相關資訊,在soa之後我們可以看到7個引數,依次是:
1、DNS主伺服器名
2、管理員的E-mail,這裡是[email protected],由於@在資料庫檔案裡有特殊作用,所以這裡是用.代替的。
3、更新序號。表示資料庫檔案的新舊,一般是用時間來表示,這裡1703230011表示的是2017年3月23日進行了一次更新,當天更新編號0011.
4、更新頻率。 表示每5秒,slave伺服器就要向master伺服器索取更新資訊。
5、失敗重試時間,當某些原因導致Slave伺服器無法向master伺服器索取資訊時,會隔5秒就重試一次。
6、失效時間。如果一直重試失敗,當重試時間累積達到86400秒時,不再向主伺服器索取資訊。
7、快取時間。預設的TTL快取時間。