目錄
2、命令選項
#3、tcpdump 表達式
4、tcpdump 捕获方式
5、常用的过滤条件
二、wireshark
1、什么是 wireshark
2、安装 wireshark
3、tshark 命令
4、圖形化介面
三、Tcpdump 和wireshark 合用
總結
首頁 運維 linux運維 Linux 網路抓包分析工具

Linux 網路抓包分析工具

Aug 02, 2023 pm 03:23 PM
linux 抓包


Linux 網路抓包分析工具

一、tcpdump

1、作用

tcpdump 指令可列出經過指定網路介面的封包檔案頭,可以將網路中傳送的封包的「頭」 完全截獲下來提供分析。它支援針對網路層、協定、主機、網路或連接埠的過濾,並提供 and、or、not 等邏輯語句來幫助你摘取有用資訊。

######由於它需要將網路介面設定為混雜模式,一般使用者無法正常執行,但具備 root 權限的使用者可以直接執行它來取得網路上的資訊###

其他抓包工具

  • wireshark具有圖形化和命令列兩種版本,可以對tcpdump 抓的包進行分析,其主要功能就是分析資料包。

  • ngrep它將抓到的套件資料以文字形式直接顯示出來,適用於套件資料包含文字的[抓包]分析(如HTTP、MySQL )

2、命令選項

tcpdump [選項] [協定] [資料流方向] [範圍]

  • -a 將網路位址和廣播位址轉換成名字

  • -A 以ASCII 格式列印所有分組,並將鏈路層的頭最小化

  • -b 資料鏈路層上選擇協議,包括ip/arp/rarp/ipx 都在這一層

  • -c 指定收取資料包的次數,即在收到指定數量的資料包後退出tcpdump

  • -d 將匹配資訊包的程式碼以人們能夠理解的彙編格式輸出

  • -dd  將符合訊息包的程式碼以c 語言程式段的格式輸出

  • -ddd 將符合訊息包的程式碼以十進位的形式輸出

  • -D 列印系統中所有可以監控的網路介面

  • -e 在輸出行列印出資料鏈結層的頭部訊息

  • -f 將外部的Internet 位址以數字的形式列印出來,即不顯示主機名稱

  • -F 從指定的檔案中讀取表達式,忽略其他的表達式

  • -i 指定監聽網路介面

  • -l 使標準輸出變成緩衝形式,可以資料匯出到檔案

  • -L 列出網路介面已知的資料連結

  • -n 不把網路位址轉換為名字

  • -N 不輸出主機名稱中的網域部分,例如www.baidu.com 只輸出www

  • -nn 不進行連接埠名稱的轉換

  • -P 不會將網路介面設定為混雜模式

  • -q 快速輸出,即只輸出較少的協定資訊

  • -r 從指定的檔案讀取數據,一般是- w 保存的檔案

  • -w 將捕獲到的資訊儲存到檔案中,且不分析並列印在螢幕

  • -s 從每個群組中讀取在開始的snaplen 個位元組,而不是預設的68 個位元組

  • -S 將tcp 的序號以絕對值形式輸出,而不是相對值

  • -T 將監聽到的套件直接解析為指定的類型的報文,常見的類型有rpc(遠端程序呼叫)和snmp(簡單網路管理協定)

  • -t 在輸出的每一行不列印時間戳

  • -tt 在每一行輸出非格式化的時間戳記

  • #-ttt 輸出本行和前面以後之間的時間差

  • -tttt 在每一行中輸出data 處理的預設格式的時間戳

  • #-u 輸出未解碼的NFS 句柄

  • #-v 輸出稍微詳細的信息,例如在ip 套件中可以包括ttl 和服務類型的信息

  • -vv  輸出相信的保報文資訊

#3、tcpdump 表達式

關於資料類型的關鍵字

包括host、port、net:

host 192.168.100.1 表示一台主機,net 192.168.100.0 表示一個網路網段,port 80 指明連接埠號碼為80,這裡如果沒有指明資料類型,那麼預設就是host

牛逼啊!接私活必备的 N 个开源项目!赶快收藏
登入後複製

資料傳輸方向的關鍵字

包括src、dst、dst or src、dst and src,這些關鍵字指明了傳輸的方向,例如src 192.168.100.1 說明封包來源位址是192.168.100.1。 dst net 192.168.100.0 指明目的網路位址為192.168.100.0,預設為監控主機對主機的src 和dst,即預設監聽本機和目標主機的所有資料
協定關鍵字

##包括ip、arp、rarp、udp

#

其他关键字

  • 运算类型:or、and、not、!

  • 辅助功能型:gateway、less、broadcast、greater

4、tcpdump 捕获方式

tcpdump [协议类型] [源或目标] [主机名称或 IP] [or/and/not/! 条件组合] [源或目标] [主机名或 IP] [or/and/not/! 条件组合] [端口] [端口号] …… [or/and/not/! 条件组合] [条件]

> tcpdump  ip dst 192.168.10.1 and src 192.168.10.10 and port 80 and host  !www.baidu.com
登入後複製

tcpdump

默认监听在第一块网卡,监听所有经过此网卡的数据包

Linux 網路抓包分析工具
> tcpdump  -i  ens33
登入後複製

监听指定网卡 ens33 的所有传输数据包

Linux 網路抓包分析工具
> tcpdump -i ens33 host 192.168.100.10
登入後複製

捕获主机 192.168.100.10 经过网卡 ens33 的所有数据包(也可以是主机名,但要求可以解析出 IP 地址)

Linux 網路抓包分析工具

Linux 網路抓包分析工具

  • 第一列:报文的时间

  • 第二列:网络协议 IP

  • 第三列:发送方的 ip 地址、端口号、域名,上图显示的是本机的域名,可通过 / etc/hosts 查看本机域名

  • 第四列:箭头 >, 表示数据流向

  • 第五列:接收方的 ip 地址、端口号、域名,

  • 第六列:冒号

  • 第七列:数据包内容,报文头的摘要信息,有 ttl、报文类型、标识值、序列、包的大小等信息

> tcpdump host 192.168.130.151 and  192.168.130.152or192.168.130.153192.168.130.152or192.168.130.153
登入後複製

捕获主机 192.168.56.209 和主机 192.168.56.210 或 192.168.56.211 的所有通信数据包

> tcpdump ip host node9 and not www.baidu.com
登入後複製

捕获主机 node9 与其他主机之间(不包括 www.baidu.com)通信的 ip 数据包

> tcpdump ip host node9 and ! www.baidu.com
登入後複製

捕获 node9 与其他所有主机的通信数据包(不包括 www.baidu.com)

> tcpdump -i ens33 src node10
登入後複製

捕获源主机 node10 发送的所有的经过 ens33 网卡的所有数据包

> tcpdump -i ens33 dst host www.baidu.com
登入後複製

捕获所有发送到主机 www.baidu.com 的数据包

监听主机 192.168.56.1 和 192.168.56.210 之间 ip 协议的 80 端口的且排除 www.baidu.com 通信的所有数据包:

> tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! baidu.com
登入後複製

也可以写成 tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com,即 not 和!都是相同的取反的意思

> tcpdump arp
登入後複製

监控指定主机的通信数据包与 1.9.1 方式相同

> tcpdump tcp port 22 and host 192.168.56.210
登入後複製

捕获主机 192.168.56.210 接收和发出的 tcp 协议的 ssh 的数据包

tcpdump udp port 53

监听本机 udp 的 53 端口的数据包,udp 是 dns 协议的端口,这也是一个 dns 域名解析的完整过程

5、常用的过滤条件

tcpdump 可以支持逻辑运算符

and: 与运算,所有的条件都需要满足,可用 “and”和 “&&” 表示
or:或运行,只要有一个条件满足就可以,可用 “or” 和“|”表示
not:取反,即取反条件,可以用 “not” 和“!”表示

> tcpdump icmp and src 192.168.100.10 -i ens33 -n
登入後複製

过滤 icmp 报文并且源 IP 是 192.168.100.10

多条件格式
在使用多个过滤条件进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,又需要使用引号将其包含。用括号的主要作用是逻辑运算符之间存在优先级,!>and > or, 为例条件能够精确所以需要对一些必要的组合括号括起来,而括号的意思相当于加减运算一样,括起来的内容作为一个整体进行逻辑运算。

过滤源地址是 192.168.100.1 并且目的地址是 192.168.20.20 的数据包或者 ARP 协议的包。另外,搜索公众号Linux就该这样学后台回复“Linux”,获取一份惊喜礼包。

Linux 網路抓包分析工具

> tcpdump **src** host 192.168.10.10 -i ens33 -n -c 5
登入後複製

过滤源 IP 地址是 192.168.10.10 的包

Linux 網路抓包分析工具

> tcpdump **dst** host 192.168.10.10 -i ens33 -n -c 5
登入後複製

过滤目的 IP 地址是 192.168.10.10 的包

Linux 網路抓包分析工具

基于端口进行过滤

> tcpdump port 22 -i ens33 -n -c 5  
> 过滤端口号为 22 即 ssh 协议的
登入後複製
Linux 網路抓包分析工具
>  tcpdump portrange 22-433 -i ens33 -n -c 8
登入後複製

过滤端口号 22-433 内的数据包

Linux 網路抓包分析工具

二、wireshark

1、什么是 wireshark

Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是捕获网络数据包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换

2、安装 wireshark

Linux 中有两个版本的 wireshark,一个是 wireshark,这个版本是无图形化界面,基本命令是”tshark“。

一个是 wireshark-gnome(界面版本),这个版本只能安装在支持 GUI 功能的 Linux 的版本中。

> yum -y install wireshark // 安装无图形化版本  
> yum -y install wireshark-gnome // 安装图形化版本
登入後複製
Linux 網路抓包分析工具
Linux 網路抓包分析工具
Linux 網路抓包分析工具

:这里的通过 yum 进行安装,需要提前做好 epel 源(即红帽操作系统额外拓展包),装上了 EPEL 之后,就相当于添加了一个第三方源。官方的 rpm repository 提供的 rpm 包也不够丰富,很多时候需要自己编译那太辛苦了,而 EPEL 可以解决官方 yum 源数据包不够丰富的情况。

安装epel源

>  yum -y install epel-release
登入後複製
Linux 網路抓包分析工具

3、tshark 命令

tshark 是 wireshark 的命令行工具  
     tshark 选项 参数  
    -i:指定捕获的网卡接口,不设置默认第一个非环回口接口  
    -D:显示所有可用的网络接口列表  
    -f:指定条件表达式,与 tcpdump 相同  
    -s:设置每个抓包的大小,默认 65535,多于这个大小的数据将不会不会被截取。  
    -c:捕获指定数量的数据包后退出  
    -w:后接文件名,将抓包的结果输出到. pcap 文件中,可以借助其他网络分析工具进行分              析,也可以使用重定向 > 把解码后的输出结果以 txt 的格式输出。  
    -p:设置网络接口以非混合模式工作,即只关心和本机有关的流量  
    -r:后接文件路径,用于分析保持好的网络包文件,比如 tcpdump 的输出文件  
    -n:禁止所有地址名字解析,即禁止域名解析, 默认是允许所有  
   -N:指定对某一层的地址名字解析,如果 - n 和 - N 同时存在,则 - n 将被忽略,如果两者都不写,则会默认打开所有地址名字解析  
         m:代表数据链路层  
         n:代表网络层  
         t:代表传输层  
    -V:设置将解码结果的细节输出,否则解码结果仅显示一个 packet 一行的 summary  
    -t:设置结果的时间格式  
         ad:表示带日期的绝对时间  
         a:表示不带日期的绝对时间  
         r:表示从第一个包到现在的相对时间  
         d:表示两个相邻包之间的增量时间
登入後複製
tshark -f "icmp" -i ens33 -V -c 1
登入後複製

过滤 icmp 报文,并展开详细信息。另外,搜索公众号编程技术圈后台回复“1024”,获取一份惊喜礼包。

tshark -f "arp" -i ens33
登入後複製

过滤 arp 报文

Linux 網路抓包分析工具
Linux 網路抓包分析工具

4、圖形化介面

Linux 網路抓包分析工具
Linux 網路抓包分析工具

Linux 網路抓包分析工具

 

Linux 網路抓包分析工具

三、Tcpdump 和wireshark 合用

Tcpdump 解析封包資訊沒有wireshark 詳細,所以可以透過Tcpdump 捕獲資料並輸出,再透過wireshark 進行解析,輸出檔案格式為. pcap  或其他

Linux 網路抓包分析工具

在虛擬機器上透過wireshark 讀取

Linux 網路抓包分析工具

#使用ip.addr == [ip 位址號] 可以過濾掉無關ip

Linux 網路抓包分析工具

  圖形讀取

Linux 網路抓包分析工具

#用wireshark 直接開啟檢視

總結

tcpdump 和wireshark 兩種單以抓包的功能來看,是相似的,兩者的命令列的選項也是有相同,但是tcpdump 對資料包分析的能力不是很好,同時目前很多Linux 內建安裝了tcpdump 這個工具,所以我們可以透過tcpdump 把封包抓出並存放到我們自訂的檔案(.pcap)中,再透過把檔案取出用wireshark 進行分析排障

## #######

以上是Linux 網路抓包分析工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

無法以 root 身份登錄 mysql 無法以 root 身份登錄 mysql Apr 08, 2025 pm 04:54 PM

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

MySQL安裝在特定係統版本上報錯的解決途徑 MySQL安裝在特定係統版本上報錯的解決途徑 Apr 08, 2025 am 11:54 AM

MySQL安裝報錯的解決方法是:1.仔細檢查系統環境,確保滿足MySQL的依賴庫要求,不同操作系統和版本需求不同;2.認真閱讀報錯信息,根據提示(例如缺少庫文件或權限不足)採取對應措施,例如安裝依賴或使用sudo命令;3.必要時,可嘗試源碼安裝並仔細檢查編譯日誌,但這需要一定的Linux知識和經驗。最終解決問題的關鍵在於仔細檢查系統環境和報錯信息,並參考官方文檔。

mysql 無法啟動怎麼解決 mysql 無法啟動怎麼解決 Apr 08, 2025 pm 02:21 PM

MySQL啟動失敗的原因有多種,可以通過檢查錯誤日誌進行診斷。常見原因包括端口衝突(檢查端口占用情況並修改配置)、權限問題(檢查服務運行用戶權限)、配置文件錯誤(檢查參數設置)、數據目錄損壞(恢復數據或重建表空間)、InnoDB表空間問題(檢查ibdata1文件)、插件加載失敗(檢查錯誤日誌)。解決問題時應根據錯誤日誌進行分析,找到問題的根源,並養成定期備份數據的習慣,以預防和解決問題。

mysql 可以在 android 上運行嗎 mysql 可以在 android 上運行嗎 Apr 08, 2025 pm 05:03 PM

MySQL無法直接在Android上運行,但可以通過以下方法間接實現:使用輕量級數據庫SQLite,由Android系統自帶,無需單獨服務器,資源佔用小,非常適合移動設備應用。遠程連接MySQL服務器,通過網絡連接到遠程服務器上的MySQL數據庫進行數據讀寫,但存在網絡依賴性強、安全性問題和服務器成本等缺點。

mySQL下載完安裝不了 mySQL下載完安裝不了 Apr 08, 2025 am 11:24 AM

MySQL安裝失敗的原因主要有:1.權限問題,需以管理員身份運行或使用sudo命令;2.依賴項缺失,需安裝相關開發包;3.端口衝突,需關閉佔用3306端口的程序或修改配置文件;4.安裝包損壞,需重新下載並驗證完整性;5.環境變量配置錯誤,需根據操作系統正確配置環境變量。解決這些問題,仔細檢查每個步驟,就能順利安裝MySQL。

無法從終端訪問 mysql 無法從終端訪問 mysql Apr 08, 2025 pm 04:57 PM

無法從終端訪問 MySQL 可能是由於:MySQL 服務未運行;連接命令錯誤;權限不足;防火牆阻止連接;MySQL 配置文件錯誤。

使用 Prometheus MySQL Exporter 監控 MySQL 和 MariaDB Droplet 使用 Prometheus MySQL Exporter 監控 MySQL 和 MariaDB Droplet Apr 08, 2025 pm 02:42 PM

有效監控 MySQL 和 MariaDB 數據庫對於保持最佳性能、識別潛在瓶頸以及確保整體系統可靠性至關重要。 Prometheus MySQL Exporter 是一款強大的工具,可提供對數據庫指標的詳細洞察,這對於主動管理和故障排除至關重要。

Linux最有用的是什麼? Linux最有用的是什麼? Apr 09, 2025 am 12:02 AM

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

See all articles