写法总览
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 | 匹配 tcp 或 udp |
DSCP | 匹配 DSCP 标记,仅限 tproxy UDP 入站 |
RULE-SET | 引用规则集合,需要配置 rule-providers |
逻辑规则 & 子规则
AND / OR / NOT写法为 LOGIC_TYPE,((payload1),(payload2)),Proxy,payload 是规则类型和内容,比如 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"匹配。