tcpdump 是 Linux 下轻量级命令行抓包工具,需指定网卡(-i)、禁用解析(-nn)、设置过滤(如 host 192.168.1.100 或 port 80)并可保存为 pcap 文件供后续分析。

直接用 tcpdump 就能抓包,关键在于选对网卡、加好过滤、控制输出——它不是“运行就完事”的工具,而是需要明确目标才能高效使用的网络观察窗口。
指定网卡和基础抓取
不指定网卡时,tcpdump 默认监听第一个非回环接口(通常是 eth0 或 ens160)。生产环境必须显式指定,避免误抓无关流量:
-
tcpdump -i eth0:只抓eth0上的全部流量,按Ctrl+C停止 -
tcpdump -i any:抓所有接口(含 lo),适合排查跨网卡问题 -
tcpdump -D:列出当前系统所有可用抓包接口,先执行这个再选
必加的显示优化参数
默认会做 DNS 反向解析和端口服务名映射,既慢又干扰判断。日常使用应固定带上:
-
-n:禁用 IP → 主机名解析(显示192.168.1.100而非web-server.local) -
-nn:进一步禁用端口 → 服务名转换(显示80而非http) - 组合写法:
tcpdump -nn -i eth0,这是绝大多数场景的起点
精准过滤目标流量
靠肉眼从海量包里找线索效率极低,用过滤表达式直击重点:
-
host 192.168.1.100:抓与该 IP 的所有来往(源或目的) -
dst port 22:只抓发往本机 22 端口的包(如 SSH 连接请求) -
src port 53 and udp:只抓来自 DNS 服务器的 UDP 响应 -
port 80 or port 443:同时抓 HTTP/HTTPS 流量 -
icmp:专抓 ping 包,验证连通性
保存与后续分析
实时滚动输出难定位,保存为标准 pcap 文件更利于复盘:
-
tcpdump -nn -i eth0 -c 100 -w traffic.pcap:抓 100 个包存文件 -
tcpdump -r traffic.pcap:读取并文本查看已保存的包 -
tcpdump -r traffic.pcap -nn port 80:对文件内容再过滤(比如只看 HTTP) - 生成的
.pcap文件可直接拖进 Wireshark 图形化分析,适合深度协议解读


















