搜索 K
Appearance
如果你只想带走三句话:
RULE-SET(纯 IP-CIDR 堆叠)在弱鸡路由器上是灾难,现代 Clash.Meta / Mihomo 内核应当优先走 GEOSITE(域名分类库)+ 精简 GEOIP 的组合路线。domain / ipcidr / classical)和 DNS 分流策略。90% 的"国内网站走了代理""Netflix 提示代理检测"问题,根因都在 DNS 而非规则。如果不想折腾,直接抄作业:用 Mihomo 内核 + Loyalsoldier 的 GeoSite 规则 + 自己的 DNS 分流 + 一套干净的光速云 IEPL 节点,三十分钟出成品,长期稳定。
要调优规则集,先得知道内核怎么解析它。以目前主流的 Mihomo(原 Clash.Meta) 为例,一条流量的完整判定链路大致是:
应用发起连接 → 内核 DNS 拦截(若开启)→ 命中域名规则? → 命中 IP 规则?
→ 策略组选择 → 代理协议栈封装 → 出口关键点有三个,绝大多数"玄学分流问题"都出在这三条上:
rule-providers 的三种行为模式 | 模式 | 匹配对象 | 典型用途 | 内存开销 |
|---|---|---|---|
domain | 纯域名 | GEOSITE 类分类 | 低 |
ipcidr | 纯 CIDR | GEOIP 类国家段 | 中 |
classical | 混合(可含 DOMAIN-SUFFIX、IP-CIDR) | 传统 ACL4SSR 全家桶 | 高 |
Mihomo 会把 domain 与 ipcidr 类型的规则集预编译成 域名 Trie 树 / CIDR 有序区间,查询复杂度接近 O(log n)。而 classical 类只能逐行线性匹配,行数一多就慢。这就是为什么社区从 2023 年之后集体转向 GeoSite + GeoIP 双库。
v2fly/domain-list-community,是按域名分类的库,每类对应一个文本文件。比如 geosite:netflix、geosite:google、geosite:cn。geoip:cn、geoip:private。一个常见误区:以为 GEOSITE 能覆盖所有情况。实际上纯 IP 直连的场景(如某些 CDN 回源、游戏内 UDP)只能靠 GEOIP 兜底;而纯域名走 CDN 的场景(如 Cloudflare 后面的站点)GEOIP 会误判。正确的做法是把 GEOSITE 放前面、GEOIP 放后面做兜底,而不是二选一。
Mihomo 的 dns.nameserver-policy 允许按域名指定不同的 DNS 上游。如果你的 DNS 走的是国内递归服务器,那 geosite:google 会解析出一个国内 CDN 的假 IP,然后被 GEOIP,CN,DIRECT 命中直连——这就是"明明写了代理规则却还是直连"的元凶。
判定口诀:规则决定走向,DNS 决定 IP,IP 决定兜底。
下面这张矩阵基于 2026 年 Q1 的规则集实测数据(节点环境:光速云 IEPL 香港 + 新加坡双出口,Mihomo v1.19)。
| 对比维度 | ACL4SSR | Loyalsoldier/clash-rules | 自建 GeoSite 方案 |
|---|---|---|---|
| 维护频率 | 中等(多人维护,偶有延迟) | 高(社区高频更新) | 完全自控 |
| 规则总行数(全量) | 约 18–30 万行(含广告库) | 约 6–12 万行 | 按需 1–3 万行 |
| 默认策略组细分度 | 极高(15+ 组) | 中等(7–9 组) | 自定义 |
| 广告拦截能力 | 强(内置 banAD) | 弱(需自行引入) | 视引入源而定 |
| 流媒体定向 | 内置 Netflix/Disney+ 分组 | 需手动整理 | 完全自定义 |
| 首次加载内存占用(路由端) | 约 90–180MB | 约 40–70MB | 通常 < 40MB |
| 一次全量匹配延迟(桌面端) | 5–12ms | 2–5ms | 1–3ms |
| 误杀率(本人实测抽样 500 域名) | 约 3.1% | 约 1.4% | 取决于自维护质量 |
| 小白友好度 | ★★★★★ | ★★★☆☆ | ★★☆☆☆ |
| 推荐内核 | Mihomo / Clash Premium | Mihomo | Mihomo |
结论:如果你是软路由上跑,内存紧张(比如 GL.iNet 4G RAM 以内的机器),优先 Loyalsoldier 或自建;如果是桌面客户端、内存充裕,ACL4SSR 的省心程度无可替代。
直接选 ACL4SSR 在线订阅,config.yaml 里引用官方 ruleset:
rule-providers:
ACL4SSR_Online_Full:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full.ini"
path: ./ruleset/ACL4SSR_Online_Full.yaml
interval: 86400配置简单、策略组开箱即用。代价是加载稍慢、内存占用偏高。
推荐 Loyalsoldier + GEOSITE 精简方案:
rule-providers:
reject:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
rules:
- GEOSITE,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,proxy,🚀 节点选择
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,🐟 漏网之鱼需要一个专门分流到原生 IP 节点的策略组。以光速云为例,其后端已经按地区给节点打了标签,只需要在规则里指定:
rules:
- GEOSITE,netflix,🎬 流媒体
- GEOSITE,disney,🎬 流媒体
- GEOSITE,hbo,🎬 流媒体
- GEOSITE,openai,🤖 AI 服务
- GEOSITE,anthropic,🤖 AI 服务然后 🎬 流媒体 组只挂原生 IP 节点。这样既保证解锁率,又不会污染其它流量。
Office 365、Zoom、Slack、GitHub 这类"需要稳定低延迟但不必频繁换区"的,建议单独建 💼 办公 组,固定挂延迟最低的 IEPL 节点,而不是走轮询负载均衡。办公流量的敌人是抖动,不是带宽。
sub 链接,存在节点泄露风险。本地跑 subconverter 或者直接用原订阅。macOS 的坑集中在 DNS:
# 查看当前 DNS 配置
scutil --dns | grep "nameserver\|if_index"
# 刷新 DNS 缓存
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder如果你发现更新规则后不生效,先刷 DNS 缓存,90% 能解决。Stash 用户注意关闭"增强模式下的系统 DNS 覆盖",否则规则里的 nameserver-policy 会被绕过。
rule-providers 里的 interval 拉到 86400 以上,iOS 后台刷新有限制,频繁拉取反而失败。allow-lan,除非你真的需要局域网共享。unified-delay: true,测速更准。mihomo 插件的,把 rule-providers 的 path 指到 /tmp 之外,重启不丢。规则不生效,按下面步骤一条条排。
Mihomo 开启日志:
# 日志级别设为 debug 或 info 后查看
tail -f /tmp/mihomo.log | grep "match Rule"日志里会显示 match DomainSuffix(xxx.com) using DIRECT 这类信息,一眼定位。
# 对目标站点做 MTR,看第一跳和路由走向
mtr -rwzbc 20 api.openai.com
# tcping(若为 TCP 服务)
tcping -t 5 chat.openai.com 443
# macOS/Linux 通用,看 DNS 解析结果
dig +short google.com @1.1.1.1判定表:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 第一跳直接是运营商网关,其余全超时 | 规则未命中代理 | 检查 GEOSITE / RULE-SET 顺序 |
| 走代理但延迟 300ms+ | 节点本身差或走了远区 | 换低延迟 IEPL 节点 |
| DNS 解析返回国内 IP 但规则写了代理 | DNS 污染 / 前置解析 | 配置 nameserver-policy |
| 只有 UDP 流量穿透失败 | 未开启 TUN | 开 TUN 或 udp: true 节点 |
# 只抓 443 端口的握手包,观察 SNI
sudo tcpdump -i utun -n -A 'tcp port 443 and (tcp[((tcp[12] & 0xf0) >> 2)] = 0x16)' | grep -i "sni"如果 SNI 露出来的是游戏、银行等国内域名却被代理了,就是规则集误杀。
# 查询当前连接与命中规则
curl -H "Authorization: Bearer <your-secret>" http://127.0.0.1:9090/connections | jqjq 过滤出 rule 字段,比肉眼翻日志快十倍。
| 坑点 | 表现形式 | 真相 | 规避方式 |
|---|---|---|---|
| 巨型规则集吹牛 | "30 万条精准规则" | 大量重复/失效域名 | 看仓库 commit 频率,不是行数 |
| 假流媒体解锁 | 规则漏给流媒体分配节点 | 其实是机场本身解锁 | 单独测 Netflix 全区 |
| 伪原生 IP | 声称"原生"实为广播 | ASN 一看就穿 | whois 查 ASN 归属 |
| 订阅转换站回传日志 | 大量"免费转换"站 | 节点被收集卖给第三方 | 用本地 subconverter |
| 一键脚本藏毒 | "全自动规则优化脚本" | 塞挖矿/后门 | 只从官方仓库拉 |
| 空口 GEOSITE | 号称黑科技其实是 public 库 | 无差异 | 直接看库来源 |
| 倍率陷阱 | 规则集里偷偷走 x5 倍率节点 | 账单燃烧 | 策略组只挂 x1 节点 |
这个行业的通病���:把"配置复杂度"当"技术含量"卖给你。其实好的规则集就一个标准——你有能力审计它。
Q1:规则更新了但浏览器还是走代理,重启也没用。 先看系统 DNS 缓存(见 5.2 的 dscacheutil),再看浏览器自己的 DNS(Chrome 的 Secure DNS 会绕过系统)。把浏览器的"安全 DNS"关掉,或改成走系统解析。
Q2:Netflix 显示"使用代理/不受支持"。 两个原因:(a) 节点被风控识别为非住宅 IP;(b) 规则把 Netflix 分到了非原生节点组。先确认 GEOSITE,netflix 挂的是哪组,再测节点本身。在光速云环境下,我们实测将 Netflix 挂在标注了"流媒体优化"的香港节点,全区解锁成功率约 92%。
Q3:ChatGPT 能打开但一直转圈。 这不是规则问题,是出口 IP 被 OpenAI 标记。换一个原生 IP 节点即可。别怀疑规则。
Q4:iOS 上 YouTube 走直连,Windows 上正常。 iOS 的 Stash 默认只加载 domain 类规则,如果你用了 classical 的 ACL4SSR 全量,可能未完全加载。切换到 GEOSITE 或者确认配置已同步。
Q5:软路由上路由器重启后规则热更新失败。rule-providers 的 path 指向了 tmpfs(/tmp/)。改成持久化目录,比如 /etc/mihomo/ruleset/。
Q6:Steam 下载走代理导致速度只有 1MB/s。 Steam 下载 CDN 在国内有节点,加一条:
- DOMAIN-SUFFIX,steamcontent.com,DIRECT
- DOMAIN-SUFFIX,steamstatic.com,DIRECT瞬间回到满速。
Q7:公司网络下规则完全失效。 公司可能做了透明代理 / SSL 中间人。这不是规则能解决的,需要走 IEPL 专用隧道(这也是大多数人选机场而不是自建的原因)。
最后一句真心话:规则集优化的尽头不是找一份"最强配置",而是搭出一套自己能维护、能排障、能迭代的结构。搞懂底层机理,比抄一百份配置文件都值。
如果你连规则集都懒得折腾,就把精力放在节点质量上——一套干净的原生 IEPL 节点 + 一份主流 GEOSITE 规则,覆盖 95% 用户的所有需求。 这就是我们推荐光速云的底层逻辑。