Mihomo 内核怎么选择?按订阅协议、设备和配置格式判断
简答:如果你的订阅主要是 Clash/Mihomo 兼容的 YAML 配置,并需要规则、DNS、TUN 和常见节点协议,通常先选 Mihomo;如果配置本身是 sing-box JSON,或客户端明确要求 sing-box 字段,就不要强行转换。切换前先备份配置,再用客户端内核信息、日志和实际连通性三步确认。
定义:Mihomo 内核是负责解析代理配置、建立节点连接、执行 DNS 与路由规则并接管流量的网络核心,不等同于图形客户端或订阅服务。
先看结论:什么情况下选择 Mihomo
本文是独立使用指南,不代表任何客户端、订阅服务或相关项目的官方立场。判断内核时,不要先看客户端名称,而要先确认三件事:订阅提供什么配置格式、节点使用什么协议、客户端是否允许切换内核。
| 你的情况 | 优先考虑 | 原因与限制 |
|---|---|---|
| 订阅是 Clash 风格 YAML,包含规则组、代理提供者或规则集 | Mihomo | 更适合沿用现有配置结构;仍需确认客户端实际支持的字段。 |
| 订阅或本地配置是 sing-box JSON,使用其 route、rule_set、inbounds、outbounds 结构 | sing-box | 配置模型不同,不能把 JSON 直接当作 Mihomo YAML 使用。 |
| 节点包含 VLESS、Reality、Hysteria2、TUIC 或 WireGuard | 先对照协议字段,再选内核 | “协议名称相同”不代表参数字段、传输方式和订阅格式完全兼容。 |
| 只需要普通 HTTP、SOCKS 或固定端口代理 | Mihomo 或 sing-box 均可 | 优先选择客户端默认且日志清晰的内核,不必为单一功能频繁切换。 |
| 需要 TUN、DNS 接管或按应用分流 | 选择客户端明确支持的内核 | TUN 还受系统权限、路由、DNS 和客户端实现影响,内核名称不是唯一决定因素。 |
截至 2026 年 11 月 5 日,Mihomo 文档列出了 VLESS、Hysteria2、TUIC、WireGuard 等配置入口,并单独说明了 TUN、DNS、代理组和规则配置。具体字段以Mihomo 配置文档和客户端当前界面为准。
先分清三层:客户端、内核和订阅配置
客户端是你能看到设置页面的应用,例如桌面端、移动端或路由器管理程序;内核负责解析配置、连接节点、执行规则与 DNS;订阅配置则是节点、代理组、规则和 DNS 参数的来源。三者不是同一个东西。
- 客户端不等于 Mihomo。一个客户端可能内置多个内核,也可能只支持其中一个。
- 内核不等于订阅服务。内核只能处理配置并建立连接,不能决定节点本身是否在线、线路质量如何或订阅是否有效。
- 配置格式会影响兼容性。Mihomo 配置通常围绕 YAML 结构展开;sing-box 官方文档明确使用 JSON 配置,并包含
inbounds、outbounds、dns和route等顶层字段,参见sing-box 配置结构说明。 - Meta、Mihomo 等标签不能单独证明当前运行内核。有些客户端的设置名称可能沿用旧标签或兼容名称,应以版本页、内核文件名、启动日志和配置校验结果为准。
因此,看到“Clash”“Meta”或“Mihomo”时,不要立即把它们当成客户端名称。正确做法是打开客户端的内核管理页,记录当前内核名称和版本,再查看启动日志中是否出现对应内核标识。
按订阅协议判断:哪些情况适合先用 Mihomo
协议判断不是只看节点名称,而是看配置中实际出现的字段。Mihomo 文档分别提供了 VLESS、Hysteria2、TUIC、WireGuard 等配置说明。例如 VLESS 配置可能涉及 flow、network、TLS 和 reality-opts;WireGuard 则涉及密钥、地址和 allowed-ips。遇到导入后节点消失或报错,应先对照对应协议页面,而不是盲目更换内核。
| 配置线索 | 先检查什么 | 选择建议 |
|---|---|---|
type: vless,带 TLS、Reality 或传输层字段 | UUID、服务器名、端口、TLS、Reality 参数和传输方式 | 若原配置是 Mihomo YAML,先用 Mihomo 校验;不要把字段直接改成 sing-box JSON。 |
type: hysteria2、QUIC 或 UDP 相关字段 | 认证信息、TLS、端口、拥塞和 UDP 是否被客户端允许 | 确认客户端和内核均支持该协议;Mihomo 的协议入口可参考Hysteria 配置文档。 |
type: tuic | UUID、密码、TLS、UDP 与 IP 版本 | 先检查配置字段是否被当前内核识别,再判断节点连接问题。 |
type: wireguard | 私钥、公钥、地址、Allowed IP、MTU 和 UDP | 适合在确认客户端支持 WireGuard 后使用;Mihomo 字段可参考WireGuard 配置文档。 |
如果日志显示 unsupported proxy type,最小排查闭环是:先确认节点类型拼写,再确认客户端实际加载的内核,最后对照该内核的协议文档检查字段。不要仅凭延迟有返回,就断言节点已经完全可用。
Mihomo 与 sing-box:按配置生态和使用方式选择
两者都能处理代理节点、DNS、路由和 TUN,但配置组织方式不同。Mihomo 文档把代理、代理组、规则、DNS、TUN 等内容放在其配置体系中;sing-box 则以 JSON 为基础,使用 inbounds、outbounds、route 和 dns 等模块。
| 比较项 | Mihomo | sing-box |
|---|---|---|
| 配置格式 | 以 YAML 风格配置为主,常见于代理组、规则集和代理提供者结构。 | 官方配置使用 JSON,并提供 JSON Schema、检查和格式化命令。 |
| 规则与路由 | 围绕规则、规则集、代理组和策略选择组织。 | 围绕 route、rules、rule_set 和 final 等结构组织。 |
| DNS | 支持 nameserver、fallback、fake-ip、nameserver-policy 等配置项,详见Mihomo DNS 文档。 | DNS 是独立配置模块,并可与 route、DNS rule 和 TUN 行为联动。 |
| TUN | 可用于系统流量接管、DNS 劫持和按应用路由,但依赖系统权限与客户端实现。 | 官方文档列出 Windows、macOS、Linux 等支持范围及 auto_route、DNS 模式等字段,参见sing-box TUN 文档。 |
| 适合谁 | 已有 Clash 风格订阅、规则组或代理提供者配置的用户。 | 愿意使用 JSON 配置,或订阅、客户端明确要求 sing-box 结构的用户。 |
这里不比较未经统一测试条件得到的速度、内存占用或稳定性排名。内核选择首先是兼容性问题,其次才是功能和操作习惯问题。
Windows、macOS、Android、Linux 和路由器怎么选
- Windows:先选择客户端默认支持且能显示详细日志的内核。需要 TUN 时,确认管理员权限、虚拟网卡、系统代理和 DNS 接管是否同时生效。
- macOS:先确认客户端是否允许安装或启用系统级网络组件。若只使用浏览器或支持 HTTP/SOCKS 的应用,优先从普通代理端口开始,确认节点可用后再启用 TUN。
- Android:先确认客户端使用的是系统 VPN、TUN 还是普通代理模式。若开启了 Private DNS,Mihomo 文档提示 DNS 自动劫持可能受到影响,应先记录原设置再调整。
- Linux:命令行或服务化部署更适合按配置文件和日志管理。启用 TUN 后,要同时检查路由表、DNS、权限和出口网卡,不能只看客户端是否显示“运行中”。
- OpenWrt 或其他路由器:先核对 CPU 架构、客户端支持的内核格式和设备资源,再决定使用 Mihomo 还是 sing-box。不要因为配置能导入就推断所有规则、DNS 和 TUN 行为都一致。
平台选择的核心原则是:客户端能否加载该内核、设备是否支持所需网络模式、配置是否能通过校验,以及切换后是否能完成实际复测。
切换内核前后的可回滚操作
- 备份:复制当前订阅配置、本地覆写文件、规则集和 DNS 设置,单独保存为只读备份。不要直接覆盖原文件。
- 记录现状:记下当前内核名称、版本、代理端口、TUN 开关、DNS 模式,以及一个已知可以访问的测试目标。
- 先用最小配置测试:只保留一个节点和最基本的代理模式,暂时不要同时修改 DNS、MTU、规则集和 TUN。这样可以区分是节点问题还是配置问题。
- 校验配置:检查节点类型、必填字段、缩进或 JSON 括号。sing-box 可按官方文档使用
sing-box check检查配置;Mihomo 则应使用客户端提供的配置校验或查看启动日志。 - 逐项恢复:先验证节点连接,再恢复规则组,再启用 DNS 覆写,最后测试 TUN。每完成一项就查看日志和网页加载结果。
- 失败回滚:关闭新内核或 TUN,恢复备份配置,重新启用原内核。若恢复后仍异常,再检查系统代理、DNS 和路由是否被新配置改动。
验证至少分四层:DNS 是否解析、代理端口是否监听、节点连接是否建立、网页或应用是否实际加载。只有延迟测试返回,不足以证明规则、DNS、UDP 或 TUN 全部正常。
常见报错与分流方法
| 现象 | 优先检查 | 下一步 |
|---|---|---|
| 节点导入后消失 | 节点类型是否被当前内核识别,配置是否被客户端过滤 | 打开原始配置,确认 type 和必填字段,再查看启动日志。 |
| 提示 unsupported proxy type | 内核版本、协议类型、字段名称 | 对照对应协议文档;若订阅明确要求另一种内核,恢复备份后再换客户端或内核。 |
| 规则解析失败 | 规则格式、规则集下载、代理组名称是否存在 | 先删除非必要规则,只保留一个节点直连测试,再逐个恢复规则。 |
| TUN 开启后断网 | 系统权限、DNS 模式、自动路由、出口网卡和防火墙 | 关闭 TUN,确认普通代理端口可用后,再按Mihomo TUN 文档逐项启用。 |
| 能解析域名但网页打不开 | 代理端口、节点握手、规则命中和 TLS 参数 | 区分 DNS 成功与代理连接成功,查看日志中是否出现连接建立或握手失败。 |
最终选择清单
如果你仍然无法判断,可按以下顺序做决定:
- 配置是 YAML 风格、已有代理组和规则集:优先测试 Mihomo。
- 配置是 sing-box JSON,或字段明显采用
route、outbounds、rule_set:优先使用 sing-box。 - 包含 VLESS、Reality、Hysteria2、TUIC、WireGuard:先查协议字段和客户端支持,不要仅凭协议名称决定。
- 需要 TUN 或 DNS 接管:先验证普通代理,再启用系统级接管,出现断网时按备份回滚。
- 客户端设置里显示 Meta、Mihomo 或其他标签:以实际内核版本、日志和配置校验结果为准。
一句话概括:已有 Clash 风格配置就先试 Mihomo;已有 sing-box JSON 就先用 sing-box;遇到导入或连接问题,先确认配置格式和实际内核,再处理节点、DNS、规则与 TUN。
常见问题
Mihomo 和 Clash Meta 是不是同一个内核?
页面标签可能因客户端或历史兼容命名而不同,不能只凭名称下结论。应查看客户端内核管理页、启动日志和实际版本信息;配置字段则以当前 Mihomo 文档为准。
订阅里有 VLESS、Reality,就一定要选择 Mihomo 吗?
不一定。VLESS 和 Reality 只是协议或参数线索,还要看订阅是 YAML 还是 sing-box JSON、客户端是否支持对应字段,以及 TLS、传输层和流控参数是否匹配。
Mihomo 能不能直接导入 sing-box 的 JSON 配置?
不能默认认为可以。两者的顶层结构和字段体系不同,直接导入可能出现解析失败、节点消失或规则不生效。应使用对应内核的配置格式,或通过可靠的转换工具后再逐项核验。
切换 Mihomo 内核后 TUN 不能用怎么办?
先关闭 TUN并恢复普通代理模式,确认节点和代理端口正常,再检查系统权限、虚拟网卡、DNS 模式、自动路由、防火墙和出口网卡。不要同时修改 MTU、DNS 和规则集,否则难以定位。
怎么看客户端实际运行的是哪个内核?
打开客户端的内核管理或关于页面,记录名称和版本;随后查看启动日志中是否出现对应内核标识,并用一个最小配置验证节点、规则和 DNS。界面名称与实际内核不一致时,以日志和版本信息为准。
相关阅读
- 继续了解 Mihomo 规则、全局和直连模式怎么选
- 遇到订阅导入失败,可按报错类型继续排查
- 如果问题集中在 TUN 接管流量,查看分层排查步骤
- 使用 sing-box 时,可继续检查 DNS、规则与上游解析