tcpdump是一個很常用的網絡包分析工具,可以用來顯示通過網絡傳輸到本系統的 TCP/IP 以及其他網絡的數據包。tcpdump使用 libpcap 庫來抓取網絡報,這個庫在幾乎在所有的 Linux/Unix 中都有。
tcpdump可以從網卡或之前創建的數據包文件中讀取內容,也可以將包寫入文件中以供后續使用。必須是 root 用戶或者使用 sudo 特權來運行tcpdump。
在本文中,我們將會通過一些實例來演示如何使用tcpdump命令,但首先讓我們來看看在各種 Linux 操作系統中是如何安裝tcpdump的。
推薦閱讀:使用 iftop 命令監控網絡帶寬
安裝
tcpdump默認在幾乎所有的 Linux 發行版中都可用,但若你的 Linux 上沒有的話,使用下面方法進行安裝。
CentOS/RHEL
使用下面命令在 CentOS 和 RHEL 上安裝tcpdump,
$sudo yum install tcpdump*
Fedora
使用下面命令在 Fedora 上安裝tcpdump:
$dnf install tcpdump
Ubuntu/Debian/Linux Mint
在 Ubuntu/Debain/Linux Mint 上使用下面命令安裝tcpdump:
$apt-get install tcpdump
安裝好tcpdump后,現在來看一些例子。
案例演示
從所有網卡中捕獲數據包
運行下面命令來從所有網卡中捕獲數據包:
$tcpdump -iany
從指定網卡中捕獲數據包
要從指定網卡中捕獲數據包,運行:
$tcpdump-ieth0
將捕獲的包寫入文件
使用-w選項將所有捕獲的包寫入文件:
$tcpdump -ieth1 -wpackets_file
讀取之前產生的 tcpdump 文件
使用下面命令從之前創建的 tcpdump 文件中讀取內容:
$tcpdump-rpackets_file
獲取更多的包信息,并且以可讀的形式顯示時間戳
要獲取更多的包信息同時以可讀的形式顯示時間戳,使用:
$tcpdump -ttttnnvvS
查看整個網絡的數據包
要獲取整個網絡的數據包,在終端執行下面命令:
$tcpdump net192.168.1.0/24
根據 IP 地址查看報文
要獲取指定 IP 的數據包,不管是作為源地址還是目的地址,使用下面命令:
$tcpdump host192.168.1.100
要指定 IP 地址是源地址或是目的地址則使用:
$tcpdump src192.168.1.100
$tcpdump dst192.168.1.100
查看某個協議或端口號的數據包
要查看某個協議的數據包,運行下面命令:
$tcpdump ssh
要捕獲某個端口或一個范圍的數據包,使用:
$tcpdump port22
$tcpdump portrange22-125
我們也可以與src和dst選項連用來捕獲指定源端口或指定目的端口的報文。
我們還可以使用“與” (and,&&)、“或” (or,||) 和“非”(not,!) 來將兩個條件組合起來。當我們需要基于某些條件來分析網絡報文是非常有用。
使用“與”
可以使用and或者符號&&來將兩個或多個條件組合起來。比如:
$tcpdump src192.168.1.100 && port22 -wssh_packets
使用“或”
“或”會檢查是否匹配命令所列條件中的其中一條,像這樣:
$tcpdump src192.168.1.100ordst192.168.1.50 && port22 -wssh_packets
$tcpdump port443or80 -whttp_packets
使用“非”
當我們想表達不匹配某項條件時可以使用“非”,像這樣:
$tcpdump -ieth0 src port not22
這會捕獲 eth0 上除了 22 號端口的所有通訊。
我們的教程至此就結束了,在本教程中我們講解了如何安裝并使用tcpdump來捕獲網絡數據包。如有任何疑問或建議,歡迎留言。
-
Linux
+關注
關注
87文章
11373瀏覽量
211293
原文標題:通過實例學習 tcpdump 命令
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Wireshark抓包和Tcpdump抓包實例分析
Linux tcpdump命令示例 如何在Linux中安裝tcpdump

tcpdump命令介紹
使用tcpdump抓包后生成的pcap文件大小為0
網絡行抓包分析工具tcpdump安裝介紹

tcpdump如何實現抓內核態的包

詳解tcpdump命令的六個常用選項
Linux網絡分析tcpdump工作原理和應用

評論