1. 规则引擎的核心使命:彻底终结全局代理的粗暴时代
在规则引擎诞生之前,传统的 VPN 客户端只能进行粗暴的「全局代理」:
- 访问 Google 和 YouTube 时确实翻墙成功了;
- 但此时你访问微信、网银、Bilibili 或公司内网 OA 时,流量同样被迫绕道海外机房再折返回国!
- **恶果**:国内网页打开极慢、视频被限速、网银提示异地登录冻结、且白白消耗昂贵的海外专线流量配额。
**Clash 规则模式彻底终结了这一痛点**:它在本地机器植入了一台智能路由分流交换机。通过预先定义的规则集,精确实现「国内流量本地直连,海外流量科学代理,广告流量直接丢弃」。
💡 99% 的用户在 99% 的日常使用场景中,都应当始终保持「规则模式(Rule Mode)」。
2. 数据包生命周期:从发出到出境的完整流水线
一个数据包在 Clash 内部经历的完整生命历程:
```text
用户在浏览器输入网址 (如 www.google.com)
│
▼
1. 本地 DNS 调度阶段 (Fake-IP 立即返回 198.18.0.x 虚拟 IP)
│
▼
2. Inbound 接收阶段 (流量通过 mixed-port 或 TUN 网卡进入内核)
│
▼
3. 域名嗅探与还原 (Sniffer 提取出真实域名 www.google.com)
│
▼
4. Rules 规则匹配引擎 (从上至下逐行扫描 rules 列表)
├─ 命中广告规则? ──> 动作: REJECT (立即断开连接)
├─ 命中国内域名? ──> 动作: DIRECT (本机物理网卡直出)
└─ 命中海外域名? ──> 动作: PROXY (交付目标策略组)
│
▼
5. Outbound 出站阶段 (通过 VLESS/SS 协议发起 TLS 握手并出境)
```
核心特质在于 **「单向首个命中即终止(First Match Wins)」**,一旦在第 10 行命中了规则,第 11 行及其后面的所有规则直接跳过不执行。
bash
# 查看本地 rules 规则在内核中的加载状态与规则条数
curl -s -H "Authorization: Bearer 你的Secret" http://127.0.0.1:9090/rules | jq '.rules | length' 3. 规则设计三大基石:域名、IP 与兜底
一份健康的规则列表必须由三大层级严密构成:
1. **精确域名层(头部)**:高频使用的特定服务域名(如 OpenAI、GitHub),通过 `DOMAIN` 或 `DOMAIN-SUFFIX` 明确导流;
2. **广域地理 IP 层(中部)**:通过 `GEOIP,CN,DIRECT` 将所有国内公网 IP 一网打尽,确保国内小众网站也不误走代理;
3. **兜底终点层(尾部)**:最后一行必须是 `MATCH,PROXY`,让所有未被前述规则识别的未知海外小众域名安全走代理。
❓ 常见疑问与排查步骤
规则模式下看国内视频会消耗我的机场流量吗?
绝对不会。国内视频网站(如腾讯视频、爱奇艺、B站)命中 DIRECT 直连规则,流量直接从本地家庭宽带发出,完全不经过代理服务器,零流量消耗。
为什么某个国内小网站打不开或特别慢?
可能是因为该网站的域名未被包含在常用国内域名白名单中,被末尾的 MATCH 规则误送进了海外代理。在规则中为该域名添加一条 `DOMAIN-SUFFIX,xxx.com,DIRECT` 即可秒级解决。
规则模式需要经常手动修改吗?
不需要。现代客户端搭配 GEOSITE 和 rule-providers 动态规则集,后台每隔 24 小时自动更新全网最新的国内外分流域名列表,用户日常零维护。