tcpdump -i 指定网卡是抓包前提,需先用ip link show或ifconfig确认up状态的真实网卡名(如ens33),非root用户须加sudo;不指定则默认监听首个非回环接口,易漏流量;-i any可抓所有接口但旧环境可能不支持。

直接用 tcpdump -i 网卡名 就能抓取指定网卡的原始数据包,这是最基础也最关键的一步。不指定网卡时,tcpdump 默认只监听第一个可用的非回环接口(通常是 eth0 或 ens33),容易漏掉目标流量。
确认网卡名称
先查清楚系统里有哪些活跃网卡:
- 运行 ip link show 或 ifconfig(若已安装)
- 重点关注状态为 UP 的接口,比如 eth0、ens33、enp0s3 或 wlan0
- 想抓所有接口的汇总流量,可用 -i any(注意:部分旧内核或容器环境可能不支持)
基础抓包命令
选定网卡后,执行:
- tcpdump -i eth0 —— 实时打印 eth0 上所有经过的数据包(按 Ctrl+C 停止)
- tcpdump -i ens33 -c 20 —— 只抓 20 个包后自动退出,避免刷屏
- tcpdump -i wlan0 -nn —— 不解析主机名和端口服务名,显示纯 IP 和数字端口,更清晰
配合过滤条件更精准
光抓全部包效率低,建议加过滤表达式缩小范围:
- tcpdump -i eth0 port 80 —— 只抓 80 端口(HTTP)的流量
- tcpdump -i ens33 host 192.168.1.100 —— 只抓与该 IP 往来的所有包
- tcpdump -i wlan0 tcp and src port 22 —— 只抓源端口是 22(SSH)的 TCP 包
保存到文件便于后续分析
命令行实时看容易遗漏细节,推荐保存为 pcap 文件:
- tcpdump -i eth0 -c 100 -w capture.pcap —— 抓 100 个包存入文件
- 生成的 capture.pcap 可直接用 Wireshark 打开,图形化查看协议分层、时间序列、TCP 流重组等
- 如需防止数据截断(尤其分析 HTTPS 或大文件传输),加上 -s 0: tcpdump -i ens33 -s 0 -w full.pcap











