在 Linux 命令行中使用 tcpdump 命令分析網(wǎng)絡(luò)數(shù)據(jù)
tcpdump 是分析網(wǎng)絡(luò)和排查網(wǎng)絡(luò)問題的一個很好用的工具,它通過抓取數(shù)據(jù)包,顯示網(wǎng)絡(luò)的實時情況,并將結(jié)果輸出到標準輸出(STDOUT)上,也可以存儲在文件中。關(guān)于它的具體使用,它有很多可用的選項,本文我們介紹關(guān)于此命令常用的幾個核心選項。
1、檢查可用網(wǎng)口(interfaces)
查詢所有可用的網(wǎng)口,使用 -D 選項:
上述命令將會列出系統(tǒng)中所有可用的網(wǎng)絡(luò)接口,包括有線和無線接口,使用 --list-interfaces 選項也可以達到相同的目的:
運行結(jié)果如下圖所示:
2、抓取某個網(wǎng)口的數(shù)據(jù)包
不適用任選項的情況下,tcpdump 將會掃描所有網(wǎng)口,使用 -i 選項可抓取某個特定網(wǎng)口的數(shù)據(jù):
在上述命令中 表示網(wǎng)口名稱。假如我們要抓取網(wǎng)口 eth0 的數(shù)據(jù),可使用如下命令:
注:為了方便演示,我們后文中將會使用 eth0 或者 eth1 作為目標網(wǎng)口。
3、預設(shè)抓包數(shù)量
使用 -c 選項可以預設(shè)抓包的數(shù)量。比如,下面命令將會抓取 4 個數(shù)據(jù)包:
如果沒有預設(shè)抓包數(shù)量,需要使用 ctrl+c 或者 ctrl+z 手動停止抓包操作。
4、獲取詳細輸出
使用 -v 選項可以獲取詳細輸出,如下命令:
詳情的輸出,有個詳細程度的區(qū)別,換句話說,可以使用更多的 -v 標志,比如 -vv 或者 -vvv,這將會在終端上產(chǎn)生更加詳細的輸出:
5、以 ASCII 格式打印抓取到的數(shù)據(jù)
有時候我們希望數(shù)據(jù)以 HEX 或者 ASCII 格式展現(xiàn),這里可以使用 -A 選項來表示以 ASCII 格式,-XX 選項表示以 ASCII 和 HEX 格式展示數(shù)據(jù):
6、抓取從某個源 IP 發(fā)送的數(shù)據(jù)包
要抓取來自某個特定源 IP 的數(shù)據(jù)包,可使用如下命令:
比如,我們查看來自 IP 為 192.168.56.11 的數(shù)據(jù):
上面例子中的計數(shù) 5 為只抓取5個數(shù)據(jù)包。
7、抓取發(fā)送到特定目標 IP 的數(shù)據(jù)包
如果要檢查發(fā)送到特定目標 IP 地址的流量,可使用以下命令:
比如我們將目標 IP 設(shè)為 192.168.56.11,查看流量的詳細信息:
8、在 tcpdump 中使用過濾選項
tcpdump 命令提供了一些過濾選項,以縮小抓包數(shù)據(jù)的范圍,這樣可以過濾掉一些不必要的數(shù)據(jù),以便于分析數(shù)據(jù)。過濾方式包括主機地址、端口、協(xié)議或者其他過濾條件。下面我們來舉例說明。
端口
號 如果要執(zhí)行端口號(比如端口22)過濾,可參照如下方式執(zhí)行 tcpdump 命令:
此命令將抓取 TCP 和 UDP 數(shù)據(jù)流。
協(xié)議
與端口號類似,proto 指令根據(jù)特定流量過濾數(shù)據(jù)包捕獲。在這里,你可以使用協(xié)議名稱或協(xié)議編號作為參數(shù)值:
或者:
上面兩個命令是相同的,因為 6 是 TCP 的協(xié)議號。
主機過濾
host 參數(shù)使用特定主機的IP,篩選來自該主機的數(shù)據(jù)流:
這將捕獲來自此主機的所有流量。此外,還可以對主機應(yīng)用多個過濾條件,以針對特定類型的數(shù)據(jù)包流量。 比如:
上面例子中,我將多個過濾條件合并到一個規(guī)則中,過濾 http 和 https 數(shù)據(jù)流,這兩個協(xié)議的端口分分別為 80 和 443。我們之前分享過一篇常見網(wǎng)絡(luò)端口的文字,感興趣的朋友可以參考:Linux中常見的網(wǎng)絡(luò)端口號
9、保存抓取到的數(shù)據(jù)
如果要保存抓取到的數(shù)據(jù),可參考如下命令:
這里需要注意的是,最好將要抓取的數(shù)據(jù)包預設(shè)一個最小的值,否則需要手動停止該進程。
10,讀取抓取到的數(shù)據(jù)
我們可以使用 Wireshark(??https://www.wireshark.org/)或者其他圖形網(wǎng)絡(luò)分析工具分析抓取到的數(shù)據(jù)(上個例子中保存到.pcap文件中的數(shù)據(jù))。此外,也可以使用?? tcpduimp 本身來讀取:
上文我們介紹了 tcpdump 命令的一些常見用法,希望可以幫助大家對該命令有一個大致的了解。當你進行數(shù)據(jù)包抓取的時候,這是一個很好用的工具。如果你想用更直觀的方式來分析數(shù)據(jù)包,可以試試 Wireshark。
以上就是我們本次分享全部內(nèi)容,歡迎討論。