Ubuntu 下常用的抓包工具主要分为 命令行工具(轻量、适合服务器/无 GUI 环境)和 图形化工具(直观、适合桌面调试),以下是主流工具的安装、核心用法和适用场景,全程可落地。
一、命令行抓包工具(推荐服务器/脚本自动化)
1. tcpdump - 经典命令行抓包工具(系统预装概率高)
tcpdump 是 Linux 原生的抓包工具,功能强大、轻量高效,适合在无图形界面的服务器上使用,支持过滤规则、保存抓包文件等功能。
(1)安装(若未预装)
sudo apt update && sudo apt install -y tcpdump
(2)核心用法
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 查看所有网卡 | sudo tcpdump -D |
列出可用网卡(如 eth0、wlan0、lo) |
| 监听指定网卡 | sudo tcpdump -i eth0 |
监听 eth0 网卡的所有流量,默认抓包长度 68 字节 |
| 监听指定端口 | sudo tcpdump -i eth0 port 8080 |
仅抓 eth0 上 8080 端口的流量(HTTP/自定义服务) |
| 监听指定协议 | sudo tcpdump -i eth0 icmp |
仅抓 ICMP 协议(ping 包) |
| 监听指定 IP | sudo tcpdump -i eth0 host 192.168.1.100 |
仅抓与 192.168.1.100 通信的流量 |
| 保存抓包到文件 | sudo tcpdump -i eth0 port 80 -w http.pcap |
保存 80 端口流量到 http.pcap(可后续用 Wireshark 分析) |
| 读取抓包文件 | sudo tcpdump -r http.pcap |
读取已保存的 pcap 抓包文件 |
| 显示完整报文 | sudo tcpdump -i eth0 -nnvvS port 8080 |
-nn 不解析 IP/端口为名称,-vv 详细输出,-S 显示绝对序列号 |
(3)适用场景
- 服务器端抓包、排查网络连通性问题。
- 脚本自动化抓包(如定时抓包、按规则过滤后保存)。
2. tshark - Wireshark 的命令行版本(功能更强)
tshark 是 Wireshark 的命令行实现,支持 解码上千种协议,过滤规则与 Wireshark 完全兼容,适合需要复杂协议分析的场景。
(1)安装
sudo apt update && sudo apt install -y tshark
- 安装时会提示是否允许非 root 用户抓包,选
Yes即可(无需每次加sudo)。
(2)核心用法
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 监听指定端口并解码 HTTP | tshark -i eth0 -f "port 80" -Y "http.request" |
-f 捕获过滤,-Y 显示过滤,仅显示 HTTP 请求 |
| 抓包并保存为 pcap | tshark -i eth0 -w app.pcap -f "port 8080" |
保存 8080 端口流量到 app.pcap
|
| 读取 pcap 并过滤 HTTPS 流量 | tshark -r app.pcap -Y "tls" |
仅显示 pcap 文件中的 TLS/HTTPS 流量 |
| 统计协议分布 | tshark -i eth0 -q -z io,phs |
-q 安静模式,-z 统计协议层级分布 |
(3)优势
- 兼容 Wireshark 的过滤语法,支持复杂协议解析(如 MQTT、CoAP、gRPC)。
- 适合 IoT 设备、微服务的协议调试。
二、图形化抓包工具(推荐桌面调试,直观易用)
1. Wireshark - 业界标准图形化抓包工具
Wireshark 是最流行的图形化抓包工具,支持 实时抓包、协议解码、流量分析、过滤搜索 等功能,适合桌面端调试网络问题(如 HTTP/HTTPS、TCP/UDP、MQTT 等)。
(1)安装
sudo apt update && sudo apt install -y wireshark
- 安装时选择允许非 root 用户抓包(避免每次启动都要
sudo)。
(2)核心用法
-
启动抓包:打开 Wireshark → 选择要监听的网卡(如
eth0)→ 点击左上角鲨鱼鳍图标开始抓包。 -
过滤规则(顶部过滤栏输入):
- 端口过滤:
tcp.port == 8080或udp.port == 1883(MQTT 端口) - IP 过滤:
ip.addr == 192.168.1.100(源或目标 IP) - 协议过滤:
http、https、mqtt、icmp - 组合过滤:
tcp.port == 8080 && http.request.method == "GET"
- 端口过滤:
-
保存与分析:抓包后可保存为
pcap文件,支持离线分析、导出报文数据。 - HTTPS 解密:若需解密 HTTPS 流量,需配置 SSL 密钥日志文件(适合调试自有服务)。
(3)适用场景
- 桌面端调试网络应用(如 Flask/Django 服务、IoT 设备通信)。
- 复杂协议分析(如 TCP 三次握手、重传问题排查)。
2. Fiddler Everywhere - 专注 HTTP/HTTPS 抓包(跨平台)
Fiddler Everywhere 是 Fiddler 的跨平台版本,专门针对 HTTP/HTTPS 协议,支持请求/响应修改、断点调试、性能分析等功能,适合 Web 服务、API 调试。
(1)安装
- 下载 deb 安装包:Fiddler Everywhere 官网
- 执行安装命令:
sudo dpkg -i fiddler-everywhere_*.deb # 若依赖缺失,修复依赖 sudo apt -f install -y
(2)核心用法
- 启动 Fiddler Everywhere → 自动配置系统代理 → 开始抓包 HTTP/HTTPS 流量。
- 过滤功能:按域名、状态码、请求方法过滤(如
host:baidu.com、status:200)。 - 断点调试:设置断点,修改请求头/请求体后再发送到服务器。
- HTTPS 配置:安装根证书后,可解密 HTTPS 流量(需信任证书)。
(3)优势
- 对 HTTP/HTTPS 支持更友好,操作比 Wireshark 简单。
- 适合 API 调试、前后端联调。
三、工具选型建议
| 工具 | 类型 | 适用场景 | 优势 |
|---|---|---|---|
| tcpdump | 命令行 | 服务器抓包、脚本自动化 | 轻量、无依赖、系统预装 |
| tshark | 命令行 | 复杂协议分析、批量处理 | 兼容 Wireshark 过滤规则 |
| Wireshark | 图形化 | 全协议调试、流量分析 | 功能最全、支持上千种协议 |
| Fiddler Everywhere | 图形化 | HTTP/HTTPS 抓包、API 调试 | 操作简单、断点调试强 |
四、常见问题排障
1. 抓不到包(权限不足)
- 原因:普通用户无网卡抓包权限。
- 解决:
# 方法1:加 sudo 执行(临时) sudo tcpdump -i eth0 # 方法2:将用户加入 wireshark 组(永久,适用于 tshark/Wireshark) sudo usermod -aG wireshark $USER # 注销重新登录后生效
2. 无法解密 HTTPS 流量
- Wireshark:需配置 SSL 密钥日志(环境变量
SSLKEYLOGFILE)。 - Fiddler:需安装并信任根证书(软件内引导配置)。
3. 抓包文件过大
- 解决:使用过滤规则只抓目标流量,或设置抓包大小限制:
# tcpdump 限制抓包 100MB 后自动停止 sudo tcpdump -i eth0 -C 100 -W 1 -w traffic.pcap