Mihomo规则模式和全局模式区别:新手怎么选与排查
简答:Mihomo的规则模式会按rules从上到下匹配流量,全局模式会跳过rules,把进入内核的流量交给GLOBAL策略组,直连模式则不经过代理节点。日常分流优先用规则模式;只有需要统一验证某个代理出口时才用全局模式,排查结束后再切回规则模式。
定义:Mihomo运行模式是内核决定流量如何选择出站策略的方式,不能与系统代理或TUN这类“流量如何进入内核”的接入方式混为一谈。
先看结论:三种模式怎么选
本文面向Windows和macOS上的Mihomo用户,界面示例以常见的桌面客户端为参考;不同客户端或版本的按钮名称可能略有差异。本站是第三方使用指南,不是任何客户端或配置服务的官网。
| 模式 | 内核如何决定出口 | 国内流量表现 | 适合场景 | 常见风险 |
|---|---|---|---|---|
| 规则模式 Rule | 按rules从上到下匹配,命中后交给对应策略组或节点 | 取决于规则,例如命中DIRECT才直连 | 日常使用、按域名或IP分流 | 规则顺序、规则集或策略组配置错误 |
| 全局模式 Global | 跳过规则匹配,把进入内核的流量交给GLOBAL策略组 | 也会走GLOBAL当前选中的出口;若选中DIRECT则直连 | 验证某个统一出口、定位规则是否导致问题 | 选错节点、选成DIRECT,或部分流量根本没有进入内核 |
| 直连模式 Direct | 不经过代理节点,直接连接目标服务器 | 直接连接 | 临时停用代理、对比本地网络、排查代理链路 | 无法验证代理节点和代理协议是否正常 |
最快判断:如果你只是想让不同网站按规则分流,选规则模式;如果你想确认“某个统一代理出口能不能打开目标网站”,短时间切到全局模式;如果要判断问题是否来自代理,切到直连模式做对照。
官方文档将rule定义为规则匹配,将global定义为全局代理,并说明全局模式需要在GLOBAL策略组中选择代理或策略;Mihomo全局配置文档同时列出了三种运行模式。
核心区别:入站方式和出站模式不是一回事
理解Mihomo最容易混淆的地方,是把“流量有没有进入内核”和“进入内核后选择什么出口”当成了同一个开关。
- 入站层:系统代理通常只影响遵循操作系统代理设置的应用;TUN通过虚拟网卡接管更多应用流量,但是否完整接管仍取决于客户端、权限和路由设置。
- 出站层:规则、全局、直连决定已经进入Mihomo内核的请求如何选择出口。
因此,打开全局模式并不等于操作系统上的每一个程序都会自动走代理。假如某个应用没有使用系统代理、TUN没有接管它,或者路由设置把目标排除在外,那么它可能根本没有进入内核,规则模式和全局模式都无法对它作出决定。这是接入层问题,不是“全局模式仍然读取了国内直连规则”。
在规则模式下,Mihomo会按规则从上到下匹配,官方规则文档明确说明顶部规则优先级更高。例如GEOIP,CN,DIRECT只在规则模式的匹配流程中生效;切到全局模式后,不能再把这条规则当作国内流量直连的依据。可参考Mihomo路由规则文档。
全局模式的出口也不是一个固定节点。GLOBAL本身是预定义策略组,可以由配置自定义;它可能指向单个节点、其他策略组,甚至DIRECT。官方说明见Mihomo内置代理组文档和代理组配置文档。
在桌面客户端中切换并验证模式
- 先确认内核正在运行,并记录当前使用的配置或订阅。不要直接修改原始订阅链接,优先使用客户端提供的配置覆写或副本。
- 打开客户端首页的代理模式卡片,或进入代理页面,选择规则、全局、直连中的一个。部分版本会把模式切换放在首页卡片、代理页顶部或托盘菜单中,具体入口以当前界面为准。
- 如果选择全局,进入代理组页面,找到
GLOBAL组,确认当前选中的不是DIRECT,也不是已经失效或空置的策略组。需要代理验证时,应选择一个实际可用的代理节点或代理策略组。 - 打开连接记录或Connections面板,访问一个明确的测试目标。规则模式下重点看
rule和rulePayload;它们分别对应命中的规则类型和匹配内容。连接的chains字段用于查看代理链。Mihomo API文档对这些连接字段有明确说明,见Mihomo API文档。 - 用同一个应用、同一个目标、相近时间分别测试规则模式、全局模式和直连模式,记录“是否建立连接、实际策略、代理链、DNS结果和页面表现”。一次能打开网页只能证明该次请求链路成立,不能直接证明所有应用都已接管。
- 测试完成后恢复日常使用的规则模式;如果此前打开过TUN或系统代理,也按原来的状态恢复,避免把排障临时设置长期保留。
成功判据:不是单看模式按钮是否变色,而是确认目标连接出现在连接记录中、规则或策略符合预期,并且应用能够完成实际任务。若全局模式能打开而规则模式打不开,通常说明需要继续检查规则命中、策略组选择或规则集更新状态。
用全局模式定位规则问题:完整排查闭环
下面是一套适合“规则模式打不开,但不知道是规则还是节点有问题”的最小流程。
- 先切直连:暂时关闭代理或选择直连模式,确认目标在本地网络下的基本表现。若直连也失败,问题可能与本地网络、DNS、应用本身或目标服务有关,不要直接归因于规则。
- 再切全局:选择全局模式,并在GLOBAL策略组中明确选择一个代理节点或代理策略组。若全局也失败,优先检查节点、协议、端口、DNS和系统代理/TUN接入,不要先改规则。
- 全局成功、规则失败:切回规则模式,立即打开连接记录,重新访问同一目标,查看命中的
rule、rulePayload和chains。如果命中的是不符合预期的策略组,说明规则顺序、规则集内容或策略组选择需要核验。 - 检查规则顺序:规则按从上到下匹配,前面的宽泛规则可能在后面的精确规则之前命中。检查目标域名是否被更早的
DOMAIN、DOMAIN-SUFFIX、GEOIP或RULE-SET规则接管。 - 更新或覆写:如果规则集过期、下载失败或策略组为空,先在客户端更新配置或规则提供者;仍需自定义时,使用配置覆写增加规则,不要直接改动无法持久保存的运行状态。
- 复测并回滚:再次用同一目标测试,确认连接记录中的命中规则和代理链已经变化。若改动后内核无法启动,立即撤销最近一次覆写或恢复备份配置。
特别注意:全局模式下国内网站或局域网仍然直连,不能被解释为“全局模式优先放行国内IP”。更准确的判断是:进入内核的流量会交给GLOBAL当前选中的出口;看起来仍直连,常见原因包括GLOBAL选中了DIRECT、流量没有进入内核,或系统代理绕过/TUN路由排除等接入层设置。最后一项属于排障方向,需要结合客户端设置和连接记录逐项确认。
日常使用、测速与回滚建议
- 日常分流:优先使用规则模式,因为它能把不同目标交给不同策略组,便于区分直连和代理流量。
- 单节点验证:先在全局模式中选择明确的节点,再测试同一目标;不要在自动选择、负载均衡和全局模式之间同时改变多个变量。
- 延迟不是网页体验:客户端显示的延迟测试通常只代表测试地址或握手阶段,不能单独证明下载速度、视频播放、跨境办公或所有应用都正常。
- 不要公开敏感内容:分享配置时应隐藏订阅链接、令牌、私钥、服务器地址和身份信息。需要求助时只提供脱敏后的模式、命中规则、错误提示和测试条件。
- 保留回滚点:修改配置前复制当前配置或记录覆写内容;出现内核启动失败、代理组消失或模式无法切换时,先恢复最近一次可用配置,再逐项增加改动。
如果只是想判断“规则是否误判”,最稳妥的顺序是:直连确认基础网络,全局确认统一出口,规则确认分流逻辑,最后再回到日常模式。这样可以避免把节点故障、接入层未接管和规则匹配错误混成一个问题。
常见问题
Mihomo全局模式会不会自动读取GEOIP,CN,DIRECT?
不会。全局模式跳过rules,进入内核的流量交给GLOBAL策略组。GEOIP、DOMAIN等规则只在规则模式的匹配流程中发挥作用。
为什么开了全局模式,国内网站或局域网地址看起来还是直连?
先检查GLOBAL是否选中了DIRECT;如果没有,再检查流量是否真正进入内核,例如系统代理绕过、TUN路由排除或应用不遵循系统代理设置。全局模式本身不会因为识别到国内IP就自动执行国内直连规则。
为什么全局模式能打开,切回规则模式就打不开?
这通常说明统一出口本身可能可用,但规则模式下的命中规则、规则集、策略组或节点选择存在差异。打开连接记录,比较rule、rulePayload和chains,再检查规则顺序与策略组状态。
GLOBAL策略组应该选择什么?
排障时选择一个明确的代理节点或代理策略组,避免选择DIRECT、空组或已失效的组。日常使用完成后切回规则模式,不必长期保持全局。
直连模式和关闭系统代理是不是完全一样?
不完全一样。直连模式是Mihomo内核对进入内核的请求选择直接出站;关闭系统代理则改变应用是否把请求交给本地代理入口。两者属于不同层级,测试时应分别记录。