开了梯子后国内网站变慢?分流设置自查
国内网站变慢,多半是国内流量也经过了代理。先看客户端是否处于全局模式,改回规则模式后复测;再检查规则里国内域名和国内地址是否被分到直连;最后核对 DNS 设置,避免国内域名被解析到远端地址。三步依次排除,就能定位原因。
你遇到的现象
开着梯子时,国内网站或应用明显变慢或打不开。
关掉梯子,国内网站飞快;一打开,购物、视频、办公应用统统变得迟钝,甚至干脆打不开。这种情况在许多人身上发生过,而且几乎总是因为国内流量也被送进了代理。国内网站变慢不是节点质量的问题,而是分流没有分好。本文带你按“模式、规则、DNS”三层自查。
为什么国内网站会被送进代理
分流的目标是:国外网站走代理,国内网站直接访问。要做到这一点,客户端需要知道每一个请求该去哪边。判断依据有三类:
| 判断依据 | 作用 | 出问题时的表现 |
|---|---|---|
| 当前模式 | 全局模式:几乎全部走代理;规则模式:按规则决定 | 全局模式下国内也绕路 |
| 规则与规则集 | 按域名、地址范围匹配,决定直连或代理 | 规则缺失,国内域名被兜底规则送进代理 |
| DNS 设置 | 决定域名被解析成什么地址 | 国内域名解析到远端地址,访问绕路 |
理解了这张表,排查就有了方向:逐层确认,不要一起改。分流这个概念本身可以在词典的 分流 条目里找到简短解释。
第一步:国内网站变慢先确认是不是全局模式
全局模式是国内网站变慢最常见的原因,也是最容易排除的。
- 打开客户端,找到当前的代理模式。
- 如果是全局模式,改成规则模式,保存。
- 重新访问刚才慢的国内网站,对比体验。
全局模式不是不能用,它适合临时排查,或在你确定所有流量都需要经过代理时使用。长期把全局模式开着,会让开梯子国内网站慢成为常态。如果改回规则模式后恢复,问题就解决了。
第二步:检查规则有没有把国内流量分到直连
规则模式下仍然慢,要看规则本身。大多数配置的末尾有一条“兜底”规则,意思是“前面都没有匹配上的,走这个”。如果兜底指向代理,而国内域名又没有被前面的规则匹配到,就会被送进代理。
可以这样自查:
- 在客户端的连接或日志页面,找到慢的那个网站的请求,看它命中了哪条规则、使用了哪个策略。
- 命中的是兜底规则且指向代理,说明前面的国内规则没有覆盖这个域名。
- 检查国内规则集是否启用、是否已经更新。规则集过旧会遗漏新的域名。
- 想临时处理,可以给这个域名单独加一条直连规则,写法参考 Clash 规则怎么写;使用 v2rayN 的读者,路由规则的思路见 v2rayN 路由规则怎么设置。
规则里按地址范围判断归属的部分,依赖内核里的 GeoIP 数据。数据过期,也会造成判断偏差。
第三步:核对 DNS 设置
域名先要被解析成地址,才能被规则按地址判断。DNS 设置不当,会让国内域名“走远路”。
| 可能的问题 | 表现 | 处理思路 |
|---|---|---|
| 所有域名都交给远端解析 | 国内网站解析到较远的地址,访问变慢 | 让国内域名使用国内的解析服务器 |
| 虚拟地址模式与某些应用不兼容 | 个别应用打不开 | 把相关域名加入过滤列表 |
| 解析服务器填写有误 | 全部解析变慢或失败 | 回到客户端默认值再测 |
具体字段和写法依内核而不同,Clash 系用户可以读 Clash DNS 设置详解,改动前先保存一份原配置。
系统代理和 TUN 的区别也会带来差异
除了模式、规则、DNS,客户端接管流量的方式也有关系。系统代理只对支持代理设置的程序生效,国内的一些应用有自己的网络通道,根本不经过系统代理;TUN 则会接管更多程序的流量,包括原本不走代理的应用。如果你开了 TUN 之后国内应用变慢,说明这些应用的流量也进了客户端,需要靠规则把它们分回直连。两种方式的差别见 Clash 系统代理是什么。
哪些国内应用最容易受影响
不是所有国内服务都同样敏感。下面几类,在经过代理后更容易出现异常:
| 类型 | 常见表现 | 原因 |
|---|---|---|
| 银行、支付类应用 | 要求重新验证,或提示环境异常 | 请求来源地址与平时不一致,风控会更谨慎 |
| 视频、音乐类应用 | 缓冲、清晰度降低 | 流量绕到境外再回国内,路径变长 |
| 办公、会议类应用 | 画面卡顿、延迟升高 | 实时通信对路径长度特别敏感 |
| 购物、外卖类应用 | 页面加载慢,定位偏差 | 定位和地址判断被代理出口影响 |
遇到这些应用,首选办法是让它们直连,而不是反复调整节点。可以在规则里为相应域名添加直连规则;如果应用域名众多难以逐个添加,使用国内规则集会更省事,规则集的概念见 规则集。
三种常见写法要避开
自查时,有几种常见的错误做法,容易让问题更乱:
- 把所有规则都删了,只剩一条兜底:这样等于变相的全局模式。
- 同时启用多个来源的规则集:规则互相覆盖,优先级难以判断,出错时很难排查。
- 只改客户端,不检查订阅是否带有自己的规则:有些订阅在更新时会覆盖本地改动,改完要确认更新后是否保持。
怎么确认已经分流正常
改完设置后,用下面的方法验证,而不是凭感觉:
- 选两个国内网站和两个境外网站,作为固定的测试对象。
- 关闭梯子,访问四个网站,记下大致体验。
- 开启梯子(规则模式),再访问一遍。国内网站应该和关闭时差不多,境外网站应该能正常打开。
- 在客户端的连接记录里,确认国内网站显示为直连,境外网站显示为代理。
- 到 IP 与 DNS 检测导航 里的检测页看一下解析结果是否符合预期。
下一步
先把模式改回规则模式,如果问题没有消失,再看规则命中情况,最后核对 DNS。每一步只改一处,改完立刻复测。如果国内外网站都慢,说明不只是分流问题,转去 梯子速度慢怎么办 做整体对照。
这篇没有覆盖的
- 不同客户端的规则写法和菜单名称不同,本文只讲分流思路,具体操作请以所用客户端的当前文档为准。
- 本文没有任何国内网站在代理下的速度数据,是否变慢要靠你自己对比开关代理前后的体验。
- 规则集和地址库由第三方维护,是否有遗漏或过期无法在这里判断,需要自己更新后再验证。
国内网站变慢常见问题
开了全局模式,国内网站为什么会变慢?
全局模式会让几乎所有流量都经过代理,包括本来可以直接访问的国内网站。这些请求要先绕到代理节点,再回到国内,路径变长,速度自然下降,有时还会被国内网站识别为异常来源而要求验证。日常使用建议回到规则模式,由规则决定哪些走代理。
规则模式下国内网站依然慢,是规则的问题吗?
有可能。规则模式依赖规则集判断域名和地址的去向,规则集没有更新、缺少某些域名、或者最后一条兜底规则指向代理,都会让国内流量被送进代理。可以到客户端的连接或日志页面,看这个网站实际命中了哪条规则。
只有某一个国内应用慢,其他正常怎么办?
先确认这个应用走的是系统代理还是自己的网络通道。再看它的域名是否被规则漏掉。可以单独为这个应用或域名添加一条直连规则,改完观察效果。一次只加一条,方便确认哪一条起了作用。
DNS 设置会影响国内网站的速度吗?
会。国内域名如果被交给远端解析,可能得到离你很远的地址,访问就会绕路。合理的做法是让国内域名由国内的解析服务器解析,其余域名再按需处理。具体字段请参考所用内核的文档。
关闭梯子后国内网站就恢复了,说明什么?
说明慢的原因出在代理链路上,而不是你的本地网络。接下来按模式、规则、DNS 三步检查:先确认不是全局模式,再看国内域名是否命中直连规则,最后核对 DNS,通常能找到原因。
接着读
- 教程 · Clash 规则怎么写?rules 与 rule-providers 入门
- 教程 · Clash DNS 设置详解:fake-ip 与 redir-host 怎么选
- 教程 · Clash 系统代理是什么?和 TUN 模式的区别与选择
- 教程 · v2rayN 路由规则怎么设置?直连、代理与屏蔽的分流思路
- 术语 · GeoIP是什么意思
- 术语 · 分流是什么意思
- 排查 · 梯子速度慢怎么办?区分带宽、线路与客户端问题