mihomo 是什么?一文说清内核与客户端的关系
本文目录
很多人第一次见到 mihomo 这个名字,是在客户端的设置页或下载站里。一句话回答:mihomo 是一个开源的网络代理内核,前身叫 Clash.Meta,2023 年更名,由 MetaCubeX 社区持续维护。你在用的 Clash Verge Rev、FlClash、Clash Meta for Android,里面真正干活的就是它。
理解“内核 + 图形客户端”这对关系,是用好这套工具的第一课:之后无论选软件、读教程还是排错,思路都会清晰很多。
mihomo 内核的定义与由来
mihomo 是命令行形式的网络代理内核:没有窗口,也没有按钮,启动后安静地在后台处理流量。它的配置使用 YAML 文件,兼容并扩展了经典的 Clash 配置格式。项目源码托管在 MetaCubeX/mihomo 仓库,任何人都可以审计与构建。至于它与原版 Clash 之间的历史,可以读Clash、Clash Meta、mihomo 有什么区别。
内核负责什么
- 解析配置:读取 YAML 配置,加载节点、代理组与分流规则。
- 协议转发:与代理服务器建立加密连接,转发应用产生的流量。
- 规则分流:按域名、IP 等规则决定每条连接直连、走代理还是拒绝。
- DNS 处理:内置 DNS 模块,支持 fake-ip 等增强模式,用于缓解解析污染与泄漏问题。
- 对外接口:暴露本地 HTTP/SOCKS 代理端口与控制 API,供客户端和面板调用。
把这五件事串起来看就是一条完整的链路:内核启动后在本机监听一个端口(配置里的混合端口,常见为 7890 或 7897),应用把请求送到这个端口,内核先按规则判断这条连接该直连还是走代理、走哪个节点,需要解析域名时交给内置 DNS,最后与选中的服务器建立连接把数据转发出去。理解了这条链路,排错时就知道该往哪一环看:连不上先看节点,网站打不开但节点正常多半是规则或 DNS 的问题。
为什么 mihomo 没有图形界面
因为它的定位是“引擎”,面向被集成而不是被双击。一个专注协议与性能的内核,配上各平台各自的界面,是这类工具的通用架构:桌面有桌面客户端,手机有手机客户端,服务器则直接用 systemd 托管内核。mihomo 通过 mihomo -d 目录 这样的命令启动,参数与配置就是它的全部交互方式。
图形客户端如何调用内核
Clash Verge Rev(Windows/macOS/Linux)、FlClash(多平台)、Clash Meta for Android 都内置 mihomo。你在界面上的每个操作——导入订阅、切换节点、打开系统代理或 TUN 模式——最终都会被翻译成内核的配置更新或 API 调用。具体做法是:客户端把订阅内容写成一份 YAML 配置交给内核,同时通过配置里 external-controller 声明的本地控制接口与内核对话,于是切节点、看连接列表、读日志这些事都能实时完成,不必每次重启内核。客户端管交互,内核管流量,各司其职。各客户端之间的取舍,可以看主流代理客户端对比。
这也解释了一个常见困惑:为什么不同客户端界面差别很大,用起来的效果却差不多——因为真正决定连通性、分流准确度的是同一个内核和同一份配置,界面只是壳。
普通用户如何选择
直接安装图形客户端即可,不需要单独下载内核:客户端安装包里已经带了 mihomo,并会随客户端版本一起更新。只有在服务器部署、路由器集成,或者喜欢命令行方式时,才需要单独获取内核文件。
| 你的情况 | 该下载什么 |
|---|---|
| 电脑或手机日常上网 | 只装图形客户端(内核已内置) |
| 在 VPS / 软路由 / NAS 上常驻 | 单独下载 mihomo 内核,用 systemd 一类的方式托管 |
| 想自己写配置、调试规则 | 单独下载内核,用命令行运行看日志 |
两类下载在下载中心都有,按平台与架构选择即可;不确定选哪个架构,先看下载前必读。
常见问题
mihomo 和 Clash 是一回事吗?
不完全是。Clash 是最初的开源项目,2023 年被作者删库停更;mihomo 是其社区分支 Clash.Meta 的延续与新名字。日常语境里说的“Clash Meta 内核”,指的就是 mihomo。
需要同时安装内核和客户端吗?
不需要。图形客户端内置内核,装一个就够了。单独运行内核属于命令行部署的玩法,与图形客户端并不冲突,但普通用户没有必要两个都装。
mihomo 是免费的吗?
是。内核与本文提到的各个客户端都是开源免费软件;需要付费的是第三方服务商提供的节点订阅服务,与软件本身无关。