首页/系统/Linux 运维命令速查/tcpdump 落盘与回读
网络命令82 条

tcpdump 落盘与回读

-w 存 pcap、-r 离线回读、-C/-W 自动轮转,适合长时间观察与事后分析;生产环境建议限时限大小。

Linux 运维命令速查系统更新于 2026-10-13

落盘与回读是什么

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 中可能含明文凭据与用户数据,交付与保存都要按敏感数据处理。

易错点

  • 先设 -c 或 -C 与 -W 限制再抓:忘关的 tcpdump 会把磁盘写满
  • 落盘过滤(BPF)在抓取时执行,回读时还能再过滤,但两层表达式的写法要一致才不混淆
  • 没有 root 或 CAP_NET_RAW 时抓包直接失败;容器里还需要访问宿主网络命名空间才能看到宿主流量
  • 用 -w 时同时重定向标准输出是无效的:报文已写入文件,屏幕上不会有内容
  • pcap 可能包含明文口令与个人数据,保存、传输与共享都要按敏感数据处理

数据来源与参考

  • man 8 tcpdump(tcpdump 官方手册)

相关工具

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