先执行sudo tcpdump -d确认网卡名如eth0,再用sudo tcpdump -i eth0实时抓包;可加-p in或tcp dst port 22等过滤条件;保存时用-s 0 -w /tmp/eth0_capture.pcap,最后用wireshark分析。

确认目标网卡名称
执行 sudo tcpdump -D,列出所有可用接口及其编号,输出类似 1.eth0、2.wlan0、3.any 的行;注意 loopback(lo)默认不参与常规流量捕获,除非你明确要抓本地回环通信。
若系统返回中没有显示预期网卡(如 ens33、enp0s3),说明该网卡可能未启用或驱动异常,需先运行 ip link show 验证其状态是否为 UP。
基础抓包:实时查看指定网卡流量
运行 sudo tcpdump -i eth0,将开始在终端逐行打印经过 eth0 的所有数据包头信息;按 Ctrl+C 中断抓取。
这一步会自动启用混杂模式,使网卡接收所有经过它的帧,而不仅是发给本机的包——【必须用 root 或 sudo 权限,否则报错“device not configured”或静默失败】。
若看到提示 tcpdump: verbose output suppressed...,说明已成功启动;若卡住无输出,检查网卡是否真有流量经过(例如 ping 一个外部地址后再试)。
精准过滤:只捕获关心的协议或方向
方法一:仅抓入站流量(进来的包)sudo tcpdump -i eth0 -P in
方法二:只抓 TCP 协议且目标端口为 22 的包sudo tcpdump -i eth0 -P in tcp dst port 22
方法三:排除广播和多播包,聚焦单播通信sudo tcpdump -i eth0 'not broadcast and not multicast'
注意:过滤表达式必须用单引号包裹,否则 shell 会提前解析空格和逻辑符号。
保存抓包结果供后续分析
第一步:执行 sudo tcpdump -i eth0 -s 0 -w /tmp/eth0_capture.pcap
-s 0 确保不截断任何数据包载荷,这对分析 HTTP 内容、TLS 握手等至关重要;省略该参数可能导致关键字段丢失。
第二步:等待几秒后按 Ctrl+C 停止抓取
第三步:用 ls -lh /tmp/eth0_capture.pcap 确认文件已生成且大小非零
第四步:将该 PCAP 文件复制到 Windows 或 macOS 机器,用 Wireshark 打开即可图形化分析











