Mihomo 配置 global 不生效?分清 mode 与 GLOBAL 后这样设置
简答:Mihomo 配置 global 时,先写 mode: global,再在 GLOBAL 策略组中选择节点或策略;但 global 只决定内核如何路由,未开启系统代理或 TUN 的应用仍可能不经过 Mihomo。先检查模式、GLOBAL 选择和流量接管状态。
定义:Mihomo 的 global 是“所有进入内核的流量优先交给 GLOBAL 策略组处理”的运行模式,而 GLOBAL 是承载节点或策略选择的代理组,两者不是同一个配置项。
先看结论:mode: global 与 GLOBAL 不是一回事
如果你搜索“mihomo 配置 global”,最容易踩到的坑是把 mode: global 和名为 GLOBAL 的策略组当成同一个东西。前者是运行模式,后者是代理组;官方配置说明把 global 定义为全局代理,并明确要求在 GLOBAL 代理组中选择代理或策略。mihomo General configuration wiki.metacubex.one
| 对象 | 作用 | 是否必须手写 | 常见误解 |
|---|---|---|---|
mode: global | 把进入 Mihomo 的连接交给全局代理路径处理 | 需要在配置中设置,或通过客户端界面切换 | 开启后所有系统应用自动被接管 |
GLOBAL | 提供节点、代理组或策略的选择入口 | 通常由内核提供内置组,也可以自定义 | 它等于一条 rules 规则 |
mode: rule | 按 rules 从上到下匹配目标 | 可作为日常分流模式 | 只要配置了 GLOBAL 就会自动全局代理 |
mode: direct | 全局直连 | 可用于排查节点或规则问题 | 等于关闭 Mihomo |
GLOBAL 是 Mihomo 的预置代理组,默认会填充代理组和代理节点,也可以在配置文件中自定义。自定义时应把当前配置中的其他策略组完整列出,避免面板显示或选择结果与预期不同。mihomo 内置代理组:GLOBAL wiki.metacubex.one
最小可用配置:先让 global 能切换,再逐项增加功能
下面示例只保留运行模式、混合端口、一个节点、一个自定义代理组和一条规则,适合先验证配置是否被内核加载。节点字段使用占位值,不能直接连接;实际使用时应替换为你自己的合法节点配置或订阅生成的节点。
mode: global
log-level: info
mixed-port: 7890
proxies:
- name: "节点A"
type: ss
server: server.example
port: 443
cipher: aes-128-gcm
password: "请替换为实际密码"
proxy-groups:
- name: GLOBAL
type: select
proxies:
- "节点A"
- DIRECT
rules:
- MATCH,GLOBAL配置重点:
mode: global是运行模式开关。proxy-groups中的GLOBAL是可供全局模式选择的策略组。proxies必须声明被策略组引用的节点名称,名称要完全一致。DIRECT是 Mihomo 的内置直连出站,不需要在proxies中重复声明。mihomo 内置出站:DIRECT wiki.metacubex.onemixed-port是 HTTP 和 SOCKS 共用的代理端口,常见默认为 7897 或 7890,以客户端设置页为准。
如果你的订阅已经包含节点、代理组和规则,不建议直接把整份订阅改成上面的模板。更稳妥的顺序是:先复制配置文件,再只修改 mode,然后在客户端的代理组页面选择 GLOBAL 中的节点。若订阅更新会覆盖手工修改,应使用客户端提供的扩展配置、合并配置或编辑代理组功能。
在客户端和 Web 面板中切换 global
Clash Verge Rev:先在配置文件页面启用当前配置,再进入代理页面,在代理模式中选择“全局”;随后在代理组区域选择 GLOBAL 组中的节点或策略。Clash Verge Rev 源码中明确列出了 rule、global、direct 三种模式,中文界面也对应“规则、全局、直连”。Clash Verge Rev 模式实现、Clash Verge Rev 中文界面定义 github.com
Web 面板:打开 Mihomo 控制面板后,先确认内核已运行,再找到运行模式或 Mode 选择器,切换到 Global;之后进入代理组,找到 GLOBAL 并选择具体节点。不同客户端对按钮位置和中文翻译可能不同,但应当同时完成“切换模式”和“选择 GLOBAL 出站”两步。
如果界面切换后仍然无效:先关闭并重新打开当前配置,检查配置文件是否真的被当前内核加载;再看日志中是否出现配置解析错误、节点不可用或连接被拒绝。不要只看界面上的“全局”字样。
确认流量真的进入 Mihomo:系统代理与 TUN 分开检查
global 只处理已经进入 Mihomo 的流量。如果应用没有使用 Mihomo 的系统代理端口,或者 TUN 没有成功建立,应用仍可能直连。这是“界面显示全局但浏览器没有变化”的首要排查方向。
| 方式 | 适用范围 | 检查动作 | 判定标准 |
|---|---|---|---|
| 系统代理 | 支持 HTTP、HTTPS 或 SOCKS 代理的应用 | 在系统或应用网络设置中确认代理地址和端口与 Mihomo 一致 | 访问测试站点时,连接日志出现对应请求并命中所选策略 |
| TUN | 需要接管更多系统流量的场景 | 开启 TUN、自动路由及必要的 DNS 劫持选项 | 虚拟网卡建立,日志有连接记录,出口 IP 与直连结果不同 |
| 单独应用代理 | 只让某个软件走代理 | 在该软件内填写 HTTP、HTTPS 或 SOCKS 地址 | 该应用产生连接日志,其他未设置应用不应被误判为已代理 |
Mihomo 的 TUN 文档说明,auto-route 用于自动设置全局路由,将流量导入 TUN;Windows、macOS 和 Linux 的防火墙放行方式也不同。mihomo TUN 配置文档 github.com
- Windows:开启 TUN 服务模式后,按系统提示允许 Mihomo 内核通过防火墙;若服务未启动,先检查客户端是否以需要的权限运行。
- macOS:检查系统设置中的网络扩展、VPN 或防火墙放行状态;下载的应用若被隔离,需按客户端说明解除隔离后重新启动。
- Linux:确认运行用户有 TUN 设备、路由表和配置文件的必要权限;启用自动路由时,同时检查防火墙是否允许 TUN 接口出站。
检查结果不要只依赖网页能否打开。优先查看连接日志里是否命中目标策略,再对比开启和关闭 Mihomo 时的出口 IP;DNS 是否按预期工作,则要结合 DNS 日志与实际解析结果判断。
global 模式下 DNS、IPv6 和局域网为什么可能出问题
全局代理会改变更多连接的出站路径,因此局域网地址、公司内网、打印机、本地开发服务和国内服务可能受到影响。遇到局域网无法访问时,不要先反复更换节点,应先确认是否需要保留局域网直连,以及 TUN 的路由排除是否包含对应网段。
ipv6 是 Mihomo 的独立开关;官方文档说明它控制内核是否接受 IPv6 流量。若 IPv4 代理正常但部分站点连接异常,可暂时关闭 IPv6 做对比,但这只是定位手段,不代表所有网络都应长期关闭。mihomo General configuration wiki.metacubex.one
DNS 方面,TUN 的 dns-hijack、自动路由和 DNS 增强模式会共同影响解析路径。修改 DNS 后应重启内核并查看 DNS 日志,确认请求没有形成循环,也不要把某个客户端或其他内核支持的字段直接套到 Mihomo 配置中。
global 仍然无法访问:按这个顺序排查
- 确认配置加载:查看当前启用的配置文件名称和更新时间,避免编辑了未启用的文件。
- 确认 YAML 结构:检查缩进、冒号、列表短横线和策略组名称;节点名称、组名称和引用名称必须一致。
- 确认 GLOBAL 选择:在代理组中选择一个实际节点,不要只停留在 GLOBAL 组名称上。
- 确认端口:检查应用使用的端口是否与 Mihomo 当前监听端口一致,常见默认为 7897 或 7890,以设置页为准。
- 确认应用接管:系统代理模式下检查应用是否支持代理;TUN 模式下检查虚拟网卡、自动路由和防火墙。
- 查看连接日志:确认请求有没有进入 Mihomo、命中了哪个策略、是否出现 DNS、超时、拒绝或节点不可用。
- 对比 direct:临时切换到
direct,再切回global。如果两者结果完全相同,优先怀疑流量没有进入内核。 - 最后再检查节点:同一端口和同一应用下更换节点,避免把单个节点故障误判为 global 配置问题。
不建议为了“真全局”直接把规则、策略组和 TUN 配置全部重写。先用最小改动确认模式、策略和流量入口,再逐项增加 DNS、IPv6、局域网排除和规则配置,定位会更快。
什么时候用 global,什么时候切回 rule
| 场景 | 建议模式 | 原因 |
|---|---|---|
| 临时确认节点是否能建立连接 | global | 减少规则匹配变量,便于观察节点和出口结果 |
| 日常办公、访问内网和本地服务 | rule | 可以按域名、IP 或规则集分流,减少不必要的全局代理 |
| 排查是否是代理导致的问题 | direct | 用于与 global 结果做对照 |
| 需要让系统多数应用进入内核 | global 加 TUN | 仅切换模式不足以接管未使用系统代理的应用 |
安全回退方法是:先记录当前节点和配置备份,再把模式改回 rule;如果仍有异常,再临时使用 direct 对比。切换后重新打开受影响应用,并以连接日志和出口 IP 作为验证依据。
本文是第三方使用指南,不代表任何客户端或节点服务的官方页面。
常见问题
Mihomo 配置 global 时必须手写 GLOBAL 策略组吗?
不一定。Mihomo 提供内置 GLOBAL 代理组,默认会填充代理组和代理节点;只有需要固定显示顺序、限制可选节点或加入特定策略时,才考虑自定义同名 GLOBAL 组。
为什么写了 mode: global,浏览器仍然没有走代理?
通常是浏览器没有使用系统代理,或 TUN 没有成功建立。先检查浏览器代理设置、Mihomo 混合端口、TUN 虚拟网卡和连接日志,再用出口 IP 对比确认。
global 模式还需要写 rules 吗?
global 模式的主要流量选择由 GLOBAL 策略组决定,不应把它简单理解为通过 MATCH,GLOBAL 才能开启全局。若需要按域名和网段分流,应切回 rule 模式并配置规则。
GLOBAL 组里有节点但无法访问,应该先换节点吗?
先确认节点已被选中、应用流量确实进入 Mihomo,并查看日志中的命中策略和错误信息。确认入口和配置无误后,再更换节点进行对比,避免把接管问题误判为节点问题。
如何从 global 安全切回 rule?
在客户端模式选择器中切换到规则,或把配置中的 <code>mode: global</code> 改为 <code>mode: rule</code>,重新加载配置,再检查规则命中情况。涉及 TUN 的配置不要一次性全部删除,先保持原样便于回退。