使用 tcpdump 时需指定正确且 UP 状态的网卡名(如 ens33),用 ip link show 查看,sudo ip link set up 启用;必须 root 权限(sudo),虚拟机建议桥接模式;抓包无输出可 ping 测试并加 -c 5 验证。

直接用 -i 选项指定网卡名,但关键在于——名字要对、状态要 UP、权限要够。
确认真实网卡名和启用状态
别凭经验写 eth0。系统里可能是 ens33、enp0s3、wlx00c0ca 等。运行:
- ip link show 或 ip a 查看所有接口及其状态
- 找带 UP 标记的接口,比如 ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>
- 如果看到 DOWN,先用 sudo ip link set ens33 up 启用
正确使用 -i 参数
语法固定:sudo tcpdump -i <接口名>。常见写法:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 抓指定网卡全部流量:sudo tcpdump -i ens33
- 抓所有接口(含 loopback):sudo tcpdump -i any
- 只抓回环接口(localhost 流量):sudo tcpdump -i lo
- 列出所有可用接口(不抓包,仅查看):tcpdump -D
权限和虚拟机注意事项
非 root 用户不加 sudo,tcpdump 会静默失败——没报错,也没输出。
- 必须用 sudo 启动,除非已配置 CAP_NET_RAW 权限
- 虚拟机中若用 NAT 模式,宿主机访问不会经过客户机网卡,建议改用桥接或 host-only 模式
- 容器内抓包通常无效,因网络命名空间隔离,应从宿主机抓对应 veth 接口
验证是否真在抓包
启动后没输出?不一定失败,可能只是没匹配到流量。可配合简单测试:
- 另开终端执行 ping -c 3 192.168.1.1(确保目标可达)
- 观察 tcpdump 是否打出 ICMP 行;若仍无,回头再核对接口名和 UP 状态
- 加 -c 5 限制抓 5 个包,避免阻塞,快速验证命令是否生效

















