开着 VPN 时微信、支付宝很慢或者打不开

国内 App 在开着 VPN 时变慢、转圈、要求额外验证, 最常见的原因是它被送出国绕了一圈。先看线路模式, 再看 DNS 这一层, 最后是规则包没加载成功那种情况。

Nono VPN 团队 发布于

微信消息发得出去但图片半天不出来, 支付宝首页能开、点进账单就转圈, 或者忽然要你收一条短信验证码。这些现象看着像是 App 出了问题, 但我们收到的这类反馈里, 最常见的原因是同一个: 这些本来在你身边的服务, 被送出国绕了一圈。

示意图: 同一个国内服务, 智能分流下是两点一线的直连, 全局代理下要先绕到境外的隧道再折回来

这张图说的是最常见的那一种。中间那个方块是你要访问的国内服务。上排是默认的智能分流, 手机到它两点一线。下排是全局代理, 同一个目的地要先越过它、绕到境外的节点, 再折回来。多出来的那段距离是实打实的, 没有任何设置能把它变短。下面还有两种别的原因, 排在后面是因为它们没这么常见。

一, 先花十秒确认是不是这一类

把出问题的那个 App 停在能复现的那一页, 然后做一件事: 断开 VPN, 重新试一次。

  • 断开就正常: 是这一类, 往下看第二步。
  • 断开还是不正常: 多半和 VPN 无关, 更可能是这个 App 自己的服务或者你的网络本身出了问题。再换一个别的 App 试试, 两个都不正常就基本能确定。

注意别用"重启手机"来验证, 重启会同时改变一堆状态, 验完你也不知道是哪一件起了作用。

二, 看线路模式

打开 App, 线路模式这一栏有两个选项:

  • 智能分流(默认): 国内的网站和 App 直连, 境外的才走隧道。装好之后没动过设置的话, 你就是这个模式。
  • 全局代理: 上网流量都走隧道, 包括国内的。它存在的意义是让你的 IP 处处显示在境外, 代价是面向国内部署的服务基本都要绕远路。同一个局域网里的设备是例外, 见下面那条提示。

如果你为了某件事临时开过全局代理, 事后很容易忘记关。切回智能分流, 然后重新连接一次 —— 模式是在建立连接时决定的, 不重连不生效, App 里也会有一句提示告诉你这件事。

局域网不受影响。不论哪种模式, 打印机、NAS、投屏这些同一个网络里的设备都是直连, 这是引擎内置的, 不在可配置的规则里。所以"开了 VPN 投不了屏"通常是另一回事。

三, 为什么会是"首页能开, 点进去就卡"

"首页正常、点进去卡"可以有好几种原因: 详情页调的是另一套接口、要新建连接、素材在别的服务器上。这里说其中一种, 因为它最容易被忽略, 而且和 VPN 直接相关 —— 它出在 DNS 那一层, 不在连接本身。

手机要访问一个网站, 得先把域名换成 IP, 这一步叫解析。国内的大服务几乎都用 CDN, 而 CDN 需要判断该把你调度到哪个节点。它看到的通常不是你本人的地址, 而是替你发起查询的那台递归解析器的地址, 有时候还能通过一个叫 EDNS Client Subnet 的扩展拿到你所在的网段。判断依据是网络拓扑与时延, 不完全等于地理上最近。

所以解析请求从哪里发出去, 会影响你拿到哪个节点。我们实测过五个国内媒体类域名, 用境内解析器和境外解析器各查一遍, 五个的结果 IP 无一相同。解析本身的耗时差距也很直观: 同一批查询, 国内解析器十几到三十几毫秒, 境外解析器两三百毫秒。这个代价不会每次都付, 域名有缓存, 但每遇到一个还没缓存过的域名就要等一次。

这也是我们见得最多的一种解释: 首页那几个域名早就在缓存里了, 而点进去要加载的图片、视频、评论往往在别的域名上, 那些要现解析。

我们的实现是这样分的: 智能分流下, 被判定为直连的域名, 解析请求送到国内的解析器。全局代理下, 解析跟着流量一起进隧道, 上面这一整套就反过来了。

四, 我选的是智能分流, 表现却像全局

有一种情况需要你知道, 因为你在界面上看不出来。

智能分流靠一份规则包判断哪些目的地该直连。这份规则包偶尔会加载不成功 —— 下发出问题、文件被截断、签名对不上, 都有可能。遇到这种情况, 客户端不会把你的网断掉, 而是退回到全代理继续工作。结果就是: 你选的是智能分流, 实际跑的是全局。

我们没有把这个状态做成界面上的提示, 所以你自己判断不了。能做的是: 如果你确认自己在智能分流, 国内 App 却持续表现得像开了全局, 把这个现象告诉客服。降级这件事我们这边有记录, 一查就知道, 比你反复试设置有用得多。

先自己能做的一件事: 断开再重连一次。规则包是每次建立连接时加载的, 重连就重新加载一次, 临时性的下发问题会自己好。

五, 关于额外验证

部分国内服务在检测到访问来自境外 IP 时, 会追加一次身份验证, 比如发一条短信、要你扫一次脸。规则是它们定的, 我们既改不了也没打算绕过。但触发它的那个境外出口 IP 确实来自隧道, 所以这件事和你开着 VPN 有关, 只是决定权不在我们这边。

该做的不是去找一条"看起来更像国内"的线路, 而是让这些服务根本不经过隧道, 智能分流做的就是这件事。切回去之后, 这类服务看到的就是你本来的网络出口。要说明的是, 风控看的不只是 IP, 还有设备、账号、常用地点这些, 所以不能保证从此不再要求验证, 只能说因为出口 IP 触发的那一类通常就不再出现了。

自测清单

  1. 断开 VPN 再试一次, 确认问题确实和 VPN 有关。
  2. 线路模式切到智能分流。
  3. 重新连接一次(不重连不生效)。
  4. 再打开出问题的那个 App, 这次直接点到刚才卡住的那一页。

这四步之后还是不对, 把三件事写给客服: 哪个 App 的哪一页、线路模式是哪个、断开 VPN 之后有没有区别。有这三条通常一轮就能定位, 没有的话我们只能反过来问你同样的三个问题。

常见问题

为什么开了 VPN 之后国内 App 反而变慢?
如果线路模式是全局代理, 你发给国内服务的每一个包都要先出国到节点、再从节点绕回国内, 一来一回多出的距离是实打实的。默认的智能分流不会这样, 它让国内的目的地直连、只有需要的部分走隧道。
支付宝要我做额外验证, 是 VPN 弄的吗?
有可能。部分国内服务看到访问来自境外 IP 时会追加一次验证, 这是它们自己的策略, 我们改不了。切回智能分流让这类服务直连, 通常就不再触发。
我选的就是智能分流, 为什么还是不对?
有一种情况客户端界面上看不出来: 分流规则包没能加载成功时, 客户端会退回到全代理继续工作, 表现就和你手动开了全局一样。真遇上了请告诉客服, 我们这边能查到, 你自己在 App 里看不到。

相关文章

本文由 Nono VPN 团队整理,借助 AI 辅助写作,发布前经人工核对。