使用tcpdump觀察DNS通訊過程

2021-07-09 11:11:21 字數 1822 閱讀 7730

我們通常使用機器的網域名稱來訪問這台機器,而不直接使用其ip位址,比如訪問網際網路上的各種**。那麼如何將機器的網域名稱轉換成ip位址呢?這就需要使用網域名稱查詢服務。網域名稱查詢服務有很多種實現方式,比如nis(network information service,網路資訊服務)、dns和本地靜態檔案等。主要討論dns。

dns是一套分布式的網域名稱服務系統。每個dns伺服器上都存放著大量的機器名和ip位址的對映,並且是動態更新的。眾多網路客戶端程式都使用dns協議來向dns伺服器查詢目標主機的ip位址。

linux使用/etc/resolv.conf檔案來存放dns伺服器的ip位址。

host命令的輸出告訴我們,機器名www.baidu.com是www.a.shifen.com.的別名,並且該機器名對應兩個ip位址。host命令使用dns協議和dns伺服器通訊,其-t選項告訴dns協議使用哪種查詢型別。我們這裡使用的是a型別,即通過機器的網域名稱獲得其ip位址(但實際上返回的資源記錄中還包含機器的別名)。

為了看清楚dns通訊的過程,下面我們將從主機1:192.168.0.141上執行host命令以查詢主機www.jd.com對應的ip位址,並使用tcpdump抓取這一過程中lan上傳輸的乙太網幀。

具體的操作過程如下:

# tcpdump-i eth0-nt-s 500 port domain

然後在另外乙個終端中輸入下面的命令:

#host-t a www.jd.com

下圖是host-t a www.jd.com輸出的資料:

下圖是tcpdump監聽到的資料:

其中ip位址192.168.0.1是預設閘道器的位址。

root@linux_ever:~# route

核心 ip 路由表

目標            閘道器            子網掩碼        標誌  躍點   引用  使用 介面

default         192.168.0.1     0.0.0.0         ug    0      0        0 eth0

192.168.0.0     *               255.255.255.0   u     1      0        0 eth0

這一次執行tcpdump抓包時,我們使用「port domain」來過濾資料報,表示只抓取使用domain(網域名稱)服務的資料報,即dns查詢和應答報文。tcpdump的輸出如下:

ip 192.168.0.141.53511 > 192.168.0.1.53: 65362+ a? www.jd.com. (28)

ip 192.168.0.1.53 > 192.168.0.141.53511: 65362 2/0/0 cname www.jdcdn.com., a 14.152.71.1 (68)

這兩個資料報開始的「ip」指出,它們後面的內容描述的是ip資料報。tcpdump以「ip位址.埠號」的形式來描述通訊的某一端;以「>」表示資料傳輸的方向,「>」前面是源端,後面是目的端。可見,第乙個資料報是測試主機1(ip位址是192.168.0.141)向其首選dns伺服器(ip位址是192.168.0.1.53)傳送的dns查詢報文(目標埠53是dns服務使用的埠),第二個資料報是伺服器反饋的dns應答報文。

DNS抓包及檢視(tcpdump)

1.抓包,抓包時過濾出dns服務的埠53即可。2.根據抓到的包檢視dns伺服器 jva82ugigc9hva8是一台連線在路由器下的電腦,192.168.100.1是電腦的閘道器及dns伺服器,192.168.225.37是路由器的wan介面位址,路由器的wan介面已配置公用dns伺服器8.8.8....

tcpdump使用詳解

tcpdump採用命令列方式,它的命令格式為 tcpdump adeflnnopqstvx c 數量 f 檔名 i 網路介面 r 檔名 s snaplen t 型別 w 檔名 表示式 1.tcpdump的選項介紹 a 將網路位址和廣播位址轉變成名字 d 將匹配資訊包的 以人們能夠理解的彙編格式給出 ...

tcpdump 日常使用

使用 i引數指定tcpdump監聽的網路介面,這在計算機具有多個網路介面時非常有用,使用 c引數指定要監聽的資料報數量,使用 w引數指定將監聽到的資料報寫入檔案中儲存 a想要截獲所有210.27.48.1 的主機收到的和發出的所有的資料報 tcpdump host 210.27.48.1 b想要截獲...