雲計算運維---wireshark 工具使用抓包常見小技巧

Wireshark 工具使用常見小技巧

一、抓包

拿到一個網絡包時,我們總是希望它儘可能小。因爲操作一個大包相當費時,有時甚至會死機。如果讓初學者分析1GB以上的包,估計會被打擊得信心全無。所以抓包時應該儘量只抓必要的部分。有很多方法可以實現這一點。

1.只抓包頭。

一般能抓到的每個包(稱爲“幀”更準確,但是出於表達習慣,本書可能會經常用“包”代替“幀”和“分段”)的最大長度爲1514字節,啓用了JumboFrame(巨型幀)之後可達9000字節以上,而大多數時候我們只需要IP頭或者TCP頭就足夠分析了。在Wireshark上可以這樣抓到包頭:單擊菜單欄上的Capture>Options,然後在彈出的窗口上定義“Limiteachpacketto”的值。我一般設個偏大的數字:80字節,也就是說每個包只抓前80字節。這樣TCP層、網絡層和數據鏈路層的信息都可以包括在內。

mac平臺:


win 平臺也基本一致:

在win vm 上進行實驗,設置不同的報文大小,分別進行1min的抓包,可以看到抓取到的報文大小有明顯差別。

用tcpdump命令抓包時可以用“s”參數達到相同效果。比如以下命令只抓eth0上每個包的前80字節,並把結果存到/tmp/tcpdump.cap文件

[root@server_1/]#tcpdump  -i  eth0  -s  80  -w  /tmp/tcpdump.cap

2.只抓必要的包。

服務器上的網絡連接可能非常多,而我們只需要其中的一小部分。Wireshark的CaptureFilter可以在抓包時過濾掉不需要的包。

如果對更多filter表達式感興趣,請參考http://wiki.wireshark.org/CaptureFilters。用tcpdump命令抓包時,也可以用“host”參數達到相同效果。比如以下命令只抓與10.32.200.131通信的包,並把結果存到/tmp/tcpdump.cap文件中。

[root@server_1/]#tcpdump -i eth0  host  10.32.200.131  -w/tmp/tcpdump.cap

注意:設置CaptureFilter之前務必三思,以免把有用的包也過濾掉,尤其是容易被忽略的廣播包。當然有時候再怎麼考慮也會失算,比如我有一次把對方的IP地址設爲filter,結果一個包都沒抓到。最後只能去掉filter再抓,才發現是NAT(網絡地址轉換)設備把對方的IP地址改掉了。抓的包除了要小,最好還能爲每步操作打上標記。這樣的包一目瞭然,賞心悅目

抓包的技巧還有很多,比如可以寫一個腳本來循環抓包,等偵察到某事件時自動停止。

3.過濾

很多時候,解決問題的過程就是層層過濾,直至找到關鍵包。
3.1. 如果已知某個協議發生問題,可以用協議名稱過濾一下。比如tcp、arp等等。

3.2. IP地址加port號是最常用的過濾方式。除了手工輸入ip.addreq<IP地址>&&tcp.porteq<端口號>之類的過濾表達,Wireshark還提供了更快捷的方式:右鍵單擊感興趣的包,選擇FollowTCP/UDPStream(選擇TCP還是UDP要視傳輸層協議而定)就可以自動過濾。



3.3.用鼠標幫助過濾。我們有時因爲Wireshark而苦惱,並不是因爲它功能不夠,而是強大到難以駕馭。比如在過濾時,有成千上萬的條件可供選擇,但怎麼寫纔是合乎語法的?雖然http://www.wireshark.org/docs/dfref/提供了參考,但經常查找畢竟太費時費力了。Wireshark考慮到了這個需求,右鍵單擊Wireshark上感興趣的內容,然後選擇PrepareaFilter>Selected,就會在Filter框中自動生成過濾表達式。在有複雜需求的時候,還可以選擇And、Or等選項來生成一個組合的過濾表達式。假如右鍵單擊之後選擇的不是PrepareaFilter,而是ApplyasFilter>Selected,則該過濾表達式生成之後還會自動執行。




3.4.我們可以把過濾後得到的網絡包存在一個新的文件裏,因爲小文件更方便操作。單擊Wireshark的File>SaveAs,選中Displayed單選按鈕再保存,得到的新文件就是過濾後的部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章