首页/网络/网络排障速查/抓包落盘与离线分析(-w / -r)

抓包落盘与离线分析(-w / -r)

现场只抓一次的原则:用 -w 落盘 pcap 再慢慢分析,避免终端刷屏漏掉关键帧;-U 让写入实时刷盘,便于边抓边看。

网络排障速查网络更新于 2026-10-13

落盘与离线分析

生产问题的抓包机会往往只有一次:把它写在磁盘上,再离线慢慢分析,比在终端里盯着一屏一屏刷过去的报文可靠得多。写入文件时必须只写不打印,否则两类输出会互相干扰;同时要保证抓取长度足够,避免报文内容被截断。抓到之后可以用命令行回读并叠加过滤条件,也可以交给图形化工具做会话重组与统计。

基本信息

核心思路现场一次抓取,事后反复分析;文件可跨机器共享复核
常用开关-w 写入文件、-r 回读并过滤、-s 设置抓取长度、-U 立即刷盘、-C 与 -W 做分卷
注意冲突写入文件时不要再叠加打印类选项,二者目的冲突
容量预估高带宽网卡全速抓包几分钟即可写出几十吉字节,务必提前估算
命名建议文件名带上时间与故障标识,便于后续检索与归档

典型使用场景

  • 复现期抓包:故障窗口短,先挂上抓包等它再次出现
  • 长期观测:用分卷参数把长时间抓包切成多个可控大小的文件
  • 跨团队协作:把文件交给网络或厂商侧用图形化工具体会诊
  • 复核争议:双方基于同一份文件讨论,避免各说各话
  • 边抓边看:用立即刷盘配合流式读取,兼顾实时性与留档

落盘与回读

落盘与回读
tcpdump -i eth0 -s 0 -nn -w /tmp/issue-$(date +%F-%H%M).pcap 'host 10.0.0.5'
# 复现期挂着抓,Ctrl+C 停止
 tcpdump -nn -r /tmp/issue-2026-10-12-1030.pcap | head -50      # 回读前 50 个包
tcpdump -nn -r /tmp/issue.pcap 'tcp port 443' -c 5                # 回读时再叠加端口过滤
tcpdump -nn -r /tmp/issue.pcap -w /tmp/only443.pcap 'tcp port 443'  # 过滤后另存一份小文件
# 分卷抓包:每 100MB 一卷,最多保留 20 卷
tcpdump -i eth0 -nn -s 0 -C 100 -W 20 -w /tmp/roll.pcap 'port 3306'

参数与效果

参数作用实践建议
写入文件把原始报文保存为抓包文件不要与打印类选项同时使用
设置抓取长度为零抓取完整报文而不截断需要分析内容时必加
立即刷盘包缓冲立刻写入磁盘边抓边看时使用,会增加磁盘写入
分卷与卷数按大小切分文件并限制保留卷数长时间抓包的必备组合
回读加过滤读取文件时再应用过滤条件先用大范围抓、再用小范围读
回读时可以叠加新的过滤条件,所以现场抓包不必追求过滤精准:抓全一点,事后再筛,比漏抓关键报文要好得多。
抓包文件是二进制格式,不要用文本方式打开或编辑,分析请用回读命令或图形化工具,避免破坏文件。

现场抓包检查清单

检查项目的常见疏漏
确认网卡名避免抓错接口拿到空文件用了通用网卡却需要链路层信息
估算磁盘余量保证长时间抓包不断档只估了包数没估文件体积
设置抓取长度保证报文内容完整默认长度导致内容被截断
确认过滤条件既不过窄也不过宽条件过窄漏掉关键报文
留好时间标记把抓包与业务日志对齐文件名没有时间信息难以检索
抓完立即校验确认文件非空且可回读直接归档,事后才发现是空文件
抓包结束后先用回读命令看前几行,确认文件非空、时间范围覆盖故障窗口,再交给他人分析,能省下一轮往返。
抓包文件可能包含账号口令与业务数据,传输与留存都要按敏感数据管理;排障结束应明确归档或及时删除。

易错点

  • 同时使用写入文件与打印选项,结果要么冲突要么看不到想看的输出
  • 忘记设置抓取长度为完整,回放分析时发现报文内容不全
  • 磁盘余量不足导致抓包中断或写满分区,影响业务运行
  • 抓包条件过窄,关键报文没被抓到,复现窗口浪费
  • 长时间抓包不做分卷,单个文件过大导致工具打开困难
  • 把抓包文件当普通文本文件处理,破坏原始数据后无法复核

数据来源与参考

  • man 8 tcpdump(-w/-r/-U)
  • Wireshark 文档:pcap 格式

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌