落盘与回读是什么
tcpdump 的 -w 把原始报文写进 pcap 文件,-r 从文件离线回读。落盘的价值在于把「现场」原样保存下来:之后可以用不同过滤条件反复分析,也可以拉回本地用 Wireshark 逐包细看。生产环境抓包必须限时限量,否则会把磁盘写满并影响转发性能。
基本信息
| 适用平台 | Linux/Unix(libpcap 体系,主流发行版自带) |
|---|---|
| 命令语法 | tcpdump -i 接口 -w 文件 [过滤表达式] / tcpdump -r 文件 |
| 常用选项 | -w 写文件 -r 读文件 -C 单个文件大小(MB) -W 保留文件数 -G 按秒轮转 -c 抓包数量上限 -nn 不解析 -s 快照长度 |
| 权限说明 | 需要 root 或 CAP_NET_RAW 能力;写入目录也要可写 |
| 回读要点 | 回读时仍可再叠加过滤表达式,等于做二次筛选 |
典型使用场景
- 偶发问题取证:接到反馈先开始抓包,等下次复现拿到现场
- 长时间观察:用轮转控制总占用量,避免写满磁盘
- 对比分析:同一份 pcap 用不同过滤条件反复看,不需重现问题
- 交付分析:把 pcap 给网络团队或厂商,让他们用专业工具细看
- 验证加固效果:抓包确认敏感字段是否仍明文传输
常用示例
常用示例
tcpdump -i eth0 -nn 'tcp port 8080' -w /tmp/cap.pcap -c 2000 # 抓够 2000 包即停
tcpdump -i eth0 -w /tmp/rot -C 100 -W 5 'port 443' # 单文件 100MB,共 5 个轮转
tcpdump -i eth0 -w /tmp/cap.pcap -G 300 -W 12 'port 3306' # 每 5 分钟换一个文件
tcpdump -nn -r /tmp/cap.pcap 'tcp port 8080' -c 50 # 回读并二次过滤
tcpdump -nn -r /tmp/cap.pcap -A 'tcp port 80' | head -n 40 # 回读并看应用层内容
tcpdump -nn -r /tmp/cap.pcap -tttt | head -n 20 # 带完整日期时间输出落盘相关选项读法
| 选项 | 作用 | 注意 |
|---|---|---|
| -w 文件 | 把原始报文写入文件 | 输出不再进终端,别同时做重定向 |
| -r 文件 | 从文件回读分析 | 回读不产生实时流量 |
| -C 大小 | 单个文件上限(MB) | 轮转的基础参数 |
| -W 数量 | 最多保留几个文件 | 达到数量后从第一个覆盖 |
| -G 秒数 | 按时间轮转 | 适合按固定时长切分现场 |
| -c 数量 | 抓满指定包数后退出 | 防止忘记停止 |
| -s 0 | 抓完整报文(不截断) | 长报文全量保存会显著增大文件 |
把 pcap 拉回本地用 Wireshark 打开前,先确认两端时钟:抓包时加 -tttt 输出完整日期时间,便于与分析机上的应用日志对齐。时间不同步会让「哪个包对应哪条日志」变成猜谜。
忘关的 tcpdump 能把磁盘写满,也会在高流量接口上占用可观 CPU。开抓之前就设好 -c、-C 与 -W 三件套,并在一个明确的目录里写文件;pcap 中可能含明文凭据与用户数据,交付与保存都要按敏感数据处理。