linux中tcpdump抓包核心是选网卡、加参数、写过滤表达式;普通用户需sudo运行,推荐显式指定网卡并保存为pcap文件,配合-nn、-a、-vvv等选项及host/port/proto等过滤条件提升排障效率。

Linux 中使用 tcpdump 抓包,核心是三步:选对网卡、加必要参数、写准过滤表达式。普通用户需加 sudo 才能运行,因为要将网卡设为混杂模式。
指定网卡并保存原始数据包
不指定网卡时,tcpdump 默认监听第一个活动接口(常为 eth0),但生产环境建议显式指定,避免误抓。保存为 .pcap 文件便于后续用 Wireshark 分析。
- 查看可用网卡:ip -br a 或 tcpdump -D
- 抓包并保存(完整长度):sudo tcpdump -i eth0 -s 0 -w capture.pcap
- 抓 100 个包后自动停止:sudo tcpdump -i eth0 -c 100 -w short.pcap
常用过滤表达式快速定位问题
不加过滤容易淹没在海量数据中。tcpdump 支持 host、port、proto 等关键字组合,大小写敏感,支持 and/or/not 逻辑。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 只抓某 IP 的所有通信:host 192.168.1.100
- 只抓目标为 80 端口的请求:dst port 80
- 只抓 TCP + 某 IP + 某端口:tcp and host 10.0.2.5 and port 22
- 排除某个 IP(如跳过监控服务器自身):not host 172.16.0.1
提升可读性与排查效率的实用选项
默认输出会尝试解析主机名和端口名,影响速度且可能干扰判断;加特定参数能让输出更干净、信息更聚焦。
- -n:不解析 IP 和端口为域名/服务名(如显示 80 而非 http)
- -nn:进一步禁用端口名解析(推荐日常使用)
- -A:以 ASCII 方式打印载荷(适合查 HTTP、DNS 等明文协议)
- -vvv:极致详细输出(含 TTL、IP 选项、TCP 标志位等,调试连接异常时很有用)
典型排障场景命令示例
遇到网络不通、服务无响应等问题,可按需组合使用:
- 检查 DNS 是否发出请求:sudo tcpdump -i eth0 -nn port 53
- 确认 SSH 连接是否建立成功:sudo tcpdump -i eth0 -nn port 22 and tcp[tcpflags] & tcp-syn != 0
- 捕获本机发往某 API 的全部 HTTPS 流量:sudo tcpdump -i eth0 -s 0 -w api.pcap -nn src host 192.168.5.20 and dst port 443










