tcpdump抓取数据包如何切割

10GB 以上的 pcap/cap 文件,Wireshark 直接打开会出现:

  • 内存暴涨
  • UI 卡死
  • 索引时间很长
  • 过滤器响应慢
  • TCP 重组极慢

生产环境一般不会直接分析原始大包。

标准流程:

flowchart TD
    A[原始10GB pcap] --> B[按时间切割]
    B --> C[按IP/端口过滤]
    C --> D[按协议过滤]
    D --> E[生成小pcap]
    E --> F[Wireshark分析]

1.editcap(推荐)

editcap工具属于:Wireshark Suite,比 tcpdump 更适合:

  • 离线切割
  • 时间切割
  • 包数切割
  • 大文件处理

1.1editcap安装

Linux:

1
2
apt install wireshark-common
apt install wireshark

或:

1
yum install wireshark

macOS:

1
brew install wireshark

1.2根据数据包数量切割

1
editcap -c 500000 input.pcap output.pcap

注意:-c 是按包数量


1.3根据时间(生产分析优选)

1
2
3
4
5
6
7
8
#每分钟一个文件
editcap -i 60 input.pcap output.pcap

#每5分钟
editcap -i 300 input.pcap output.pcap

#每10分钟
editcap -i 600 input.pcap output.pcap

提示:按时间切割,快速定位问题窗


1.4时间范围截取

1
2
3
4
5
editcap \
-A "2026-05-13 15:30:00" \
-B "2026-05-13 15:35:00" \
big.pcap \
small.pcap

含义:

参数 含义
-A 开始时间
-B 结束时间

2.生产环境定位方式

flowchart TD
    A[业务报警时间] --> B[定位日志时间]
    B --> C[editcap截取5分钟]
    C --> D[Wireshark分析]

3.tcpdump抓包时切割文件

3.1tcpdump 按大小轮转

1
2
3
4
5
6
# 根据大小轮转,每100MB切一个
tcpdump -i eth0 -w capture.pcap -C 100

# 最多保留10个文件
tcpdump -i eth0 -w capture.pcap -C 100 -W 10


3.2按时间轮转

1
2
3
4
5
6
# 每60秒切割
tcpdump -i eth0 -G 60 -w 'capture-%Y%m%d-%H%M%S.pcap'

# 每小时切割
tcpdump -i eth0 -G 3600 \
-w 'capture-%Y%m%d-%H.pcap'

3.3组合

1
2
3
4
tcpdump -i eth0 \
-G 300 \
-W 288 \
-w '/data/pcap/%Y%m%d-%H%M%S.pcap'

含义:

参数 说明
-G 300 5分钟切割
-W 288 保留24小时
288*5分钟 24小时