4. Wireshark基础操作:过滤规则、着色规则、追踪流、统计工具的使用

说实话,很多刚入行的兄弟拿到Wireshark,第一反应就是——满屏花花绿绿的包,看都看晕了。我当年也是这样,抓了个空口信令包,盯着屏幕发呆,完全不知道从哪下手。

其实Wireshark没那么玄乎。你只要掌握四个核心技能:过滤、着色、追踪、统计,就能从一堆乱码里快速找到你要的东西。今天我就把这四板斧掰开揉碎讲给你听。

核心观点:Wireshark不是用来“看”所有包的,而是用来“找”你关心的包的。过滤和着色就是你的眼睛,追踪流和统计工具就是你的手。

Wireshark 核心操作知识体系 Wireshark 四大操作 ① 过滤规则 ② 着色规则 ③ 追踪流 ④ 统计工具 显示过滤器 捕获过滤器 默认着色 自定义着色 TCP/UDP流 SIP/HTTP流 IO Graph 协议分层 掌握这四板斧,你就能从海量数据中快速定位问题

4.1 过滤规则:从海量数据中精准捞针

Wireshark的过滤分两种:捕获过滤器和显示过滤器。很多人搞混,我简单说下区别。

类型 作用时机 语法 典型场景
捕获过滤器 抓包之前 BPF(Berkeley Packet Filter) 只抓S1-MME接口信令
显示过滤器 抓包之后 Wireshark专有语法 从全量包中筛选特定消息

捕获过滤器说白了就是“先筛再抓”。比如我只想看S1接口的GTP-C信令,可以这样写:

host 192.168.1.100 and port 2123

这样Wireshark就只抓这个IP和端口的数据,其他包直接丢弃。好处是节省磁盘和内存,坏处是——万一你漏了条件,就得重新抓。我吃过这个亏,有一次只抓了GTP-C,结果发现问题是GTP-U的,只好重来。

显示过滤器才是日常用得最多的。它是在已经抓到的包里做二次筛选。常用的LTE相关过滤表达式:

  • s1ap —— 只看S1AP消息
  • nas-eps —— 只看NAS层消息
  • gtp —— 只看GTP协议
  • s1ap.ProcedureCode == 0 —— 只看Attach流程
  • nas-eps.emm.type == 0x41 —— 只看Attach Request
  • ip.addr == 10.10.10.1 —— 只看某个IP的流量

小技巧:你可以在过滤栏输入 s1ap 后按回车,然后右键点击某个字段,选择“作为过滤器应用” → “选中”。Wireshark会自动帮你生成精确的过滤表达式。我刚开始学的时候全靠这个功能,省了不少事。

4.2 着色规则:一眼看出异常

Wireshark默认会给不同协议上色。比如TCP SYN包是红色,HTTP是绿色,DNS是蓝色。但说实话,默认配色对LTE抓包来说不太够用。

我个人习惯自定义一套LTE专属着色规则。怎么配?

  1. 菜单栏:视图 → 着色规则
  2. 点击“新建”,输入名称和过滤条件
  3. 选择前景色和背景色
  4. 点击“确定”保存

我常用的LTE着色规则:

规则名称 过滤表达式 颜色 用途
S1AP_Setup s1ap.ProcedureCode == 1 蓝色 S1建立流程
Attach s1ap.ProcedureCode == 0 绿色 附着流程
Detach s1ap.ProcedureCode == 2 红色 去附着流程
Handover s1ap.ProcedureCode == 13 橙色 切换流程
NAS_Error nas-eps.emm.cause 紫色 NAS层拒绝/错误

注意:着色规则只改变显示颜色,不影响数据本身。我曾经见过有人把着色规则导出后忘了,换台电脑抓包发现颜色不对,还以为数据丢了。其实只是规则没导入而已。

4.3 追踪流:还原完整对话

单个包看是零散的,但一个信令流程往往是多个包的交互。追踪流功能可以把这些包串起来,还原成完整的对话。

操作很简单:

  • 选中任意一个包
  • 右键 → 追踪流 → TCP流/UDP流
  • Wireshark会弹出一个新窗口,显示完整的对话内容

在LTE抓包里,我常用追踪流来看:

  • SCTP流:S1AP和NGAP都是跑在SCTP上的,追踪SCTP流可以看到完整的信令交互
  • GTP-C流:核心网信令,比如Create Session Request/Response
  • HTTP流:如果抓了SGW/PGW的接口,有时候能看到HTTP2的流量

举个例子。有一次我排查一个UE附着失败的问题,单个包看都是正常的,但用追踪流一看——发现MME发了Attach Accept后,UE没有回Attach Complete,而是回了一个Attach Reject。问题一下就定位了:UE侧拒绝了网络侧的附着。

进阶用法:追踪流窗口支持“查找”功能(Ctrl+F),可以快速搜索关键字。比如在S1AP流里搜“Cause”,就能找到所有失败原因。

4.4 统计工具:用数据说话

统计工具是Wireshark里容易被忽视但非常强大的功能。它能把抓到的包变成图表和数字,让你一眼看出整体情况。

常用的统计功能:

统计项 菜单位置 LTE场景用途
IO Graph 统计 → IO Graph 看某个接口的流量趋势,比如S1接口突发流量
协议分层 统计 → 协议分层 看各协议占比,判断是否有异常协议
对话 统计 → 对话 看哪些IP之间通信最频繁
端点 统计 → 端点 看所有参与通信的IP和端口
流图 统计 → 流图 可视化信令交互流程

IO Graph是我用得最多的。比如你怀疑某个时间段S1接口有拥塞,可以这样操作:

  1. 过滤出S1AP流量:s1ap
  2. 打开IO Graph(统计 → IO Graph)
  3. 设置X轴为时间,Y轴为包数/秒
  4. 看曲线是否有尖峰或异常波动

有一次我排查一个基站频繁断连的问题,用IO Graph一看,发现每天凌晨3点都有一个流量尖峰。后来查出来是那个基站的定时任务在批量上报测量报告,导致SCTP链路拥塞。没有IO Graph,这种规律性问题很难发现。

我的建议:每次抓完包,先花30秒看下统计工具。IO Graph看趋势,协议分层看分布,对话看热点。这30秒往往能帮你省下后面半小时的排查时间。

4.5 实战:用过滤+着色+统计定位一次Attach失败

光说不练假把式。我拿一个真实案例串一遍。

场景:用户反馈手机无法附着到LTE网络。抓了S1-MME接口的包。

第一步:过滤
输入 s1ap.ProcedureCode == 0,只看Attach流程。发现确实有Attach Request和Attach Reject。

第二步:着色
给Attach Reject包设置红色着色规则。一眼就能看到红色包出现在哪个位置。

第三步:追踪流
选中Attach Reject包,右键追踪SCTP流。看到MME回复的Cause值是 #15 - No suitable cells in tracking area。

第四步:统计
打开IO Graph,过滤 s1ap.ProcedureCode == 0,发现Attach Request在短时间内重复发送了5次,每次间隔3秒。说明UE在反复尝试附着。

结论:TAI(Tracking Area Identity)配置有问题,UE所在的TA不在MME允许的列表里。调整MME的TAI配置后问题解决。

避坑指南:我曾经遇到一个情况,过滤条件写错了,把 s1ap.ProcedureCode == 0 写成了 s1ap.ProcedureCode = 0(单等号)。Wireshark不会报错,但也不会匹配任何包。所以写过滤条件时一定要用双等号 ==。

好了,这四板斧你学会了吗?过滤让你精准定位,着色让你一目了然,追踪流让你看清全貌,统计工具让你把握全局。下次抓包的时候,别光盯着屏幕发呆,试试这些操作。你会发现,Wireshark其实挺听话的。