Skip to content

[Rule] 分流规则 ​

规则按配置顺序匹配,首个命中结果决定目标出站。

语法 ​

ini
[Rule]
类型,匹配值,目标,选项
FINAL,目标

目标为内置出站、代理或策略组名称。逻辑子规则不填写目标。缺省为空列表;类型名使用下表的大写形式。

类型与取值 ​

类型匹配值行为与约束
DOMAIN域名精确匹配
DOMAIN-SUFFIX域名后缀匹配域名本身与子域名
DOMAIN-KEYWORD字符串域名关键词匹配
DOMAIN-WILDCARD通配符模式支持 *、?
DOMAIN-SET本地路径或 HTTP/HTTPS URL外部域名列表
IP-CIDRIPv4/IPv6 CIDR目标 IP 网段
IP-CIDR6IPv6 CIDRIP-CIDR 别名,仅接受 IPv6
SRC-IP-CIDRIPv4/IPv6 CIDR来源 IP 网段
GEOIP国家代码字符串GeoIP 数据库匹配
IP-ASNu32目标自治系统号
SRC-PORTu16来源端口
DEST-PORTu16目标端口
NETWORKTCP、UDP传输协议;Profile 模型保留原始字符串
URL-REGEX正则表达式HTTP 元数据中的 URL
USER-AGENT匹配模式HTTP 元数据中的 User-Agent
RULE-SET本地路径或 HTTP/HTTPS URL外部规则列表
AUTO-SET本地路径或 HTTP/HTTPS URL自动识别规则/域名集合
AND((子规则),(子规则))所有子规则命中
OR((子规则),(子规则))任一子规则命中
NOT((子规则))子规则不命中;恰好一个子规则
FINAL无匹配剩余流量
PROCESS-NAME字符串解析时记录 warning 并丢弃,不执行进程匹配

URL、User-Agent 规则依赖 HTTP 元数据。没有对应元数据时不能据配置文字推导其命中。

选项 ​

字段取值与单位默认值行为与约束
no-resolve独立标志或布尔值未设置独立标志等价于 true;true 时不为 IP 规则额外解析域名,false 时关闭该限制
pre-matching独立标志或布尔值false将内置 REJECT 目标的域名规则加入独立 DNS 前置拒绝列表;其他类型或目标忽略该标志
refresh-interval无符号整数,秒未设置外部资源刷新间隔;非法数字在此解析器中忽略

选项名称不区分 ASCII 大小写。no-resolve 与 no-resolve=true 等价;布尔值接受 true、yes、1 和 false、no、0,字母不区分大小写。非法布尔值解析失败。逻辑规则必须至少有一个子规则,NOT 多个子规则解析失败;目标引用在配置校验阶段检查。

前置拒绝 ​

前置列表独立于普通分流规则,仅包含显式启用 pre-matching 且目标为内置 REJECT 的顶层规则。 命名 reject 出站、策略组以及 REJECT-DROP、REJECT-NO-DROP、REJECT-TINYGIF 不进入前置列表。 普通规则保留原有顺序和出站行为;前置拒绝优先于普通规则及 Direct/Global 模式,因此普通规则中的 DIRECT 不能豁免前置拒绝。

仅 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-WILDCARD、DOMAIN-SET 构建专用的域名匹配项。 DOMAIN-SET 复用域名资源及其刷新结果。IP、端口、网络、逻辑组合、RULE-SET、AUTO-SET 和其他类型不参与前置匹配,仍按普通规则处理。

TUN 接管的 DNS 命中域名列表时,按 General 的 dns-reject-behavior 返回拒绝响应。 blackhole 返回固定预留的 FakeIP;TUN 收包只比较目标 IP 是否为该地址,命中便在传输层分发前静默丢弃。 TUN 不遍历前置或普通规则列表,不创建 TCP 状态、UDP 会话或上层连接。

pre-matching 与 pre-matching=true 等价;显式 false 禁用该规则的前置匹配。 布尔值与 no-resolve 使用相同语法,非法值解析失败。

示例 ​

前置拒绝示例:

ini
[General]
dns-reject-behavior = blackhole

[Rule]
DOMAIN-SUFFIX,ads.example,REJECT,pre-matching
FINAL,DIRECT

普通分流示例:

ini
[Rule]
DOMAIN,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
AND,((DOMAIN-SUFFIX,example.com),(DEST-PORT,443)),DIRECT
RULE-SET,https://example.com/rules.list,DIRECT,refresh-interval=3600
FINAL,DIRECT