?
前言
Tcpdump是用于分析網(wǎng)絡(luò)和查找相關(guān)網(wǎng)絡(luò)問(wèn)題的出色工具。它會(huì)在數(shù)據(jù)包經(jīng)過(guò)時(shí)捕獲數(shù)據(jù)包,并向您顯示網(wǎng)絡(luò)上正在發(fā)生的事情和傳入情況。該命令的輸出顯示在 STDOUT 上,也可以存儲(chǔ)在文件中。
感謝開(kāi)發(fā)人員,他們將Tcpdump保留為開(kāi)源項(xiàng)目。它可以在Unix和Linux系統(tǒng)上免費(fèi)獲得。視窗有一個(gè)“微海外杠TCPDUMP用于視窗”變體,并帶有相關(guān)的價(jià)格標(biāo)簽。
tcpdump有一長(zhǎng)串可用的選項(xiàng)。在本文中,我將重點(diǎn)介紹經(jīng)常使用的核心選項(xiàng)。
檢查可用接口
要檢查要捕獲的所有可用接口,請(qǐng)使用-D標(biāo)志作為:
?
sudo?tcpdump?-D
?
這將列出系統(tǒng)上的所有接口,包括無(wú)線(xiàn)和有線(xiàn)接口等。該標(biāo)志也可以獲得相同的功能:--list-interfaces
?
sudo?tcpdump?--list-interfaces
在這里插入圖片描述
?
捕獲特定接口的數(shù)據(jù)包
在不使用任何選項(xiàng)的情況下,Tcpdump 將掃描所有接口。該標(biāo)志捕獲來(lái)自特定接口的流量:-i
?
tcpdump?-i?
?
將 替換為要掃描的接口的名稱(chēng)。例如,在 接口 的情況下,此命令將作為:target-interfaceeth0
?
sudo?tcpdump?-i?eth0
?
注意:從現(xiàn)在開(kāi)始,我將使用 or 作為目標(biāo)接口。因此,無(wú)論您在何處看到 -i 標(biāo)志,它都將伴隨界面或 eth0 eth1 eth0 eth1
預(yù)設(shè)捕獲計(jì)數(shù)
該標(biāo)志可用于預(yù)設(shè)要捕獲的數(shù)據(jù)包數(shù)-c
例如,我們將此值設(shè)置為 4 以捕獲四個(gè)數(shù)據(jù)包。在本例中,該命令將為:
?
sudo?tcpdump?-c?4?-i?eth0?
?
如果未指定計(jì)數(shù),則將使用組合鍵或 手動(dòng)中斷捕獲操作。ctrl+cctrl+z
在下面的文章中,我將根據(jù)需要將標(biāo)志與其他標(biāo)志一起添加。這將有助于我們清晰,輕松地理解命令的輸出。-c
獲取詳細(xì)輸出
要獲取命令的詳細(xì)輸出,可以使用標(biāo)志:tcpdump-v
?
sudo?tcpdump?-c?6?-v?-i?eth0?
?
您可以使用更多標(biāo)志 as 或 進(jìn)一步提高詳細(xì)程度。這將在終端上產(chǎn)生更詳細(xì)的輸出:-v -vv -vvv
?
sudo?tcpdump?-vv?-i?eth0?
?
以 ASCII 格式打印捕獲的數(shù)據(jù)
有時(shí),我們可能要求 Tcp 轉(zhuǎn)儲(chǔ)輸出采用十六進(jìn)制或 ASCII 格式。我們可以使用 ASCII 格式以及 ASCII 和十六進(jìn)制格式的選項(xiàng)來(lái)解決這個(gè)問(wèn)題:-A- XX
?
sudo?tcpdump?-XX?-i?eth0
在這里插入圖片描述
?
捕獲從特定源 IP 發(fā)送的數(shù)據(jù)包
如果要檢查來(lái)自特定源 IP 地址的流量,請(qǐng)使用以下命令:
?
sudo?tcpdump?-i?eth0?src?
?
讓我們將源 IP 作為并查看流量的詳細(xì)信息:192.168.56.11
?
sudo?tcpdump?-i?eth1?-c?5?src?192.168.56.11
?
此處的計(jì)數(shù) 5 將僅捕獲前五個(gè)數(shù)據(jù)包。
捕獲發(fā)送到特定目標(biāo) IP 的數(shù)據(jù)包
如果要檢查發(fā)送到特定目標(biāo) IP 地址的流量,請(qǐng)使用以下命令:
?
sudo?tcpdump?-i?eth0?dst?
?
讓我們將目標(biāo) IP 作為并查看流量的詳細(xì)信息:192.168.56.11
?
sudo?tcpdump?-i?eth1?-c?5?dst?192.168.56.11
在這里插入圖片描述
?
將過(guò)濾選項(xiàng)與 Tcp 轉(zhuǎn)儲(chǔ)結(jié)合使用
這是縮小捕獲數(shù)據(jù)范圍以進(jìn)行檢查的好方法。這將消除不必要的流量并簡(jiǎn)化您的工作。為此,您可以根據(jù)主機(jī)、端口、協(xié)議和其他條件篩選流量。
讓我們看看其中的一些:
端口號(hào)
如果要根據(jù)端口號(hào)過(guò)濾流量,例如端口 22,則按如下方式執(zhí)行命令:tcpdump
?
sudo?tcpdump?-i?eth0?port?22
?
此命令將捕獲 TCP 和 UDP 流量。
協(xié)議
與端口指令類(lèi)似,該指令根據(jù)特定流量過(guò)濾數(shù)據(jù)包捕獲。在這里,您可以使用協(xié)議名稱(chēng)或協(xié)議編號(hào)作為參數(shù)值:proto
?
sudo?tcpdump?-i?eth0?proto?tcp
sudo?tcpdump?-i?eth0?proto?6
?
令您驚訝的是,上面的兩個(gè)命令是等效的。這是因?yàn)?是 TCP 的協(xié)議編號(hào)。6
主機(jī)過(guò)濾器
host 參數(shù)只是使用其 IP 過(guò)濾來(lái)自特定主機(jī)的流量:
?
sudo?tcpdump?-i?eth0?host?192.168.56.10
?
這將捕獲所有流量并從此主機(jī)流出。有趣的是,您可以將多個(gè)過(guò)濾器應(yīng)用于主機(jī),以針對(duì)特定類(lèi)型的數(shù)據(jù)包流量。
例如:
?
sudo?tcpdump?-i?eth1?-c?50?“(host?192.168.56.11)?and?(port?443?or?port?80)"
?
在這里,我將不同的過(guò)濾規(guī)則合并到一個(gè)規(guī)則中。您可以看到此規(guī)則是過(guò)濾和流量。這是因?yàn)樵撘?guī)則包含端口 80 和 443(公共網(wǎng)絡(luò)端口)的篩選器。http https
保存捕獲的數(shù)據(jù)
如果要將捕獲的數(shù)據(jù)存儲(chǔ)在文件中,可以這樣操作。
?
sudo?tcpdump?-i?eth0?-c?10?-w?my_capture.pcap
?
將數(shù)據(jù)包計(jì)數(shù)保持在較小的值;否則,您可能需要手動(dòng)停止該過(guò)程。
讀取捕獲的數(shù)據(jù)
您可以使用存儲(chǔ)在文件中的數(shù)據(jù)與Wireshark或任何其他圖形網(wǎng)絡(luò)協(xié)議分析器進(jìn)行分析。.pcap
您可以使用 tcp 轉(zhuǎn)儲(chǔ)本身來(lái)讀取它。
?
tcpdump?-r?my_capture.pcap
?
上面的屏幕截圖顯示了上述文件的數(shù)據(jù)。my_capture.pcap
結(jié)語(yǔ)
希望您對(duì)如何使用不同的方式使用tcpdump命令有一個(gè)很好的想法。當(dāng)您從遠(yuǎn)程無(wú)外設(shè)計(jì)算機(jī)捕獲數(shù)據(jù)包時(shí),這是最佳選擇。
如果您想要一種更直觀的方式來(lái)理解數(shù)據(jù)包捕獲,請(qǐng)嘗試使用Wireshark。
審核編輯:湯梓紅
評(píng)論
查看更多