DNS 域名系統
域名系統 DNS(Domain Name System) 是互聯網使用的命名系統,用於把便於大家使用的機器名字轉換為 IP 地址。許多應用層軟件經常直接使用 DNS,但計算機的用戶只是間接而不是直接使用域名系統。 互聯網采用層次結構的命名樹作為主機的名字,並使用分布式的域名系統 DNS。DNS 被設計為一個聯機式數據庫系統,並采用客戶服務器方式,使大多數名字都在本地進行解析。名字到 IP 地址的解析是由若干個域名服務器程序完成的,域名服務器程序在專設的結點上運行,運行該程序的機器稱為域名服務器。
當一個應用進程需要把主機名解析為 IP 地址是,該用戶進程就調用解析程序,並成為 DNS 的一個客戶,把待解析的域名放在 DNS 請求報文中,以 UDP 用戶數據報的方式發給本地域名服務器。本地域名服務器查找域名后,把對應的 IP 地址放在回答報文中返回。若本地域名服務器不能回答該請求,則該本地域名服務器就暫時成為 DNS 中的另一個客戶,並向其他域名服務器發出查詢請求。
nslookup
初識 nslookup 工具
nslookup 工具允許主機查詢任何指定的 DNS 服務器的 DN S記錄。DNS 服務器可以是根 DNS 服務器,頂級域 DNS 服務器,權威 DNS 服務器或中間 DNS 服務器。要完成此任務,nslookup 將 DNS 查詢發送到指定的 DNS 服務器,然后接收 DNS 回復,並顯示結果。要在 Windows 中運行,請打開命令提示符並在命令行上運行 nslookup。
接下來我們來測試 3 個命令,首先我們想得到集美大學的官網:“ https://www.jmu.edu.cn/ ”的 IP 地址。
nslookup www.jmu.edu.cn
說這個命令的作用是獲取主機 www.jmu.edu.cn 的 IP 地址。此命令的響應提供兩條信息:
- 提供響應的 DNS 服務器的名稱和 IP 地址;
- 響應本身,即 www.jmu.edu.cn 的主機名和 IP 地址。本地 DNS 服務器很可能會迭代地聯系其他幾個 DNS 服務器來獲得結果。
現在我們要獲取發送 jmu.edu.cn 的 DNS 主機名:
nslookup -type=NS mit.edu
通過添加選項 "-type=NS "和域名 "jmu.edu.cn"。命令的含義為 nslookup 將 NS 記錄發送到默認的本地 DNS 服務器,轉換為“人話”的含義為“獲取發送 jmu.edu.cn 的權威 DNS 的主機名”,當不使用 -type 選項時,nslookup 將使用默認值,即查詢 A 類記錄。
來看看回顯的數據,首先是提供響應的 DNS 服務器,即默認本地 DNS 服務器。緊隨其后是以及 7 個 MIT 域名服務器,這些服務器中的每一個都是集美大學校園主機的權威 DNS 服務器。不過 nslookup 顯示這些是非權威應答,表示着這個響應來自某個服務器的緩存,而不是來自權威 MIT DNS 服務器。最后顯示了集美大學權威 DNS 服務器的 IP 地址。
接下來我們想試試不通過默認服務器,而是通過 DNS 服務器 bitsy.mit.edu 看看能不能成功解析集美大學官網。
nslookup www.jmu.edu.cu bitsy.mit.edu
看來不行哦,這個服務器上沒有集美大學官網的信息。下面看一個成功的例子:
nslookup 命令語法
nslookup [-option1] [-option2] host-to-find dns-server
nslookup 可以不添加選項,或者添加一兩個甚至更多選項。
實驗操作
- 運行 nslookup 以獲取一個亞洲的 Web 服務器的 IP 地址。該服務器的IP地址是什么?
剛剛做過啦!
2. 運行 nslookup 來確定一個歐洲的大學的權威 DNS 服務器。
我選擇的是劍橋大學 https://www.cam.ac.uk/
3.運行 nslookup,使用上一個操作中一個已獲得的 DNS 服務器,來查詢 Yahoo! 郵箱的郵件服務器。它的 IP 地址是什么?
雅虎郵箱的域名為 “mail.yahoo.com”,我選擇服務器 “auth0.dns.cam.ac.uk” 來找。
查找成功。這里也可以用遞歸來找:
ipconfig
IPConfig 實用程序和它的等價圖形用戶界面—— Windows 95/98 中的 WinIPCfg 可用於顯示當前的 TCP/IP 配置的設置值。這些信息一般用來檢驗人工配置的 TCP/IP 設置是否正確。但是,如果你的計算機和所在的局域網使用了動態主機配置協議(Dynamic Host Configuration Protocol,DHCP——Windows NT 下的一種把較少的 IP 地址分配給較多主機使用的協議,類似於撥號上網的動態 IP 分配),這個程序所顯示的信息也許更加實用。——百度百科
ipconfig 是主機中最實用的程序之一,調試網絡問題時作用很大。ipconfig 可用於顯示您當前的TCP/IP信息,包括您的地址,DNS服務器地址,適配器類型等。我們來看幾個指令:
ipconfig /all
主機可以緩存最近獲得的 DNS 記錄,使用 ipconfig 可以查看這些緩存記錄:
ipconfig /displaydns
顯示了一堆數據。每個條目顯示剩余的生存時間(TTL)(秒)。
當我想要清除這些緩存,就需要使用這個指令:
ipconfig /flushdns
該指令將清除所有條目並從 hosts 文件重新加載條目。
使用 Wireshark 追蹤 DNS
實驗操作
熟悉 nslookup 和 ipconfig 之后,首先讓捕獲一些由常規上網活動生成的 DNS 數據包:
- 使用ipconfig清空主機中的DNS緩存。
由於我不想搞沒這些數據,所以跳過。
2.打開瀏覽器並清空瀏覽器緩存。
- 打開 Wireshark,然后在過濾器中輸入:
ip.addr==your_IP_address
先使用 ipconfig 獲取 IP 地址。此過濾器將刪除既從你主機不發出也不發往你主機的所有數據包。
4. 在 Wireshark 中啟動數據包捕獲。
emm……看樣子干擾挺大!
5. 使用瀏覽器訪問網頁: http://www.ietf.org
6. 停止數據包捕獲。
問題解答
由於干擾很大,我使用現成的包來分析。
4. 找到DNS查詢和響應消息。它們是否通過UDP或TCP發送?
由此可見是 UDP。
5. DNS是查詢消息的目標端口是什么? DNS響應消息的源端口是什么?
由此可見都是 53 端口。
6. DNS 查詢消息發送到哪個 IP 地址?使用 ipconfig 來確定本地 DNS 服務器的 IP 地址。這兩個 IP 地址是否相同?
由於這不是我抓的包,此處無法驗證。
7. 檢查 DNS 查詢消息。DNS 查詢是什么 "Type" 的?查詢消息是否包含任何 "answers"?
Type 為 “A”,表示查詢 IP 地址,沒有任何 "answers"。
8. 檢查DNS響應消息。提供了多少個"answers"?這些答案具體包含什么?
提供了 2 個 "answers",是該域名的 2 個 IPV4 地址。
9. 考慮從您主機發送的后續 TCP SYN 數據包。 SYN 數據包的目的 IP 地址是否與 DNS 響應消息中提供的任何 IP 地址相對應?
是相對應的。
10. 這個網頁包含一些圖片。在獲取每個圖片前,您的主機是否都發出了新的 DNS 查詢?
並沒有,因為本機 DNS 已經被緩存了,因此不需要發起新的 DNS 查詢。
nslookup 的 DNS 查詢①
實驗步驟
現在抓取 nslookup 產生的包。
- 啟動數據包捕獲。
- 使用nslookup查詢 www.mit.edu
3. 停止數據包捕獲。
我們只分析其中一個包。
問題解答
- DNS查詢消息的目標端口是什么? DNS響應消息的源端口是什么?
目標端口和源端口都是 53。
2. DNS 查詢消息的目標 IP 地址是什么?這是你的默認本地 DNS 服務器的 IP 地址嗎?
192.168.67.1,是我的默認本地 DNS 服務器的 IP 地址。
3. 檢查 DNS 查詢消息。DNS 查詢是什么 "Type" 的?查詢消息是否包含任何 "answers"?
Type 為 “A”,表示查詢 IP 地址,沒有任何 "answers"。
4. 檢查 DNS 響應消息。提供了多少個 "answers"?這些答案包含什么?
提供了 1 個 "answers",是該域名的 IPV4 地址。
nslookup 的 DNS 查詢②
實驗步驟
重復上一個實驗,但換成以下命令:
nslookup -type=NS mit.edu
問題解答
- DNS 查詢消息發送到的 IP 地址是什么?這是您的默認本地 DNS 服務器的 IP 地址嗎?
192.168.67.1,是我的默認本地 DNS 服務器的 IP 地址。
2. 檢查DNS查詢消息。DNS 查詢是什么 "Type" 的?查詢消息是否包含任何 "answers"?
Type 為 “NS”,表示查詢權威 DNS 服務器,沒有任何 "answers"。
3. 檢查 DNS 響應消息。響應消息提供的 MIT 域名服務器是什么?此響應消息還提供了 MIT 域名服務器的 IP 地址嗎?
響應消息沒提供 MIT 的域名的 IP 地址。
nslookup 的 DNS 查詢③
實驗步驟
重復上一個實驗,但換成以下命令:
nslookup www.aiit.or.kr bitsy.mit.edu
問題解答
- DNS 查詢消息發送到的 IP 地址是什么?這是您的默認本地 DNS 服務器的 IP 地址嗎?
18.0.72.3,不是我的默認本地 DNS 服務器的 IP 地址。
2. 檢查DNS查詢消息。DNS 查詢是什么 "Type" 的?查詢消息是否包含任何 "answers"?
Type 為 “A”,表示查詢 IP 地址,沒有任何 "answers"。
3. 檢查 DNS 響應消息。提供了多少個 "answers"?這些答案包含什么?
提供了 1 個 "answers",是該域名的 IPV4 地址。
參考資料
《計算機網絡 自頂向下方法》 [美] James F.Kurose,Keith W.Ross 著,陳鳴 譯,機械工業出版社
域名系統(服務)協議
ipconfig