规则类型及其作用

概览

chimera_client 中,规则决定由哪个出站组处理某条流量。规则按自上而下、首条命中优先的方式求值,这与 Clash-rs 和 Mihomo 的行为一致。

规则求值模型

常见的输入信号包括:

  • 域名指示信息(SNI / Host),
  • 解析后的目标 IP,
  • 目标端口 / 源端口,
  • 进程身份(平台支持时),
  • GeoIP / GeoSite 数据集,
  • 以及外部 rule-provider 集合。

常见动作:将流量路由到策略组,例如 DIRECTREJECTProxyAuto

常见域名规则

DOMAIN

精确主机名匹配。

rules:
  - DOMAIN,api.github.com,Proxy

DOMAIN-SUFFIX

后缀匹配(包含子域名)。

rules:
  - DOMAIN-SUFFIX,google.com,Proxy

DOMAIN-KEYWORD

基于子串的域名匹配。需谨慎使用以避免过度匹配。

rules:
  - DOMAIN-KEYWORD,openai,Proxy

IP 与网络规则

IP-CIDR

IPv4 目标前缀匹配。

rules:
  - IP-CIDR,1.1.1.0/24,DIRECT

IP-CIDR6

IPv6 目标前缀匹配。

rules:
  - IP-CIDR6,2606:4700::/32,DIRECT

SRC-IP-CIDR

源子网匹配(对路由器 / 网关场景很有用)。

rules:
  - SRC-IP-CIDR,192.168.50.0/24,GameProxy

GEOIP

国家 / 地区 IP 数据库匹配。

rules:
  - GEOIP,CN,DIRECT

GEOSITE

域名类别 / 列表匹配。

rules:
  - GEOSITE,geolocation-!cn,Proxy

端口与进程规则

DST-PORT

基于目标端口的路由。

rules:
  - DST-PORT,443,Proxy

SRC-PORT

基于源端口的路由。

rules:
  - SRC-PORT,60000-60100,DIRECT

PROCESS-NAME

匹配可执行文件名。

rules:
  - PROCESS-NAME,Telegram.exe,Proxy

PROCESS-PATH

匹配可执行文件完整路径。

rules:
  - PROCESS-PATH,/Applications/Discord.app/Contents/MacOS/Discord,Proxy

Provider 与逻辑规则

RULE-SET

引用由远程或本地 provider 管理的规则集合。

rule-providers:
  streaming:
    type: http
    behavior: domain
    url: https://example.com/streaming.yaml
    interval: 86400
    path: ./ruleset/streaming.yaml

rules:
  - RULE-SET,streaming,Proxy

MATCH

最终的全量兜底规则。

rules:
  - MATCH,DIRECT

推荐排序

  1. 安全拦截和明确绕过(REJECT、私有 / 本地 DIRECT)。
  2. 精确业务规则(DOMAINPROCESS-PATHIP-CIDR)。
  3. Provider / 类别规则(RULE-SETGEOSITE)。
  4. 宽泛启发式规则(DOMAIN-KEYWORDGEOIP)。
  5. 最终的 MATCH 兜底规则。

兼容性说明(clash-rs + Mihomo)

  • 首条命中优先:一旦规则命中,后续规则将被忽略。
  • 规则语法大体可移植,但实际行为仍依赖于 DNS 模式和入站类型。
  • 进程级规则对平台敏感;应在每个目标操作系统上分别验证。
  • GeoIP / GeoSite 的新鲜度会直接影响正确性。

最小混合示例

rules:
  - DOMAIN,internal.example.com,DIRECT
  - DOMAIN-SUFFIX,corp.example.com,DIRECT
  - PROCESS-NAME,Telegram.exe,Proxy
  - GEOSITE,category-ads-all,REJECT
  - GEOIP,CN,DIRECT
  - RULE-SET,streaming,Proxy
  - MATCH,Auto

运维建议

  • 保持规则意图清晰;避免在列表前部放置相互重叠的宽泛规则。
  • 对规则 provider 及其刷新间隔进行版本控制。
  • 在调试错配时开启连接决策日志。
  • 应联合验证 DNS 策略和规则策略,尤其是在 fake-IP / TUN 场景下。