tcpdump -w 保存为标准 pcap 文件需满足四要素:sudo/root 权限、指定接口(-i)、-w 后带 .pcap 后缀、接口状态为 up;推荐加 -s 0、-n -nn 提升可用性。

用 tcpdump -w 就能直接保存为标准 PCAP 文件,这是 Wireshark、tshark 等工具可直接打开的原始二进制格式,无需转换。
必须满足的基础条件
想成功保存,四个要素缺一不可:
- 加 sudo 或 root 权限:普通用户无权访问网卡驱动,否则报错 “You don’t have permission to capture”
- 指定接口(-i):如
-i eth0、-i lo(本地回环必须用lo)、-i any;先运行sudo tcpdump -D查看可用接口列表 - 用 -w 指定带
.pcap后缀的路径:例如-w /tmp/traffic.pcap;后缀用.cap或不写可能被 Wireshark 拒绝识别 - 确保接口处于 UP 状态:执行
ip link show,只对状态为UP的接口抓包才有效
推荐加固参数提升可用性
默认设置容易导致分析失效——比如 HTTP 头被截断、端口显示成服务名而非数字、DNS 解析拖慢捕获速度。建议组合使用:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- -s 0:捕获每个包的全部字节,避免默认仅取前 68 字节(否则 TLS 握手字段、JSON 响应体等关键内容全丢失)
-
-n -nn:禁用 IP 主机名和端口服务名解析,输出纯数字地址(如
192.168.1.100)和端口号(如443),加快捕获、避免干扰
示例完整命令:sudo tcpdump -i eth0 -s 0 -n -nn -w /tmp/full_http.pcap port 80
按需控制抓包行为
实际中常需限制范围或适应长期运行场景:
- 抓固定数量:加 -c 1000,抓满 1000 包自动退出,适合快速验证
- 抓固定时长:配合 timeout,如
timeout 300 sudo tcpdump -i eth0 -w /tmp/5min.pcap - 滚动保存防磁盘占满:用 -C 50 -W 5 -w log.pcap 表示每 50MB 切一个文件,最多存 5 个(
log_00001.pcap→log_00005.pcap),超量自动覆盖最旧的 - 后台持续运行:加 nohup &,如
nohup sudo tcpdump -i eth0 port 80 -w /tmp/http.pcap &
保存后验证与分析
生成文件后别急着丢进 Wireshark,先确认是否有效:
- 用
file capture.pcap查类型,应显示 “tcpdump capture file (little-endian)” - 用
capinfos capture.pcap查包数、时间范围、链路层类型(如EN10MB) - Wireshark 中打开后,在顶部 Display Filter 栏输入
tcp.port == 80或ip.addr == 192.168.1.100快速筛选目标流量










