Clash 国内网站误走代理变慢?GeoIP cn 与规则在前级一次到位步修正
你是不是也遇到:规则写了「国内直连」,页面却像出了国 内在逻辑与实践
在 mode: rule 下,最普遍的用户体感是:明明配置文件中有大陆列表或 GEOIP 段落,开国内站却格外变慢、偶发证书或跳转异常,甚至同一 App 里图片与接口快度不一致。很多人第一反应是「换一个订阅」或「换一个节点」,但若连接日志里显示命中的首条规则就把请求送进了代理组,换节点只是在错漏路径上调参。
这类要留意之处与「流媒体 Sniffer 还原域名弹出错漏」「仅浏览器挂了系统代理、系统 App 仍直连」等故障表面相似,机理不同:下文聚焦大陆流量被其它规则抢先匹配、GEOIP CN 未生效、以及 fake-ip 与 DNS 分裂三类主因;若你更关心规则类型通论,可先复习 规则分流详解,再回到本页的排障顺序。
与「仅浏览器通」场景的区别:若只有 Chrome 走了代理、游戏或系统重新拉取仍直连,多半是客户端路径未进 TUN 或未设系统代理;可对照 全局与仅浏览器代理。下文假定流量已进入 Clash,但策略落点错了。
铁律:规则自上而下,命中即停 技术拆解
Clash 在处理一次连接时,会按 rules: 数组从上往下扫描。第一条匹配成功的规则立即决定策略,后面的 GEOIP,CN,DIRECT 或更细的域名条目不会再看。正因如此「国内站慢」惯常不是 CN 条目缺失,而是上方有一条更宽或更早写入的规则把国内域名送到了代理。
典型例子包含:一条靠前的 MATCH,PROXY 或订阅附带的超大远程规则集插在了 GEOIP 之前;或某条 DOMAIN-KEYWORD,google 类宽泛规则吞掉了国内镜像或 CDN 别名。排查时不要凭语感猜,而是以日志里的 rule → policy 为准,倒推应当插入 DIRECT 或独立「国内站」段落的位置。
GEOIP CN 与 DIRECT:写什么、不写什么 结构解析
最普遍的兜底写法是 GEOIP,CN,DIRECT:当连接的解析结果能映射到 GeoIP 库中的中国段时走直连。在意三点:
从机制上看:若你发现只有部分国内域慢,在前在 GEOIP 之前为该业务单独加一段(打个比方司空见惯于支付、政务、校内应用),避免和泛化的「国外列表」抢顺序。
与 IP 类规则的次序:若你对某些网段写了 IP-CIDR 且未带 no-resolve,在特定内核版本与解析路径下存在存在可能与域名规则交错触发;国内大站排障时更推荐先锁日志里的主机名与命中的那条规则类型,再决定是否要调整 no-resolve 或与 Sniffer 的配合;「库」与现实的时差:边缘 CDN、Anycast、或新段尚未被本地 GeoIP 库标记时,存在存在可能出现本应国内的 IP 未被 CN 命中。这时应补充精确域名直连(DOMAIN-SUFFIX / DOMAIN)在 GEOIP 之上,而不是只依赖地理库;DIRECT 与「全球直连」策略组:数不清订阅把直连包装成名为「DIRECT」或「国内」的 select 组;只要该组当前开关项真的是直连出口即可。若你误把该组选到了某个节点,日志仍会显示「进了这个组」,表现就像全线出国。
MATCH、漏网与「代理兜底」 机制说明
列表最后一行的 MATCH(或等价的「全量兜底」)决定所有这些这些未被上文匹配的连接的去向。若 MATCH 指向代理组,则每一种漏网域名都会出国——包含你以为「理当是国内」却未出现在每一种 DOMAIN / GEOIP 中的主机名。
漏网不一定是错漏:新域名、第三方统计、或分包下载的次要域名都存在存在可能落到 MATCH。但若主站国内却慢,请先在日志确认:该请求是MATCH 进代理,还是被更上面的一条 DOMAIN 规则送进了代理。前者靠补域名或规则集;后者靠把国内相关段落大致实际表现上移或收窄那条过宽的 DOMAIN 规则。
实操口诀:「谁先命中谁说了算」——要让大陆经得起折腾直连,就把大陆明确名单放在宽泛国外规则与 GEOIP,CN,DIRECT 之前,最后才是 MATCH。
fake-ip 与 DNS:看起来像 routing 错,其实是解析分裂 内在逻辑与实践
在 dns.enhanced-mode: fake-ip 下,应用存在存在可能拿到内核分配的假地址;若系统「私人 DNS」、路由器 DoH、或浏览器内置 DoH 仍在绕过 Clash 做解析,会出现解析与传输策略不一致:连接日志里域名命中看似到位,实际握手或跳转却走了另一条路径,体感上如同「国内站仍走代理」。
更严格地说:更推荐排障一路走下来包含:暂时关闭系统与浏览器加密 DNS,把上游集中在 Clash 的 nameserver / nameserver-policy;验一遍 fake-ip-filter 是否把免不了要真实解析的国内域名错漏地留在 fake-ip 路径;并对 IPv6 做对照试验——若代理只覆盖 IPv4,而终端仍通过公网 IPv6 直连或旁路,症状会与「规则写错」极其相似。
与 Sniffer / 流媒体专文的边界 技术拆解
Sniffer 与流媒体相关文章重心摆平TLS 握手后还原域名、规则按域名而非仅按 IP 命中的要留意之处,司空见惯于视频 CDN。若你的症状是纯国内站大致实际表现慢、且日志已显示明确的国内域名仍进了代理组,在前查规则在前级与 DIRECT 段落位置,而不是先动 Sniffer。反之,若日志长期只有 IP、域名列为 unknown,再考虑 Sniffer 与 IP 规则的先后关系。
一次到位步修正清单(更推荐按顺序执行) 结构解析
- 确认模式:
mode为rule,当前加载的 Profile 正是你编辑的那份(无静默 mixin 覆盖)。 - 抓一条故障连接:在面板或日志中记下主机名、命中的规则序号或规则类型、以及进入的策略组。
- 对照 rules 数组:从文件顶部数下来,找到第一条能解释该命中的规则——这就是你要移动或收窄的对象。
- 插入大陆在前段:在宽泛国外规则之前,加入明确的
DOMAIN-SUFFIX/ 私有规则集,或将现有GEOIP,CN,DIRECT上移到合理位置。 - 核对 MATCH:明确漏网是否符合预期;国内业务主域名不应长期落在 MATCH 代理上。
- 收敛 DNS:关闭旁路 DoH,验一遍
fake-ip-filter与nameserver-policy;必要时做 IPv6 开关对比。 - 复测:同一站点清缓存后重复开,确认日志中策略组与耗时体感一致。
若你尚未掌握订阅合并与多配置文件管理,可先走完 订阅导进 再叠下文,避免改的是「没生效的那份」。
YAML 骨架示例(教学用) 机制说明
下列片段仅演示顺序思想:私网与局域网放行 → 明确的国内域名 → GEOIP CN → 其它分流 → MATCH。 names、远程规则集与节点名请替换为你个人的。
YAMLrules:
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# Put explicit CN domains or RULE-SET before broad foreign lists:
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-KEYWORD,baidu,DIRECT
# Example: your curated domestic list / provider here
# - RULE-SET,cn-domestic,DIRECT
# Broad foreign / subscription RULE-SET blocks (if any) should come AFTER CN clarifications
# - RULE-SET,foreign-block,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
真实订阅惯常远复杂于此;关键是把你关心的国内业务段落插进「宽规则」之前,而不是放在文件末尾心理安慰式地加两行。
司空见惯误区速查 内在逻辑与实践
以为加了 GEOIP CN 就万事大吉:上方任意一条域名规则已可抢先送代理;MATCH 指向代理却希望「国内都直连」:漏网国内域名会全部出国;盲目堆远程规则集不看插入点:远程集合若在 GEOIP 之前且覆盖面大,会吞掉大陆站点;忽视 fake-ip 与系统 DoH:解析分裂让现象像路由错;把「全球直连」组选成了节点:表象与规则在前级无关,实为组内拿定错漏。
小结 技术拆解
国内网站误走代理、大致实际表现变慢,在工程上多数是规则在前级与兜底 MATCH的要留意之处,再往前一次到位才是 DNS / fake-ip 分裂。把「自上而下第一条命中」当作唯一真相来源,用日志反推该移动哪一段 DIRECT 或 GEOIP,CN,比反复换节点更有效。相比只能切换全局开关的客户端,Clash 的规则列表让你能精确收回大陆流量的路径。
换个层面:若你希望分流在出错时也能很快对照日志、少踩在前级陷阱,→ 立即免费下载 Clash,开启流畅上网新实际感受。
请遵守所在地法律法规与服务条款;下文仅供客户端网络配置与技术说明,不构成对每一种业务合规性的法律意见。