1. 程式人生 > >【Dig工具】

【Dig工具】

轉載 網絡設置 bin 詳細 -- 不一定 net 並不是 內容

先說一下DNS的幾個基本概念:

DNS的資源記錄:

A記錄:即地址資源記錄,記錄一個主機的IP地址;

MX記錄:郵件服務器資源記錄,記錄一個域的郵件服務器的域名;

NS記錄:即名字服務器資源記錄,記錄一個域的權威域名服務器的域名;

CNAME記錄,即規範名稱(Canonical Name)資源記錄,記錄一個主機的標準名稱。

一. 根域

就是所謂的“.”,其實我們的網址www.baidu.com在配置當中應該是www.baidu.com.(最後有一點),一般我們在瀏覽器裏輸入時會省略後面的點,而這也已經成為了習慣。

根域服務器我們知道有13臺,但是這是錯誤的觀點。

根域服務器只是具有13個IP地址,但機器數量卻不是13臺,因為這些IP地址借助了任播的技術,所以我們可以在全球設立這些IP的鏡像站點,你訪問到的這個IP並不是唯一的那臺主機。

具體的鏡像分布可以參考維基百科。這些主機的內容都是一樣的

二. 域的劃分

根域下來就是頂級域或者叫一級域,

有兩種劃分方式,一種互聯網剛興起時的按照行業性質劃分的com.,net.等,一種是按國家劃分的如cn.,jp.,等。

具體多少你可以自己去查,我們這裏不關心。

每個域都會有域名服務器,也叫權威域名服務器。

Baidu.com就是一個頂級域名,而www.baidu.com卻不是頂級域名,他是在baidu.com 這個域裏的一叫做www的主機。

一級域之後還有二級域,三級域,只要我買了一個頂級域,並且我搭建了自己BIND服務器(或者其他軟件搭建的)註冊到互聯網中,那麽我就可以隨意在前面多加幾個域了(當然長度是有限制的)。

比如a.www.baidu.com,在這個網址中,www.baidu.com變成了一個二級域而不是一臺主機,主機名是a。

三. 域名服務器

能提供域名解析的服務器,上面的記錄類型可以是A(address)記錄,NS記錄(name server),MX(mail),CNAME等。

(詳解參見博客:域名解析中A記錄、CNAME、MX記錄、NS記錄的區別和聯系)

A記錄是什麽意思呢,就是記錄一個IP地址和一個主機名字,比如我這個域名服務器所在的域test.baidu.com,我們知道這是一個二級的域名,然後我在裏面有一條A記錄,記錄了主機為a的IP,查到了就返回給你了。

如果我現在要想baidu.com這個域名服務器查詢a.test.baidu.com,那麽這個頂級域名服務器就會發現你請求的這個網址在test.baidu.com這個域中,我這裏記錄了這個二級域的域名服務器test.baidu.com的NS的IP。我返回給你這個地址你再去查主機為a的主機把。

這些域內的域名服務器都稱為權威服務器,直接提供DNS查詢服務。(這些服務器可不會做遞歸哦)

四.解析過程

那麽我們的DNS是怎麽解析一個域名的呢?

1.現在我有一臺計算機,通過ISP接入了互聯網,那麽ISP就會給我分配一個DNS服務器,這個DNS服務器不是權威服務器,而是相當於一個代理的dns解析服務器,他會幫你叠代權威服務器返回的應答,然後把最終查到IP返回給你。

2.現在的我計算機要向這臺ISPDNS發起請求查詢www.baidu.com這個域名了,(經網友提醒:這裏其實準確來說不是ISPDNS,而應該是用戶自己電腦網絡設置裏的DNS,並不一定是ISPDNS。比如也有可能你手工設置了8.8.8.8)

3.ISPDNS拿到請求後,先檢查一下自己的緩存中有沒有這個地址,有的話就直接返回。這個時候拿到的ip地址,會被標記為非權威服務器的應答

4.如果緩存中沒有的話,ISPDNS會從配置文件裏面讀取13個根域名服務器的地址(這些地址是不變的,直接在BIND的配置文件中),

5.然後像其中一臺發起請求。

6.根服務器拿到這個請求後,知道他是com.這個頂級域名下的,所以就會返回com域中的NS記錄,一般來說是13臺主機名和IP。

7.然後ISPDNS向其中一臺再次發起請求,com域的服務器發現你這請求是baidu.com這個域的,我一查發現了這個域的NS,那我就返回給你,你再去查。

(目前百度有4臺baidu.com的頂級域名服務器)。

8.ISPDNS不厭其煩的再次向baidu.com這個域的權威服務器發起請求,baidu.com收到之後,查了下有www的這臺主機,就把這個IP返回給你了,

9.然後ISPDNS拿到了之後,將其返回給了客戶端,並且把這個保存在高速緩存中。

下面我們來用 nslookup 這個工具詳細來說一下解析步驟:

技術分享圖片

從上圖我們可以看到:

第一行Server是:DNS服務器的主機名--210.32.32.1

第二行Address是: 它的IP地址--210.32.32.1#53

下面的Name是:解析的URL-- www.jsjzx.com

Address是:解析出來的IP--112.121.162.168

但是也有像百度這樣的DNS比較復雜的解析:
技術分享圖片

你會發現百度有一個cname = www.a.shifen.com 的別名。

這是怎麽一個過程呢?

我們用dig工具來跟蹤一下把(Kali linux系統自帶有)

------------------------------------------------------------------------------------------------------------------------------------------------------

Dig工具會在本地計算機做叠代,然後記錄查詢的過程。

技術分享圖片
第一步是向我這臺機器的ISPDNS獲取到根域服務區的13個IP和主機名[b-j].root-servers.net.。
技術分享圖片
第二步是向其中的一臺根域服務器(Servername就是末行小括號裏面的)發送www.baidu.com的查詢請求,他返回了com.頂級域的服務器IP(未顯示)和名稱,
技術分享圖片

第三步,便向com.域的一臺服務器192.33.4.12請求,www.baidu.com,他返回了baidu.com域的服務器IP(未顯示)和名稱,百度有四臺頂級域的服務器

【此處可以用dig @192.33.4.12 www.baidu.com查看返回的百度頂級域名服務器IP地址】。

技術分享圖片
第四步呢,向百度的頂級域服務器(202.108.22.220)請求www.baidu.com,他發現這個www有個別名,而不是一臺主機,別名是www.a.shifen.com。
技術分享圖片 解釋:上面的每個圖的每一行都表示一條記錄,至於這條記錄是哪種類型,取決於第四個字段,CNAME表示別名,NS表示權威域名服務器的域名,A表示查詢域對應的IP。 例如:上圖第一條記錄是別名記錄,表示www.baidu.com的別名為www.a.shifen.com; 上圖第二條記錄是NS記錄,表示域a.shifen.com的權威域名服務器的域名為ns2.a.shifen.com。

------------------------------------------------------------------------------------------------------------------------------------------------------

總結:

①本機向local dns請求www.baidu.com

②local dns向根域請求www.baidu.com,根域返回com.域的服務器IP

③向com.域請求www.baidu.com,com.域返回baidu.com域的服務器IP

④向baidu.com請求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服務器IP

⑤向root域請求www.a.shifen.com

⑥向com.域請求www.a.shife.com

⑦向shifen.com請求

⑧向a.shifen.com域請求

⑨拿到www.a.shifen.com的IP

⑩localdns返回本機www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

命令使用:

dig +trace www.baidu.com

dig www.baidu.com

轉載

【Dig工具】