Clash 原版、Clash Meta 与 mihomo 有何区别:内核功能、协议支持与配置语法对照

按时间线梳理三代内核的关系,对照协议支持、规则类型与 TUN 能力,说明旧配置迁到 mihomo 时需要改动的字段。

先区分:客户端、内核与订阅配置

“Clash 支不支持某个协议”不能只看软件窗口的名字。图形客户端负责订阅管理、配置切换、系统代理开关和日志展示;内核负责解析 YAML、建立代理连接、执行分流规则与处理 DNS。客户端界面相似,不代表内部运行的是同一套内核。

订阅则是配置来源。它可能返回含有 proxies、proxy-groups、rules 的完整配置,也可能只返回可供 proxy-providers 加载的代理条目。链接能成功下载,只证明取回了数据,不代表当前内核能解析其中每种节点和规则。

  • 选客户端:检查操作系统、安装方式、权限管理和配置覆写入口。
  • 选内核:检查实际需要的节点协议、规则语法、DNS 与 TUN 功能。
  • 选订阅格式:确认提供方返回的是完整 Clash 配置,还是面向某个内核的扩展配置。

时间线:原版、Premium、Meta 与 mihomo

Clash 原版与 Clash Premium

通常所说的 Clash 原版,是 Dreamacro/clash 开源项目。Clash Premium 则是同一历史生态中的闭源增强内核,提供过 TUN、规则提供者和脚本等增强能力。Premium 的功能不能直接算到开源原版头上,也不能因为名字带 Premium 就推断它是某个图形客户端的付费版。

2023 年 11 月,原版 Clash 项目及 Premium 的常规公开维护中止。旧二进制仍可能启动,但后续协议演进、系统适配和问题修复不能按持续维护中的项目来预期。保留旧环境做对照测试,与继续把它作为日常联网入口,是两个不同的决定。

Clash Meta 与 mihomo

Clash Meta 起源于 Clash 的开源分支,在原有配置模型上增加协议与规则能力。项目在 2023 年末更名为 mihomo。旧教程中的 Meta、Clash.Meta,以及现在的 mihomo,通常指向这条项目演进线,而不是三个互不相关的内核。

更名不意味着所有历史版本的功能完全一致。订阅说明写着“适用于 Meta”,只能说明目标大致属于这一配置生态;某个较新的协议字段能否使用,仍要核对实际运行版本。客户端下载页显示的版本号,也未必就是内核版本号。

  1. 在客户端的“关于”、内核管理或启动日志中查找内核名称与版本。
  2. 使用独立二进制时执行 mihomo -v,记录输出。
  3. 将这个结果与订阅要求、功能文档对应,而不是只记录客户端安装包名称。

功能对照:协议、规则与 TUN

下表用于判断迁移方向,不是逐版本的完整功能清单。尤其是协议的传输方式、加密方法和认证字段,需要继续核对具体版本;同属一种协议,也可能因为参数不匹配而连接失败。

能力 Clash 开源原版 Clash Premium mihomo/Meta 系列
常见代理类型 支持 SS、VMess、Trojan、SOCKS5、HTTP 等 支持传统 Clash 常见代理类型 保留常见类型,并扩展 VLESS、Hysteria2、TUIC 等
VLESS 与 REALITY 不支持 不支持 支持对应配置;REALITY 是相关 TLS 握手配置,不是独立节点类型
基础规则 DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP、MATCH 等 支持基础规则,并提供增强能力 支持基础规则,并扩展 GEOSITE、逻辑规则等
rule-providers 与 RULE-SET 不应按 Premium 的能力使用 支持,需匹配规则集格式 支持,并有更多格式与行为选项
TUN 不提供 Premium 式的内置 TUN 能力 支持,受平台和历史构建限制 支持,仍依赖平台权限与网络环境
Premium script 不支持 提供过脚本分流能力 不能把 Premium 脚本直接当作兼容配置加载

协议支持不等于任意节点都能导入

例如,VLESS 节点可能还需要 uuid、network、TLS 参数及 REALITY 的公钥等信息。只把节点的 type 改成 vless,不会补齐这些参数。Hysteria2 与旧 Hysteria 也不能仅凭名称相近就互换配置。

遇到未知代理类型时,先确认订阅是否为 mihomo 输出,再检查内核版本。不要通过删除认证字段或关闭证书验证来绕过报错。配置能被解析、远端握手成功和业务请求成功,是三个需要分别确认的阶段。

旧 YAML 迁移:保留什么,检查什么

大多数基础配置的骨架可以沿用:本地监听端口、代理条目、代理组和顺序规则依然存在。迁移重点不是把整份文件重新命名,而是清理内核专属字段,并确认客户端最终交给内核的运行配置。

常见字段处理表

旧配置项目 迁移处理 验证点
mixed-port、mode 通常可以保留;检查是否被客户端覆盖 实际监听地址与端口,当前模式是否为 rule
proxies、proxy-groups 核对协议字段及组内引用名称 大小写、空格、提供者名称是否完全一致
rule-providers 核对 behavior、format 和载荷结构 文本规则集与 YAML payload 不能混用解析方式
Premium 的 script 与 script 模式 改写为目标内核支持的规则、规则集或逻辑规则 不能只删除脚本后就认定分流行为保持不变
tun、dns 按目标内核和系统重新核对 路由、DNS 劫持、局域网解析是否符合预期

规则顺序比字段名称更容易被忽略

规则通常按从上到下的顺序匹配,命中后按对应策略处理。把 MATCH 放在前面,会让后续常规规则失去机会。RULE-SET 引用的名称必须存在于 rule-providers;规则指向的策略名称,也必须是有效代理、代理组或内置策略。

proxy-providers 提供代理节点,rule-providers 提供匹配规则,两者不能互换。迁移后出现“找不到提供者”,应先核对引用关系,而不是把两类订阅地址随意交换。

最小配置与迁移验证命令

先用一份容易回退的配置验证内核,再加入真实订阅。下面是 mihomo 的基础结构示例:监听本机 7890 混合端口,使用规则模式,关闭 TUN。代理组只含 DIRECT,因此它用于验证结构与规则加载,不会建立远程代理连接。

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

proxies: []

proxy-groups:
  - name: PROXY
    type: select
    proxies:
      - DIRECT

rules:
  - DOMAIN-SUFFIX,example.com,PROXY
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - MATCH,PROXY

tun:
  enable: false

把文件保存为 config.yaml 后,可在独立终端中检查。下列命令适用于已将 mihomo 放入 PATH 的环境;Windows 本地可执行文件通常需要用 .\mihomo.exe 替换命令名。

mihomo -v
mkdir clash-test
mihomo -t -d ./clash-test -f ./config.yaml

-t 检查配置能否被当前内核加载,不负责证明远端节点可连接。测试目录应与日常客户端的数据目录分开,避免缓存与资源文件相互影响。若配置引用外部规则或地理数据,还要确认相关文件或下载来源可用。

  1. 保存原配置副本,记录旧内核版本、端口与已启用的覆写项。
  2. 将真实订阅导入目标客户端,先关闭 TUN,仅验证普通代理入口。
  3. 检查启动日志中的未知类型、缺失文件、无效引用与端口占用错误。
  4. 用目标客户端的连接记录确认命中的规则和实际出口,再逐项恢复 DNS、规则集与 TUN。

需要验证本机 HTTP 代理入口时,可执行 curl -x http://127.0.0.1:7890 https://example.com/。这条命令显式指定代理端口,不能证明系统代理开关已生效;若仍使用上面的示例配置,它最终走的是直连。

TUN 与 DNS:不能直接复制旧开关

系统代理通常只影响读取系统代理设置的应用。TUN 通过虚拟网络接口与路由接管流量,适合需要处理更多应用流量的场景,但不等于开启后所有流量都一定进入代理。内核仍按规则决定直连、代理或拒绝,路由排除项与其他 VPN 也会影响结果。

先解决权限与路由

  • Windows:检查客户端要求的服务模式或管理员权限;具体入口以该客户端版本为准。
  • Linux:检查 TUN 设备、进程能力或 root 权限,以及现有路由表。
  • macOS:检查客户端辅助服务与系统授权,避免同时启用多个争用路由的 VPN。

mihomo 的 TUN 配置常涉及 auto-route、auto-detect-interface、stack 与 dns-hijack。这些字段需要结合平台设置,不能把某个平台的成功配置视为所有系统的默认答案。改动前记录原值,每次只调整一组功能,才能区分权限问题和 DNS 问题。

DNS 能解析,不代表分流就正确

fake-ip 模式通过映射地址协助还原域名,redir-host 则侧重返回真实解析结果;两者对域名识别与应用兼容性的影响不同。迁移时应一起核对 enhanced-mode、fake-ip-filter、上游解析器和局域网域名处理。

常见的 DNS 劫持目标是普通 DNS 的 53 端口。应用自带的 DoH 通常经 HTTPS 的 443 端口发送,不能假定针对 53 端口的规则会自动覆盖它。遇到浏览器与其他应用结果不同,应检查浏览器安全 DNS、缓存和内核连接日志,而不是反复更换节点。

选型结论与验收清单

新建配置需要 VLESS、REALITY、Hysteria2、TUIC 或扩展规则能力时,应选择明确支持所需功能的 mihomo 版本,并确认客户端确实使用该内核。若只是迁移旧的 SS、VMess 或 Trojan 配置,基础结构通常可以保留,但 DNS、脚本分流与 TUN 仍需单独验证。

原版与 Premium 更适合用于理解历史配置和复现旧行为。迁移到 mihomo 的实际收益是获得对应的协议与规则能力,以及持续演进的内核实现;它不会自动修复失效订阅、错误凭据或服务端不可达的问题。

  • 版本:已经记录实际内核名称与版本,而不只是客户端版本。
  • 配置:语法检查通过,节点、代理组和规则提供者的引用完整。
  • 端口:本地入口与应用设置一致,未与旧客户端同时占用 7890 等端口。
  • 分流:至少检查一项直连请求与一项代理请求,日志中的策略符合预期。
  • TUN:确认权限、路由和 DNS 后再长期启用,退出客户端后网络可以恢复。
  • 更新:手动更新一次订阅,确认自定义覆写仍然存在,再启用自动更新。

需要查字段含义时,可继续查看协议参考;遇到导入失败、端口冲突或系统代理异常,可从帮助中心按现象排查。选型完成后,先完成普通代理链路的验证,再增加 TUN 和复杂规则,问题范围会更清楚。

下载客户端