抓包初筛做什么
网络排查的第一步往往是做流量画像:先限量抓一点包,看清是谁在和谁通信、哪个端口占比最高,再决定往哪个方向深入。tcpdump 配合 -c 限制包数与 -nn 关闭名称解析,可以很快拿到样本;把输出按源地址聚合,就能得到会话排行。习惯上要限量限时:生产机上无过滤抓包会拖慢系统并迅速写满磁盘,先用 -c 与 timeout 控制范围,需要长时间窗口时再用 -w 轮转落盘。
基本信息
| 适用平台 | Linux(tcpdump 与 libpcap,需要 root 或相应能力) |
|---|---|
| 命令语法 | tcpdump [-i 接口] [-nn] [-c 数量] [-q] [过滤表达式] |
| 常用选项 | -nn 不解析名称与端口 -c 限制包数 -i 指定接口 -q 精简输出 -w 写入 pcap 文件 |
| 聚合方法 | 配合 awk 取列后接 sort 与 uniq -c 做排行统计 |
| 同类工具 | ss 看连接状态、iftop 与 nethogs 按主机或进程看带宽 |
典型使用场景
- 快速判断异常流量的来源与去向
- 统计某端口的会话分布,识别主要客户端
- 确认广播或多播流量是否过量
- 抓取样本文件供后续用专业工具分析
- 排查连接数与流量不匹配的情况
常用示例
常用示例
tcpdump -i eth0 -nn -c 50 # 抓 50 个包看一眼
tcpdump -i any -nn port 443 -c 20 # 只看 443 的样本
tcpdump -i eth0 -nn 'host 10.0.0.9 and tcp port 8080' -c 30 -w /tmp/cap.pcap
tcpdump -i eth0 -nn -q -c 1000 | awk '{print $5}' | sort | uniq -c | sort -rn | head
timeout 10 tcpdump -i eth0 -nn -c 2000 'tcp' | wc -l抓包与同类工具分工
| 工具 | 观察粒度 | 适用场景 |
|---|---|---|
| tcpdump | 单包级别 | 定位握手、重传与丢包细节 |
| ss | 连接与套接字状态 | 连接数、端口与进程对应关系 |
| iftop 与 nethogs | 按主机或进程的速率 | 快速看谁在占用带宽 |
| iperf3 | 主动打流测带宽 | 验证链路能力,而非观测业务流量 |
生产机抓包要限量限时:加 -c 与 timeout,高流量接口上不加过滤抓包会拖慢系统并很快写满磁盘,把排查变成新的故障。
容器环境里抓 -i any 可能同时看到 veth 两端的重复包。分析前先确认抓取点位置,否则会把一份流量误判成两份。
抓包前的三个决定
| 问题 | 做法 | 原因 |
|---|---|---|
| 抓哪一层 | 确认是主机还是容器视角 | 接口视图不同,包会重复 |
| 抓多久 | 限定时间或包数 | 避免文件无限增长 |
| 抓多少 | 限制单个文件大小与份数 | 控制磁盘占用 |
| 抓什么 | 先缩小地址与端口范围 | 减少无关流量 |
| 留多久 | 确认留存与合规要求 | 避免明文长期滞留 |
初筛阶段只做统计不留存内容:用计数与摘要输出判断是否存在异常比例,方向确认后再做定向抓取。这样既能减少磁盘压力,也能避免把大量业务数据带进分析范围,合规上的顾虑同样小得多。