文档 配置 路由规则

路由规则

rules 数组是分流的核心,从上到下逐条匹配,匹配到第一条规则就使用它指定的出站,剩下的规则不再继续判断。

写法总览

config.yaml YAML
rules:
  - DOMAIN,ad.com,REJECT
  - DOMAIN-SUFFIX,google.com,auto
  - DOMAIN-KEYWORD,google,auto
  - DOMAIN-WILDCARD,*.google.com,auto
  - DOMAIN-REGEX,^abc.*com,PROXY
  - GEOSITE,youtube,PROXY

  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR6,2620:0:2d0:200::7/32,auto
  - IP-ASN,13335,DIRECT
  - GEOIP,CN,DIRECT

  - DST-PORT,80,DIRECT
  - PROCESS-NAME,curl,PROXY
  - NETWORK,udp,DIRECT

  - RULE-SET,providername,proxy
  - AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT
  - SUB-RULE,(NETWORK,tcp),sub-rule

  - MATCH,auto

规则按从上到下的顺序匹配,排在前面的规则优先级更高。如果请求是 UDP,但匹配到的代理节点没开 udp: true,会继续往下匹配下一条规则,而不是直接失败。

域名类

类型说明
DOMAIN匹配完整域名
DOMAIN-SUFFIX匹配域名后缀,如 google.com 匹配 www.google.com/mail.google.com/google.com,但不匹配 content-google.com
DOMAIN-KEYWORD域名关键字匹配
DOMAIN-WILDCARD通配符匹配,仅支持 *(零个或多个字符)和 ?(一个字符)——注意这跟配置文件其他地方用的 Clash 风格通配符不是一套语法
DOMAIN-REGEX域名正则表达式匹配
GEOSITE匹配 Geosite 数据库内的域名分类,部分数据来自 v2fly/domain-list-community

IP 类

类型说明
IP-CIDR / IP-CIDR6匹配 IP 地址范围,两者效果相同,IP-CIDR6 只是别名
IP-SUFFIX匹配 IP 后缀范围
IP-ASN匹配 IP 所属 ASN(自治系统号)
GEOIP匹配 IP 所属国家代码
SRC-GEOIP / SRC-IP-ASN / SRC-IP-CIDR / SRC-IP-SUFFIX对应的来源 IP 版本,匹配发起连接的来源而不是目标

端口 / 入站 / 进程 / 其它

类型说明
DST-PORT / SRC-PORT匹配目标/来源端口范围
IN-PORT / IN-TYPE / IN-USER / IN-NAME匹配入站端口/类型/用户名/名称
REMATCH-NAME匹配 Rematch 出站写入的名称
PROCESS-PATH / PROCESS-PATH-WILDCARD / PROCESS-PATH-REGEX用完整进程路径匹配(三种写法:完整路径 / 通配符 / 正则)
PROCESS-NAME / PROCESS-NAME-WILDCARD / PROCESS-NAME-REGEX用进程名称匹配,Android 上可匹配包名
UID匹配 Linux 用户 ID
NETWORK匹配 tcpudp
DSCP匹配 DSCP 标记,仅限 tproxy UDP 入站
RULE-SET引用规则集合,需要配置 rule-providers

逻辑规则 & 子规则

AND / OR / NOT

写法为 LOGIC_TYPE,((payload1),(payload2)),Proxypayload 是规则类型和内容,比如 DOMAIN,google.com。注意括号的使用,多个条件要用双重括号包裹。

AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT
OR,((NETWORK,UDP),(DOMAIN,baidu.com)),REJECT
NOT,((DOMAIN,baidu.com)),PROXY
SUB-RULE

匹配到子规则集合,详见独立的 子规则 页面。

MATCH

匹配所有请求,无需任何条件,通常放在规则列表最后一条做兜底。

附加参数

no-resolve仅目标 IP 规则

域名开始匹配"目标 IP"类规则时,mihomo 会先触发一次 DNS 解析来检查解析出的 IP 是否匹配该规则;加上 no-resolve 可以跳过这次解析。如果更早的规则已经触发过解析,即使加了 no-resolve 依然会用已有的解析结果去匹配。

src仅目标 IP 规则

把"目标 IP"匹配转换为"来源 IP"匹配。