在公司涉及到網絡問題的故障,比如遠程命令未實現,與前端設備交互失敗,網絡數據異常等問題,很可能是網絡方面的故障,而在pc機上抓包,採用wireshark 即可,但在linux設備中,tcpdump 這個強大的抓包工具就會顯得重要了。
tcpdump工具很強大,通過命令行指定一系列參數可以實現網絡包抓取功能。
tcpdump 工具有好多關鍵字:
host :主機 ef:192.168.11.120
net:網絡地址 eg: 202.103.55.67
lo:迴環地址,linux 迴環地址一般爲 127.0.0.1
src :指明ip包中源地址
dst :指明ip包中目的地址
arp: 指明抓取arp協議包
tcp :指明抓取tcp協議包
udp:指明抓取udp協議包
tcpdump 工具有好多參數,下面僅僅介紹我目前常用的,其他的大家可以網絡搜索一下:
-c 在收到指定的數量的分組後,tcpdump就會停止。
-f 將外部的Internet地址以數字的形式打印出來。
-i 指定監聽的網絡接口。
-b 在數據-鏈路層上選擇協議,包括ip、arp、rarp、ipx都是這一層的。
-n 不把網絡地址轉換成名字。
-t 在輸出的每一行不打印時間戳。
-r 從指定的文件中讀取包(這些包一般通過-w選項產生)。
-vv 輸出詳細的報文信息。
-w 直接將分組寫入文件中,而不是不分析並打印出來。
下面舉例說明:
- 查看網卡1上所有流過的數據包
tcpdump -vv - 查看固定主機的網絡包
tcpdump host 192.168.11.120 - 查看 固定主機的某個網卡的所有數據包
tcpdump -i eth2 host 192.168.11.120 - 查看 固定主機的某個網卡的某個端口數據包
tcpdump -i eth2 host 192.168.11.120 and port 80 - 過濾數據源IP地址
tcpdump -i eth1 src net 192.168 - 過濾數據目的端口號
tcpdump -i eth1 dst port 80 - 過濾協議
tcpdump -i eth1 tcp - 保存到文件
tcpdump -w 123.pcap (文件爲pcap格式,在wireshark可以查看) - 抓取回環地址的數據包
tcpdump -i lo - 抓取所有網卡的數據包
tcpdump -i any
個人覺得,簡單使用抓包工具,抓取一定條件的數據包,保存後通過wireshark 工具查看,可實現精準定位分析,tcpdump 和 wireshark 相結合,可使得網絡包分析更加容易。