从抓包到精准过滤
在日常排查网络故障时,很多人一上来就打开 Wireshark 开始抓包,结果面对成千上万的数据包直接懵了。其实关键不在于抓得多,而在于过滤得准。掌握协议分析过滤技巧,能让你从海量流量中快速锁定异常通信。
比如你发现公司内网某台电脑访问网页特别慢,但其他设备正常。这时候没必要看所有流量,只需聚焦这台设备的 HTTP 通信即可。通过 IP 地址加协议类型组合过滤,立刻缩小范围。
基础过滤语法要熟记
Wireshark 使用显示过滤器(Display Filter)语法非常灵活。最常见的就是按协议过滤:
http
dns
tcp
udp如果只想看某个 IP 发出的数据包,写法如下:
ip.src == 192.168.1.100反过来,看目标地址是这个 IP 的包:
ip.dst == 192.168.1.100两者结合,监控该主机双向通信:
ip.addr == 192.168.1.100组合条件更高效
实际场景往往复杂一些。比如你想查某台设备是否在偷偷连外网某个端口,可以用逻辑运算符组合条件:
ip.src == 192.168.1.100 && tcp.dstport == 4444这里用两个 && 表示“且”,只显示源 IP 是该设备且目标端口为 4444 的 TCP 包。如果怀疑是木马外联,这类端口常被利用。
再比如,排除干扰流量也很实用。DNS 请求太多?直接去掉:
!dns或者只保留 HTTP 和 HTTPS 流量:
http || tls按会话追踪也很常用
有时候光看单个数据包不够,需要还原一次完整对话。右键一个 TCP 包,选择“Follow -> TCP Stream”,就能看到整个会话内容。配合过滤使用,能清楚看到客户端和服务端说了什么。
假设用户反馈登录失败,你在流中看到返回了“Invalid token”,那基本可以判断问题出在认证环节,而不是网络不通。
保存常用过滤器省时间
经常处理类似问题的话,可以把高频过滤表达式保存下来。比如运维人员常看数据库连接,可以存一个名为“MySQL_Traffic”的过滤器:
tcp.port == 3306下次一点就加载,不用重复输入。Wireshark 支持命名过滤器,点工具栏的书签图标就能管理。
家里宽带突然断流,你用过滤技巧几分钟就定位到是路由器在频繁发送异常 UDP 包,避免了盲目重启设备。这些小技巧用熟了,就像老司机认路一样自然。