tcpdump監聽數據
為了看清楚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
4. 對數據進行分析
這一次執行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應答報文。