开了梯子后国内网站变慢?分流设置自查

先说结论

国内网站变慢,多半是国内流量也经过了代理。先看客户端是否处于全局模式,改回规则模式后复测;再检查规则里国内域名和国内地址是否被分到直连;最后核对 DNS 设置,避免国内域名被解析到远端地址。三步依次排除,就能定位原因。

你遇到的现象

开着梯子时,国内网站或应用明显变慢或打不开。

关掉梯子,国内网站飞快;一打开,购物、视频、办公应用统统变得迟钝,甚至干脆打不开。这种情况在许多人身上发生过,而且几乎总是因为国内流量也被送进了代理。国内网站变慢不是节点质量的问题,而是分流没有分好。本文带你按“模式、规则、DNS”三层自查。

为什么国内网站会被送进代理

分流的目标是:国外网站走代理,国内网站直接访问。要做到这一点,客户端需要知道每一个请求该去哪边。判断依据有三类:

判断依据 作用 出问题时的表现
当前模式 全局模式:几乎全部走代理;规则模式:按规则决定 全局模式下国内也绕路
规则与规则集 按域名、地址范围匹配,决定直连或代理 规则缺失,国内域名被兜底规则送进代理
DNS 设置 决定域名被解析成什么地址 国内域名解析到远端地址,访问绕路

理解了这张表,排查就有了方向:逐层确认,不要一起改。分流这个概念本身可以在词典的 分流 条目里找到简短解释。

第一步:国内网站变慢先确认是不是全局模式

全局模式是国内网站变慢最常见的原因,也是最容易排除的。

  1. 打开客户端,找到当前的代理模式。
  2. 如果是全局模式,改成规则模式,保存。
  3. 重新访问刚才慢的国内网站,对比体验。

全局模式不是不能用,它适合临时排查,或在你确定所有流量都需要经过代理时使用。长期把全局模式开着,会让开梯子国内网站慢成为常态。如果改回规则模式后恢复,问题就解决了。

第二步:检查规则有没有把国内流量分到直连

规则模式下仍然慢,要看规则本身。大多数配置的末尾有一条“兜底”规则,意思是“前面都没有匹配上的,走这个”。如果兜底指向代理,而国内域名又没有被前面的规则匹配到,就会被送进代理。

可以这样自查:

  1. 在客户端的连接或日志页面,找到慢的那个网站的请求,看它命中了哪条规则、使用了哪个策略。
  2. 命中的是兜底规则且指向代理,说明前面的国内规则没有覆盖这个域名。
  3. 检查国内规则集是否启用、是否已经更新。规则集过旧会遗漏新的域名。
  4. 想临时处理,可以给这个域名单独加一条直连规则,写法参考 Clash 规则怎么写;使用 v2rayN 的读者,路由规则的思路见 v2rayN 路由规则怎么设置。

规则里按地址范围判断归属的部分,依赖内核里的 GeoIP 数据。数据过期,也会造成判断偏差。

第三步:核对 DNS 设置

域名先要被解析成地址,才能被规则按地址判断。DNS 设置不当,会让国内域名“走远路”。

可能的问题 表现 处理思路
所有域名都交给远端解析 国内网站解析到较远的地址,访问变慢 让国内域名使用国内的解析服务器
虚拟地址模式与某些应用不兼容 个别应用打不开 把相关域名加入过滤列表
解析服务器填写有误 全部解析变慢或失败 回到客户端默认值再测

具体字段和写法依内核而不同,Clash 系用户可以读 Clash DNS 设置详解,改动前先保存一份原配置。

系统代理和 TUN 的区别也会带来差异

除了模式、规则、DNS,客户端接管流量的方式也有关系。系统代理只对支持代理设置的程序生效,国内的一些应用有自己的网络通道,根本不经过系统代理;TUN 则会接管更多程序的流量,包括原本不走代理的应用。如果你开了 TUN 之后国内应用变慢,说明这些应用的流量也进了客户端,需要靠规则把它们分回直连。两种方式的差别见 Clash 系统代理是什么。

哪些国内应用最容易受影响

不是所有国内服务都同样敏感。下面几类,在经过代理后更容易出现异常:

类型 常见表现 原因
银行、支付类应用 要求重新验证,或提示环境异常 请求来源地址与平时不一致,风控会更谨慎
视频、音乐类应用 缓冲、清晰度降低 流量绕到境外再回国内,路径变长
办公、会议类应用 画面卡顿、延迟升高 实时通信对路径长度特别敏感
购物、外卖类应用 页面加载慢,定位偏差 定位和地址判断被代理出口影响

遇到这些应用,首选办法是让它们直连,而不是反复调整节点。可以在规则里为相应域名添加直连规则;如果应用域名众多难以逐个添加,使用国内规则集会更省事,规则集的概念见 规则集。

三种常见写法要避开

自查时,有几种常见的错误做法,容易让问题更乱:

  • 把所有规则都删了,只剩一条兜底:这样等于变相的全局模式。
  • 同时启用多个来源的规则集:规则互相覆盖,优先级难以判断,出错时很难排查。
  • 只改客户端,不检查订阅是否带有自己的规则:有些订阅在更新时会覆盖本地改动,改完要确认更新后是否保持。

怎么确认已经分流正常

改完设置后,用下面的方法验证,而不是凭感觉:

  1. 选两个国内网站和两个境外网站,作为固定的测试对象。
  2. 关闭梯子,访问四个网站,记下大致体验。
  3. 开启梯子(规则模式),再访问一遍。国内网站应该和关闭时差不多,境外网站应该能正常打开。
  4. 在客户端的连接记录里,确认国内网站显示为直连,境外网站显示为代理。
  5. 到 IP 与 DNS 检测导航 里的检测页看一下解析结果是否符合预期。

下一步

先把模式改回规则模式,如果问题没有消失,再看规则命中情况,最后核对 DNS。每一步只改一处,改完立刻复测。如果国内外网站都慢,说明不只是分流问题,转去 梯子速度慢怎么办 做整体对照。

这篇没有覆盖的

  • 不同客户端的规则写法和菜单名称不同,本文只讲分流思路,具体操作请以所用客户端的当前文档为准。
  • 本文没有任何国内网站在代理下的速度数据,是否变慢要靠你自己对比开关代理前后的体验。
  • 规则集和地址库由第三方维护,是否有遗漏或过期无法在这里判断,需要自己更新后再验证。

国内网站变慢常见问题

开了全局模式,国内网站为什么会变慢?

全局模式会让几乎所有流量都经过代理,包括本来可以直接访问的国内网站。这些请求要先绕到代理节点,再回到国内,路径变长,速度自然下降,有时还会被国内网站识别为异常来源而要求验证。日常使用建议回到规则模式,由规则决定哪些走代理。

规则模式下国内网站依然慢,是规则的问题吗?

有可能。规则模式依赖规则集判断域名和地址的去向,规则集没有更新、缺少某些域名、或者最后一条兜底规则指向代理,都会让国内流量被送进代理。可以到客户端的连接或日志页面,看这个网站实际命中了哪条规则。

只有某一个国内应用慢,其他正常怎么办?

先确认这个应用走的是系统代理还是自己的网络通道。再看它的域名是否被规则漏掉。可以单独为这个应用或域名添加一条直连规则,改完观察效果。一次只加一条,方便确认哪一条起了作用。

DNS 设置会影响国内网站的速度吗?

会。国内域名如果被交给远端解析,可能得到离你很远的地址,访问就会绕路。合理的做法是让国内域名由国内的解析服务器解析,其余域名再按需处理。具体字段请参考所用内核的文档。

关闭梯子后国内网站就恢复了,说明什么?

说明慢的原因出在代理链路上,而不是你的本地网络。接下来按模式、规则、DNS 三步检查:先确认不是全局模式,再看国内域名是否命中直连规则,最后核对 DNS,通常能找到原因。

接着读

文中出现的术语

接下来去哪儿?

找官方入口去网址导航,想核对仓库和版本看GitHub 项目导航;需要现成的机场,机场目录收了 28 家的价格与线路资料,性价比机场、便宜机场、VPN 机场分别有专项页。