首页/系统/Linux 运维命令速查/tcpdump 抓包初筛(只读统计)
性能与监控48 条

tcpdump 抓包初筛(只读统计)

网络问题先做流量画像:tcpdump -c 限量抓取 + 过滤表达式,配合 -w 落盘后再分析;避免在忙接口无限抓。

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

抓包初筛做什么

网络排查的第一步往往是做流量画像:先限量抓一点包,看清是谁在和谁通信、哪个端口占比最高,再决定往哪个方向深入。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 两端的重复包。分析前先确认抓取点位置,否则会把一份流量误判成两份。

抓包前的三个决定

问题做法原因
抓哪一层确认是主机还是容器视角接口视图不同,包会重复
抓多久限定时间或包数避免文件无限增长
抓多少限制单个文件大小与份数控制磁盘占用
抓什么先缩小地址与端口范围减少无关流量
留多久确认留存与合规要求避免明文长期滞留
初筛阶段只做统计不留存内容:用计数与摘要输出判断是否存在异常比例,方向确认后再做定向抓取。这样既能减少磁盘压力,也能避免把大量业务数据带进分析范围,合规上的顾虑同样小得多。

易错点

  • 容器内抓 any 接口看到重复包,误判为网络重传
  • 抓包文件含业务明文内容,传输与留存未按数据合规要求处理
  • 不限量抓包把磁盘写满,排查问题演变成新的故障
  • 采样窗口过短,样本无法代表整体流量特征,据此下结论会出错
  • 在容器里抓所有接口并直接看结果:同一份流量会以重复包出现,误判成重传或重复请求,先确认抓的是哪一个网络命名空间的接口

数据来源与参考

  • man 8 tcpdump
  • pcap-filter(7) man

相关工具

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