场景大概是这样:笔记本在公司用得好好的,回家连上家里的 Wi-Fi,客户端还显示「已连接」,延迟测试也有数字,但网页就是打不开。或者手机开了热点给电脑用,电脑立刻失联。
这类问题的共同点是网络环境变了,但代理还活在旧环境里。它几乎不需要碰机场那一侧,也基本不需要重装任何东西。
换网络的瞬间,系统里发生了什么
理解这一点,后面的操作就都有依据了。当你从一个网络切到另一个:
- 网卡拿到了新的 IP 地址、新的网关和新的 DNS 服务器;
- 原来的默认路由失效,系统需要重新决定流量往哪送;
- 已经建立的 TCP 连接全部作废,包括代理的隧道连接。
理论上客户端应该感知到这些变化并自动重连。现实里它经常做不到——尤其是在切换很快、或者新旧网络的网段恰好相同(两个路由器都用同一个常见网段)的时候。客户端界面还显示绿色,实际上隧道已经悬空了。
先做这三件事
按这个顺序,不要跳。
| 步骤 | 具体操作 | 解决什么 |
|---|---|---|
| 1. 确认新网络本身可用 | 关掉代理,打开一个国内网站 | 排除门户认证未完成、网线没插好、热点没流量 |
| 2. 重建隧道 | 客户端里关闭代理开关,等两三秒再打开 | 让隧道按当前网卡和网关重新建立 |
| 3. 清 DNS 缓存 | 清系统缓存,浏览器也单独清一次 | 清掉旧网络下留下的解析结果 |
第一步经常被跳过,但它排除的情况相当常见。酒店、公司、咖啡馆的网络往往需要先在门户页面登录才放行流量,你开着代理的时候认证页面根本弹不出来,看到的现象就是「什么都打不开」。
第二步能解决大多数问题。如果关开一次不行,再试着把客户端完全退出(注意是退出而不是最小化到托盘)后重新启动。
第三步针对的是一类特别容易被误判的情况:域名还解析着旧网络下拿到的地址,而那个地址在新网络里根本到不了。清缓存之后重试,往往立刻恢复。需要注意浏览器有自己独立的一份 DNS 缓存,清系统的不等于清了浏览器的。这一层的原理和更多情形见 DNS 解析失败的排查。
前三步没解决:看路由残留
如果你开着 TUN 模式,问题会更顽固一些。
TUN 模式的工作方式是创建一块虚拟网卡,并往系统路由表里写入条目,把流量导向这块虚拟网卡。切换网络时,如果客户端异常退出、或者切换发生在它还没来得及清理的时候,这些路由条目可能留在系统里。结果是:流量被送往一个已经不再工作的虚拟接口,表现为完全没网,连国内网站都打不开。
处理办法:
- 彻底退出代理客户端,确认托盘/菜单栏里没有残留进程;
- 检查系统里是否还存在虚拟网卡,存在的话手动禁用;
- 重新启动客户端,让它重新建立虚拟网卡和路由;
- 如果仍然异常,重启系统——这是少数几个重启确实必要的场景,因为路由表和虚拟设备的清理需要系统层介入。
sing-box 一类的客户端对网络切换的自动处理相对完整,配置里通常也有针对接口变化的重建选项,可以参考 sing-box 上手指南里的相关设置。
还是不行:检查新网络的限制
到这一步,本地状态已经清干净了。剩下的可能性在于新网络本身对代理流量的处理方式和旧网络不同:
- 端口被限制。 部分公共网络只放行 80、443 等常见端口。如果你的节点用的是其他端口,在这种网络下就连不上。换一个 443 端口的节点通常能通。
- UDP 被阻断。 基于 QUIC/UDP 的协议在限制严格的网络里可能完全不通,而走 TCP 的节点正常。换一个不同协议的节点做对照,能很快判断。
- IPv6 环境差异。 有的网络是纯 IPv4,有的启用了双栈。如果新网络下解析出了 IPv6 地址而节点没有 IPv6 出口,连接就会失败或极慢。把客户端的 IP 版本策略调成优先 IPv4 再试。
- 运营商差异。 从宽带切到手机热点时,实际上换了运营商链路,这类差异的详细分析见 Wi-Fi 能用但流量不能用。
只有把上面这些都排除之后,才轮到怀疑订阅或节点。而且判断很容易:如果同一份订阅在另一个网络里此刻正常,那节点侧就没问题。
各系统的小差别
Windows 最容易出路由残留,尤其是从睡眠中唤醒并切换了网络的时候。客户端退出不干净时,虚拟网卡会留在设备管理器里。
macOS 在网络切换时会重新走一遍网络配置流程,通常比 Windows 更平滑,但系统代理设置有时会保留在旧的网络位置(Location)配置里。如果你为不同场景建过多个网络位置,检查一下当前用的是哪一个。
Android 和 iOS 在 Wi-Fi 与蜂窝之间切换时会重建 VPN 隧道,大部分情况自动完成。问题多出在应用被后台回收之后:界面看着还连着,实际上已经断了,打开应用手动重连即可。
确认恢复的方式
不要只看客户端里的延迟数字——延迟测试用的是独立请求,通过不代表实际转发正常。可靠的做法是:
- 打开一个需要代理的网站,确认页面完整加载(不是只出现框架);
- 打开一个国内网站,确认速度正常,说明直连这条路也没被路由残留影响;
- 再切换一次网络回来,重复上面两步。能来回切都正常,才说明处理到位。
如果每次换网络都要手动救一遍
偶尔一次是正常现象,每次都发生就该调整设置了。可以检查的方向:
- 客户端是否有「网络变化时自动重连」「监听接口变化」之类的选项,打开它;
- 是否使用了过时的客户端版本,网络切换的处理在新版本里通常有改进;
- 系统的省电或网络优化功能是否在切换时挂起了客户端进程;
- 配置文件里是否绑定了固定的出站接口,绑定之后换网必挂。
如果这些都调过还是每次都断,联系机场客服时说明「切换网络后必断、关开代理即恢复」这个具体规律,并附上客户端名称版本、TUN 是否开启、以及切换前后的两个网络类型。这个描述比「连不上」精确得多,能省掉一整轮标准问答。