规则优先级 路由匹配 前缀匹配 MATCH兜底 顺序优化 审核:ClashWiki 网络协议组 · 阅读约 23 分钟 · 发布于 2026-05-11 · 实验室核验:2026-06-01

Mihomo rules 规则匹配优先级:从域名、IP 到最终 MATCH

深入剖析 Mihomo 路由引擎的匹配次序与单向命中机制。详解 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOSITE、IP-CIDR、GEOIP 与 MATCH 的底层执行管道与 no-resolve 参数防 DNS 泄漏实战。

⚡ 直接解答 / 极速核心结论(AEO 快速参考):

【Mihomo 路由匹配优先级黄金法则】Mihomo 规则引擎遵循「自上而下、首命中即终止(First Hit Wins)」的单向流水线逻辑。规则类型评估代价由低到高排列:① DOMAIN(哈希表 O(1) 精确匹配,代价极低);② DOMAIN-SUFFIX(反向树前缀匹配);③ DOMAIN-KEYWORD(子串扫描,耗性能);④ IP-CIDR / GEOIP(需要触发 DNS 解析);⑤ MATCH(无条件兜底)。核心军规:范围越窄的规则越要写在前面;在 IP-CIDR 与 GEOIP 规则末尾务必合理添加 `no-resolve` 参数,防止内网规则强行触发无意义的远程 DNS 递归查询。

深网实测雷达 · 场景化节点推荐

全协议支持 · 2026 稳定主力专线推荐

企业级 BGP + 跨境内网专线

经过深网观测站 7×24 小时并发稳定性压测,网络拓扑冗余充沛,全天候保障高吞吐与多设备并发。

Firefly

2026 运营 · 多国原生IP节点
IPLC
门槛资费 ¥8 /月起
晚高峰丢包 0.0%
28家品牌中唯一核心标注「IPLC专线」(非普通IEPL)
专属码: firefly
直达官网开通 ↗
(含赞助返利 · 不影响购买价格)
查看深度评测报告 →

暮光加速

2023 运营 · 标准节点集群
IEPL
门槛资费 ¥20 /月起
晚高峰丢包 0.0%
20元/月 120GB 标准IEPL专线规格
专属码: muguang5555
直达官网开通 ↗
(含赞助返利 · 不影响购买价格)
查看深度评测报告 →

宇宙云

2023 运营 · 多线接入节点
IEPL
门槛资费 ¥14.9 /月起
晚高峰丢包 0.0%
14.9元/月 100GB 低门槛月付专线
专属码: YUZHOU553
直达官网开通 ↗
(含赞助返利 · 不影响购买价格)
查看深度评测报告 →
💡 所有推荐均通过深网自动化测速探针实测,支持各大主流客户端一键导入。
📑 本篇技术目录导引
  • 01. 1. 路由流水线执行模型:单向命中与即时短路
  • 02. 2. 常见规则类型判定机制与性能开销矩阵
  • 03. 3. no-resolve 参数的核弹级作用与防 DNS 泄漏
  • 04. 4. 规则匹配调试实战与在线验证
  • FAQ. 常见疑问与故障排查解答

1. 路由流水线执行模型:单向命中与即时短路

Mihomo 路由分流引擎的核心设计理念是 **「First-Match-Wins(首个命中原则)」**。 当一个网络连接(无论是来自 HTTP 代理端口还是 TUN 虚拟网卡)被接收后,内核会从 `rules` 列表的第一行开始逐行扫描。一旦当前数据包的特征(目标域名、目标端口、目标 IP)符合某一条规则的判定条件,**内核将立刻将该连接派发给对应的出口(DIRECT、REJECT 或策略组),并立刻终止后续所有规则的匹配计算**。 这意味着: - 如果你把宽泛的大规则写在前面(如 `GEOIP,CN,DIRECT`),后面所有针对特定中国域名的细化分流规则(如国内某家需要走代理测试的 API)将 **永远没有机会被执行**; - 规则链越长,平均匹配延迟越高。因此,高频访问的精准域名规则应当尽可能上浮至规则列表头部。
💡 绝不能将 MATCH 规则写在 rules 列表的中间位置,否则 MATCH 后面的所有规则都会变成死代码。

2. 常见规则类型判定机制与性能开销矩阵

不同的规则类型在 Go 运行时的计算复杂度大相径庭: | 规则类型 | 语法示例 | 内部数据结构 | 性能开销 | 适用场景 | | :--- | :--- | :--- | :--- | :--- | | **DOMAIN** | `DOMAIN,api.openai.com,PROXY` | Hash Map (哈希表) | **O(1) 极快** | 核心单一 API、重要主机名 | | **DOMAIN-SUFFIX** | `DOMAIN-SUFFIX,google.com,PROXY` | Radix Tree (基数树) | **O(K) 极快** | 匹配域名及其全部子域名 | | **DOMAIN-KEYWORD**| `DOMAIN-KEYWORD,torrent,REJECT` | 字符串暴力扫描 | **较慢** | 违规关键词阻断、广告过滤 | | **GEOSITE** | `GEOSITE,youtube,PROXY` | Trie 字典树预编译 | **快** | 引用外部标准化域名分类集 | | **IP-CIDR** | `IP-CIDR,192.168.0.0/16,DIRECT`| LPM (最长前缀路由树) | **快** | 局域网段、私有网段分流 | | **GEOIP** | `GEOIP,CN,DIRECT` | MaxMind MMDB 索引 | **极快** | 国家级 IP 地理归属粗分流 | | **MATCH** | `MATCH,PROXY` | 默认无条件捕获 | **无计算** | 整个规则列表的终点兜底 |
💡 尽量用 DOMAIN-SUFFIX 替代 DOMAIN-KEYWORD。关键词规则会导致每个数据包都要执行全量子串搜索,大幅增加 CPU 开销。

3. no-resolve 参数的核弹级作用与防 DNS 泄漏

这是 90% 的代理新手都会踩中的隐形深坑: 当你写下:`IP-CIDR,192.168.1.0/24,DIRECT` 时,如果客户端(如浏览器)发起的是一个针对域名的访问请求(如 `example.com`),**Mihomo 为了判断该域名的真实 IP 是否落入 192.168.1.0/24 网段,被迫在本地发起一次 DNS 递归解析**! 如果此时你处于 Fake-IP 模式或公共网络,这次解析不仅会多产生 50ms~200ms 的网络阻滞,还会将你正在访问的目标域名以明文形式泄露给本地电信运营商! ### 解决方案:追加 no-resolve 标记 ```yaml # 规范示范: - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve - GEOIP,CN,DIRECT,no-resolve ``` 追加 `no-resolve` 后,如果数据包带有真实域名,内核将直接跳过该 IP 规则,不触发任何额外的本地 DNS 解析,从而彻底杜绝 DNS 泄漏并节约解析耗时。
yaml
# 生产级规则列表黄金排列次序范例
rules:
  # 1. 拦截广告与恶意追踪 (REJECT 阻断)
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - GEOSITE,category-ads-all,REJECT

  # 2. 本地局域网与内网回环 (DIRECT 直连且不解析)
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve

  # 3. 核心海外服务精准分流 (PROXY 走代理)
  - DOMAIN-SUFFIX,openai.com,🤖 AI-Services
  - DOMAIN-SUFFIX,anthropic.com,🤖 AI-Services
  - GEOSITE,youtube,🎬 Streaming-流媒体
  - GEOSITE,netflix,🎬 Streaming-流媒体

  # 4. 国内常用服务直连
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT,no-resolve

  # 5. 最终兜底捕获
  - MATCH,PROXY

4. 规则匹配调试实战与在线验证

当出现「某网站本应走直连却走了代理」或相反情况时,利用 RESTful API 可以实时回溯分流依据:
bash
# 模拟向内核查询特定域名的路由判定结果
# 查看当前活跃连接中特定域名的命中规则
curl -s -H "Authorization: Bearer 你的Secret密钥"      http://127.0.0.1:9090/connections | jq '.connections[] | select(.metadata.host | contains("bilibili")) | {host: .metadata.host, rule: .rule, destination: .chains}'

❓ 常见疑问与排查步骤

DOMAIN-SUFFIX,com,PROXY 这种规则推荐写吗?

极不推荐。这属于极其粗暴的顶级域通配,会导致国内所有以 .com 结尾的正常网站(如 qq.com、taobao.com)全部被无差别送入代理,严重浪费专线流量。

规则列表里最多支持放多少条规则?

Mihomo 内核在加载数万条规则时依然能够保持极快速度。但若超过 5,000 条,建议拆分为 rule-providers 外部二进制规则集引入,避免主配置文件过于臃肿。

PROCESS-NAME 规则在什么情况下有效?

PROCESS-NAME(进程名匹配)仅在桌面客户端(Windows / macOS)开启 TUN 模式或系统代理时有效。在纯 Linux 软路由网关环境下,由于无法透视局域网终端的本地进程信息,该规则将自动忽略。

想要体验晚高峰 0 丢包的极致速度?

已为您筛选 28 家经过 7×24 小时并发稳定性压测的物理专线机场。

查看 2026 专线机场天梯榜 →