Ubuntu 下常用的抓包工具

Ubuntu 下常用的抓包工具主要分为 命令行工具(轻量、适合服务器/无 GUI 环境)和 图形化工具(直观、适合桌面调试),以下是主流工具的安装、核心用法和适用场景,全程可落地。

一、命令行抓包工具(推荐服务器/脚本自动化)

1. tcpdump - 经典命令行抓包工具(系统预装概率高)

tcpdump 是 Linux 原生的抓包工具,功能强大、轻量高效,适合在无图形界面的服务器上使用,支持过滤规则、保存抓包文件等功能。

(1)安装(若未预装)

sudo apt update && sudo apt install -y tcpdump

(2)核心用法

功能 命令示例 说明
查看所有网卡 sudo tcpdump -D 列出可用网卡(如 eth0wlan0lo
监听指定网卡 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)核心用法

  1. 启动抓包:打开 Wireshark → 选择要监听的网卡(如 eth0)→ 点击左上角 鲨鱼鳍 图标开始抓包。
  2. 过滤规则(顶部过滤栏输入):
    • 端口过滤:tcp.port == 8080udp.port == 1883(MQTT 端口)
    • IP 过滤:ip.addr == 192.168.1.100(源或目标 IP)
    • 协议过滤:httphttpsmqtticmp
    • 组合过滤:tcp.port == 8080 && http.request.method == "GET"
  3. 保存与分析:抓包后可保存为 pcap 文件,支持离线分析、导出报文数据。
  4. HTTPS 解密:若需解密 HTTPS 流量,需配置 SSL 密钥日志文件(适合调试自有服务)。

(3)适用场景

  • 桌面端调试网络应用(如 Flask/Django 服务、IoT 设备通信)。
  • 复杂协议分析(如 TCP 三次握手、重传问题排查)。

2. Fiddler Everywhere - 专注 HTTP/HTTPS 抓包(跨平台)

Fiddler Everywhere 是 Fiddler 的跨平台版本,专门针对 HTTP/HTTPS 协议,支持请求/响应修改、断点调试、性能分析等功能,适合 Web 服务、API 调试。

(1)安装

  1. 下载 deb 安装包:Fiddler Everywhere 官网
  2. 执行安装命令:
    sudo dpkg -i fiddler-everywhere_*.deb
    # 若依赖缺失,修复依赖
    sudo apt -f install -y
    

(2)核心用法

  1. 启动 Fiddler Everywhere → 自动配置系统代理 → 开始抓包 HTTP/HTTPS 流量。
  2. 过滤功能:按域名、状态码、请求方法过滤(如 host:baidu.comstatus:200)。
  3. 断点调试:设置断点,修改请求头/请求体后再发送到服务器。
  4. 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
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容