第 5 章:智能分流规则系统 (Rule System)
规则系统是整个代理引擎的大脑。它根据每一个请求的目标域名、目标 IP、端口、网络协议以及发起进程,决定数据包该直连、走代理还是直接丢弃。
一、 规则匹配第一准则:自上而下,命中即止
核心执行准则:
规则列表严格按照从第一行到最后一行的顺序线性求值。一旦某个网络请求命中了某一行规则,引擎将立即采纳该规则所指定的策略,并终止对后续所有规则的匹配判定。
因此,规则的编写必须遵循「特殊规则在前,宽泛规则在后」的顺序。例如针对具体的反广告规则或特定主机名规则应当置于顶部,而大范围的 GEOIP,CN 与最后的 FINAL 兜底规则必须置于末尾。
二、 规则类型全览与语法说明
| 规则类型 | 语法示例 | 匹配逻辑与行为 |
|---|---|---|
| DOMAIN | DOMAIN,api.apple.com,DIRECT |
完整域名完全匹配。只有目标主机名严格一致时才命中。 |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,google.com,Proxy |
域名后缀匹配。匹配 google.com 自身及其所有子域名(如 mail.google.com)。 |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,netflix,Streaming |
关键字模糊包含匹配。目标域名中包含该子串即命中。 |
| DOMAIN-SET | DOMAIN-SET,https://rules.com/ad.txt,REJECT |
引用外部纯文本文件列表,单文件可承载数十万条域名,以极高内存效率并发判定。 |
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
目标 IPv4 子网段掩码匹配。 |
| IP-CIDR6 | IP-CIDR6,2001:db8::/32,DIRECT,no-resolve |
目标 IPv6 子网段匹配。 |
| GEOIP | GEOIP,CN,DIRECT |
基于 MaxMind GeoIP 离线数据库判断目标 IP 的国家归属。 |
| PROCESS-NAME | PROCESS-NAME,curl,DIRECT |
精准根据发起请求的 macOS 宿主应用程序或二进制文件名进行匹配。 |
| DEST-PORT | DEST-PORT,22,DIRECT |
按请求的目标服务端口(如 SSH 的 22 端口、DNS 的 53 端口)进行匹配。 |
| FINAL | FINAL,Proxy |
最终兜底规则。当上述所有规则均未命中时的唯一默认策略。每个配置文件末尾必须且只能有一个 FINAL 规则。 |
三、 深度解析:为何必须关注 no-resolve 修饰符?
避免 DNS 泄漏与请求卡顿的关键:
在
IP-CIDR 和 GEOIP 规则后,强烈建议根据需要显式添加 no-resolve 参数。
当一个应用发起基于域名的 HTTP 请求(例如访问 https://x.com)时:
- 若规则未带
no-resolve:引擎在比对到GEOIP,CN时,发现手里只有域名没有 IP,便会被迫在本地立刻发起一次 DNS 解析请求以获得该域名的真实 IP,随后再判定 IP 是否在境内。这不仅会导致本地 DNS 泄漏,更会使境外域名的首次连接产生额外几百毫秒的阻塞延迟。 - 若规则带有
no-resolve:对于纯域名发起的连接请求,引擎将直接跳过该条 IP 规则,继续向下匹配后续的域名规则或最终的FINAL。只有直接通过 IP 地址发起的直连请求(如直接访问http://1.1.1.1),才会触发该条规则的比对。

AI赋能出海: 专业外贸独立站与智能解决方案提供商