0.2 DNS

Wireshark Lab: DNS

 

網域名稱系統(英文:Domain Name System,DNS)是網際網路的一項的服務,它作為可以將域名和IP位址相互對映的一個分布式資料庫,能夠使人更方便的存取網際網路。

 

正如同2.5節的教科書中所描述的,域名系統(DNS)主機名轉換為IP地址,在互聯網基礎設施實現了關鍵作用。在這個實驗中,我們將採取仔細看看客戶端的DNS。回想一下,在DNS客戶端的作用是相對比較簡單 - 客戶端發送一個查詢到其本地的DNS server,並接收返回的響應。有如課本圖2.21和2.22一樣,當架構式DNS伺服器使用遞迴或是迴圈方式通訊以解析客戶端的DNS查詢請求時,很多東西「都在暗中進行」,DNS客戶端是看不到的。然而,從DNS客戶端的角度來看,該協議是很簡單的 - 制定一個查詢到本地的DNS server,並從該server在接收到響應。

 

在開始這個實驗之前,你可能要檢查DNS閱讀的文本的第2.5節。特別是,您可能要檢討材料的本地DNS server,DNScaching,DNS記錄和信息,以及DNS記錄中的Type字段。

 

1.NSLOOKUP

在這個實驗中,我們將廣泛使用nslookup工具,它可以在大多數Linux / Unix和Microsoft平台上使用。要在Linux / Unix上使用 nslookup,你只需要輸入nslookup在命令提示字元上。它在Windows上執行,打開命令提示視窗,在命令提示字元上運行nslookup。它是最基本的操作,nslookup工具可以讓任何指定的DNS server 的DNS記錄在主機上運行的工具來查詢。查詢的 DNS server 可以是 root DNS server,一個 top-level-domain DNS server,authoritative DNS server,或  intermediate DNS server。為了完成這個任務,nslookup 將發送一個 DNS query 到指定的 DNS server ,接收到相同的 DNS server 的DNS答覆,並顯示結果。

 

上面的截圖顯示了三個獨立的nslookup命令(顯示在Windows命令提示字元裡)的結果。在這個例子中,客戶端主機位於布魯克林理工大學的校園中,默認的本地DNS server 是DNS-prime.poly.edu。NSLOOKUP執行時,如果沒有指定DNS server ,然後NSLOOKUP將查詢發送到默認的DNS server ,在這種情況下是dnsprime.poly.edu。

 

考慮的第一個命令:

 

NSLOOKUP www.mit.edu

 

說的白話一點,這個命令是在說:“請給我的IP地址的主機www.mit.edu”。如截圖所示,此命令的響應提供了兩條信息:

(1)名稱和IP地址的DNS服務器,它提供的答案;

(2)答案本身,這是主機名和IP地址

www.mit.edu

雖然響應從本地DNS server到理工大學 ,它是非常有可能的是,這個地方的DNS server 反覆接觸了幾個其他的DNS server 來獲取答案,如同第2.5節教科書中描述的。

 

 

現在考慮第二個命令:

 

nslookup –type=NS mit.edu

 

在這個例子中,我們提供了option “-type=NS”和domain “mit.edu”。這將導致nslookup來default 的本地DNS server發送一個查詢type-NS記錄。查詢在說:“請從mit.edu 給我的 authoritative  DNS的主機名 ”。 (當–type option 沒有被使用,則nslookup使用 default 情況下,這是A型記錄查詢)。答案在上面的截圖顯示,第一個表示的答案(這是default 的本地DNS server)提供的DNS server,隨著三個MIT域名服務器。所有這些服務器確實是一個 authoritative DNS server

麻省理工學院的校園內的主機。然而,NSLOOKUP也表示,答案是“non-authoritative”,這意味著,這個答案來自麻省理工學院的authoritative DNS server,而不是從一些server的cache 。最後,答案也包括在麻省理工學院的authoritative DNS server 的IP地址。 (即使 type-NS查詢所產生的NSLOOKUP並沒有明確要求當地的DNS server 的IP地址,返回這些“免費”和nslookup顯示結果。)

 

 

現在終於考慮到的第三個命令:

 

nslookup www.aiit.or.kr bitsy.mit.edu

 

在這個例子中,我們指出我們要發送到DNS server 的查詢

bitsy.mit.edu,而不是default 的DNS server (DNS-prime.poly.edu)。

因此,查詢回覆直接在querying host 及 bitsy.mit.edu 之間交互發生。

 

在這個例子中,DNS server bitsy.mit.edu提供的主機的IP地址

www.aiit.or.kr,這是一個Web server在高級研究所的信息技術(在韓國)。

 

現在,我們已經經歷了幾個說明性的例子,你也許不知道有關nslookup命令的一般語法。語法是:

 

nslookup –option1 –option2 host-to-find dns-server

NSLOOKUP 選項1 選項2 發現的主機 DNS服務器

 

在一般情況下,nslookup可以被與零個,一個,兩個或更多的選擇執行。正如我們所看到的

DNS server 在上述例子中,也是可以被選的,如果它沒有被提供,該查詢是

發送到default 值的本地 DNS server 。

現在,我們已經提供了一個概述的nslookup,現在是時候你試試看你自己。請執行下列操作(並且將執行的結果寫下):
 

1.利用nslookup找出亞洲網路伺服器的IP位址

 

 

2.利用nslookup找出歐洲大學授權的DNS伺服器

 

3.利用nslookup找出Yahoo!信箱的伺服器(請利用問題二的其中一個DNS伺服器來實做)

 

 

 

 

 

 

2. ipconfig

尤其在主機除錯網路議題的時候,是用ipconfig(Windows)和ifconfig(Linux/Unix)去尋找。在此,我們是用ipconfig去實作(ifconfig亦是如此)。ipconfig用來顯示當前的TCP / IP信息,包括您的地址、DNS服務器地址、改變型態等。

例如,如果你想要查詢所有訊息就在你的本機打ipconfig \all這個指令即可顯示出來。

 

若你要看到剛剛DNS所暫存的記錄,就在C:\>後面打ipconfig /displaydns

 

每個結果在每秒都會有存活時間(TTL),若你要清除剛剛所暫存的記錄,就打ipconfig /flushdns這個指令

 

刷新DNS暫存中清除所有項目,並重新載入主機文件中的條目。

 

3.用wireshark去實作DNS

  • 用ipconfig /flushdns去清空主機裡的DNS

 

  • 打開你的瀏覽器並清空瀏覽器的暫存

 

  • 打開你的wireshark並在過濾器欄位輸入“ip.addr == your_IP_address”,即可跟你在ipconfig所得到的結果(your_IP_address)一樣

 

  • 開啟wireshark獲取封包

請選Interface >> 再選網路介面卡(看哪張有再傳輸東西) >> START!

 

 

  • 結束獲取封包

 

 

回答以下問題:

 

 

4.DNS的查詢與回答訊息。它們是利用UDP還是TCP來傳送?

 

他們都是使用UDP來傳送。

 

 

 

 

5.DNS查詢訊息的目的port是多少?DNS回答訊息的來源port是多少?

 

查詢訊息的目的port為53。

回答訊息的來源port為53。

 

 

 

6.DNS查詢訊息傳送的IP位址是什麼?利用ipconfig來看你的本地 DNS伺服器的的IP位址。請問兩者的IP位址相同嗎?

他傳送的IP位址為8.8.8.8。從ipconfig的截圖中,可以看到是本機內設的DNS伺服器的IP位址。

 

 

 

 

7. 測試DNS查詢訊息。DNS查詢的”型態”是什麼?它的查詢訊息包含任何”答應”嗎?

 

型態為A,沒有答應。

 

 

 

8.測試DNS回答訊息。它有提供多少個"答應”?那些答應包含了哪些東西?

 

有兩個答應。

答應所包含的訊息有本機的名字(Name)、本機位置的型態(Type)、類型(class)、TTL(Time to live)、資料長度(Data length)、IP的位置(Addr)。

 

 

 

9. 從你主機送的SYN封包。是否目的IP位址的SYN封包對應於任何提供DNS回答訊息的IP位址?

第一個SYN封包送到173.194.72.94對應於DNS所回答訊息的第一個IP位置。

 

 

  • 開始獲取封包
  • 用nslookup測試www.mit.edu
  • 結束獲取封包

 

 

由上面這張截圖我們可以知道他有三個DNS詢問和接收到三個DNS答應,通常我們都會忽略前兩個詢問和答應,因為它們是特用於nslookup,而且不是利用標準連網應用正常產生的,因此,我們把焦點放在最後的詢問和答應訊息。

 

 

11. DNS查詢訊息的目的port是多少?DNS回答訊息的來源port是多少?

查詢訊息的目的port為53、回答訊息的來源port為53。

 

 

 

12. DNS查詢訊息傳送的IP位址是什麼?IP位址是否為你本機的DNS伺服器的IP位址?

他傳送到的IP位址為140.136.148.1。從ipconfig的截圖中,可以看到是本機內設的DNS伺服器的IP位址。

 

 

 

13. 測試DNS查詢訊息。DNS查詢的”型態”是什麼?它的查詢訊息包含任何”答應”嗎?

型態為A,沒有答應。

 

 

14. 測試DNS回答訊息。它有提共多少個”答應”?那些答應包含了哪些東西?

有一個答應。

答應所包含的訊息有本機的名字(Name)、本機位置的型態(Type)、類型(class)、TTL(Time to live)、資料長度(Data length)、IP的位置(Addr)。

 

 

15. 提供一個螢幕截圖。

利用nslookup –type=NS mit.edu重複以上問題
回答以下問題:

16. DNS查詢訊息傳送的IP位址是什麼?IP位址是否為你本機內設的DNS伺服
器的IP位址?

 

他傳送到的IP位址為8.8.8.8,是本機內設的DNS伺服器的IP位址。

 

 

 

 

17. 測試DNS查詢訊息。DNS查詢的”型態”是什麼?它的查詢訊息包含任何”答應”嗎?

 

NS是DNS查詢的型態,他不包含任何答應。

 

 

 

 

18. 測試DNS回答訊息。MIT伺服器回答訊息提供什麼?是否這些回答訊息也提供MIT伺服器的IP位址?

 

name server是STRAWB.mit.edu、BITSY.mit.edu、W20NS.mit.edu

 

 

 

19. 提供一個螢幕截圖。

利用nslookup www.aiit.or.kr bitsy.mit.edu重複以上問題
回答以下問題:

 

20. DNS查詢訊息傳送的IP位址是什麼?IP位址是否為你本機內設的DNS伺服器的IP位址?如果不是,那IP位址是對應於誰?

 

查詢發送的IP位址為18.72.0.3。

 

不是,他對應到bitsy.mit.edu的IP位址。

 

 

 

21. 測試DNS查詢訊息。DNS查詢的”型態”是什麼?它的查詢訊息包含任何”答應”嗎?

 

型態為A,沒有任何答應。

 

 

 

22. 測試DNS回答訊息。它有提共多少個”答應”?那些答應包含了哪些東西?

 

DNS回答訊息提供兩個答應。

 

答應所包含的訊息有本機的名字(Name)、本機位置的型態(Type)、類型(class)、TTL(Time to live)、資料長度(Data length)、IP的位置(Addr)。

 

 

 

23. 提供一個螢幕截圖。