当代理节点显示延迟正常,却无法正常访问目标网站时,仅靠客户端日志往往只能看到模糊的"连接超时"或"握手失败"提示,无法定位真正的故障根源。此时,Wireshark 就是网络工程师和资深用户的终极排查利器——这款完全开源的网络协议分析仪,能将本机所有的网络通信数据转化为可读的封包结构,从 TCP 握手到 TLS 加密层,每一个细节都清晰可见。
一、为什么代理排错需要 Wireshark?
普通的 Ping 和 Traceroute 工具只能告诉你网络是否可达,却无法回答以下这些关键问题:
- GFW 是否向你发送了 TCP RST 重置包 主动断开连接?
- 代理客户端的 TLS 指纹(JA3/JA4) 是否暴露了代理特征,被防火墙识别?
- DNS 查询是否在代理隧道建立之前就已向国内 ISP 泄露了目标域名?
- 服务器是否正确返回了 TLS 握手中的 Server Hello 响应?
Wireshark 可以对上述每一个问题给出准确的封包级别答案。
二、Wireshark 基础抓包操作
- 选择网卡:启动 Wireshark,在主界面可以看到各网卡的实时流量波形。双击正在传输数据的网卡(以太网 / WLAN)开始捕获。
- 设置显示过滤器:在顶部过滤器栏中输入过滤表达式,只显示感兴趣的数据包:
ip.addr == 1.2.3.4— 仅捕获与特定 IP 的通信tcp.port == 443— 仅看 HTTPS 流量udp.port == 53— 捕获 DNS 查询tcp.flags.reset == 1— 找出所有 RST 重置包
- 停止与保存:点击红色停止按钮结束捕获,可将 .pcap 文件保存后离线分析或分享给他人协助排查。
三、三大高频代理故障的 Wireshark 排查方法
故障一:DNS 泄漏(DNS Leak)
使用过滤器 udp.port == 53,观察代理运行期间的 DNS 查询目的地。若看到本机向 114.114.114.114 或 8.8.8.8 之类的 DNS 发出了境外网站的域名解析请求,即说明 DNS 查询绕过了代理隧道直接发出,存在 DNS 泄漏。
解决方法:在代理客户端(如 Clash Verge)中开启 TUN 模式,配合 fake-ip 或 redir-host DNS 策略,可以从根本上拦截操作系统层面的原生 DNS 泄漏。
故障二:TLS 握手被中断(GFW 主动探测)
使用过滤器 ip.addr == [你的节点IP]。正常的 TLS 握手序列应该是:
Client Hello → Server Hello → Certificate → Key Exchange → Client Finished → Application Data
如果只能看到 Client Hello 发出后,随即出现多个 TCP Retransmission(重传)或者收到来自节点 IP 的 RST 标志包,说明该节点 IP 已被防火墙屏蔽或服务端异常。
故障三:本地端口冲突导致代理无法监听
使用过滤器 tcp.port == 7890(或你的代理本地端口),如果完全没有任何本地流量经过该端口,说明代理客户端未能成功绑定本地监听端口,通常是端口被占用或系统代理设置未生效。
四、隐私与安全注意事项
Wireshark 会捕获本机网卡上流过的所有封包,包含敏感的网络通信内容。使用时请注意:
- 不要在公用电脑上开启长时间全量捕获,可能会记录他人的敏感数据。
- 分享 .pcap 文件前,先使用 Wireshark 的"编辑 → 首选项 → 删除敏感数据"功能对文件进行脱敏处理。
- 在分析 TLS 加密流量时,若未导入私钥,Wireshark 只能看到握手元数据,无法解密加密内容,这是正常现象。