跳到正文

mihomo 内核与原版 Clash 有何不同:协议支持、规则集与配置字段对照

mihomo(原 Clash Meta)在原版内核基础上扩展了 VLESS、Hysteria2、TUIC 等协议,并增加 rule-providers 增强写法和 sniffer 等字段。本文逐项对照两者差异,并整理迁移配置时的注意事项。

先确认内核:客户端名称不等于功能范围

订阅导入后提示 unsupport proxy type,或配置里写了 sniffer 却看不到预期效果,先不要改节点密码。最先确认的是:客户端实际启动了哪一个内核。界面负责订阅管理、系统代理和开关操作,内核负责解析配置、匹配规则与建立连接;界面名称相近,不代表它们支持同一套字段。

这里把“原版 Clash”拆成两个对象:原版开源内核,以及曾独立分发的 Clash Premium。Premium 的 TUN、规则集等能力不能直接算到原版开源内核上。mihomo 则由 Clash Meta 演进而来,继承了大量 Clash 配置习惯,但不是只改了程序名称。

协议支持:VLESS、Hysteria2、TUIC 是主要区别

如果现有订阅只包含传统 Shadowsocks、VMess、Trojan 节点,迁移时可能看不出明显变化。真正容易触发兼容性报错的是新协议、新加密方法,以及协议附带的传输参数。节点名称写着“Hysteria2”没有意义,内核读取的是 YAML 中的 type 和相关字段。

协议或能力 原版 Clash mihomo
Shadowsocks、VMess、Trojan 常见基础协议可用,具体参数取决于版本 支持,并有后续扩展
VLESS 原版开源及 Premium 不提供该协议 支持,节点类型为 vless
Hysteria2 不支持 支持,节点类型为 hysteria2
TUIC 不支持 支持,节点类型为 tuic
VLESS 配合 REALITY 不支持 支持相应配置,但服务端参数必须匹配

报错发生在哪一步,决定先查什么

如果配置测试直接报“不支持的代理类型”,问题在本地解析阶段,尚未进入节点连通性测试。反过来,配置加载成功却出现连接超时,不能据此认定协议不支持。应继续检查服务器地址、端口、认证信息以及传输网络。

订阅转换也有边界。转换器可以重排字段,却不能给旧内核补上协议实现。若转换后节点消失,先检查输出是否选择了面向 mihomo 的格式,以及转换服务是否支持该协议,不要反复更新同一份不兼容订阅。

规则集对照:rule-providers 不是 mihomo 独有概念

rule-providers 用来声明规则集来源,RULE-SET 用来在规则列表中引用它。原版开源 Clash 与 Premium 的能力在这里有明显区别:Premium 已有规则集支持,不能把所有规则集功能都称为 mihomo 新增。mihomo 在此基础上提供了更多格式和使用方式。

配置项 迁移时的判断
rules 基础规则列表仍按自上而下顺序匹配,第一条命中即采用对应策略。
rule-providers Premium 已支持;原版开源内核不能按 Premium 能力推断。
behavior 区分 domain、ipcidr、classical,内容必须匹配声明。
format: mrs 属于 mihomo 的规则集格式能力,适用于 domain、ipcidr,不适用于 classical。
type: inline mihomo 可将规则内容直接写入 provider 的 payload;旧内核不能默认兼容。

先用本地 YAML 验证规则集链路

下面是一段可合并进 mihomo 配置的规则示例。它不依赖远程下载,便于区分“规则写错”和“规则文件获取失败”。配置只使用内置策略 DIRECT 与 REJECT,不依赖尚未定义的节点组。

rule-providers:
  local-block:
    type: file
    behavior: domain
    format: yaml
    path: ./rules/local-block.yaml

rules:
  - RULE-SET,local-block,REJECT
  - MATCH,DIRECT

在配置工作目录下建立 rules/local-block.yaml,写入以下内容。这里的 example.org 是用于演示规则行为的保留域名,测试时应预期该域名及其子域被拒绝。

payload:
  - '+.example.org'

behavior: domain 的内容是域名匹配项,不要在其中写 DOMAIN-SUFFIX,example.org。若采用 classical,才按相应规则类型书写,例如 DOMAIN-SUFFIX,example.org,且规则集内部不附加最终出站策略。

sniffer 与 DNS:域名识别不等于流量解密

迁移后某些连接由 IP 规则改为域名规则命中,常常与 DNS 映射或嗅探有关。mihomo 的 sniffer 可从部分协议握手中提取主机名,例如 HTTP 的 Host、TLS 的 SNI,以及受支持的 QUIC 握手信息。它不是安装证书的 HTTPS 中间人解密,也不保证每条连接都能识别域名。

先观察,再决定是否开启覆盖目标

sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
      override-destination: false
    TLS:
      ports: [443, 8443]
      override-destination: false

这段示例只列出 HTTP 与 TLS,不代表所有端口都需要嗅探。override-destination: false 表示不据此覆盖连接目标;嗅探信息仍可能参与域名识别与规则判断。是否覆盖目标需要结合 DNS 和应用行为测试,不能当作必开的优化开关。

dns.enhanced-mode: fake-ip 与 redir-host 是不同的处理方式,fake-ip 也不是 mihomo 独有。迁移时先保留原来的 DNS 模式;如需调整,再单独修改并清理相关 DNS 缓存。内核 DNS 监听地址还必须与系统或接管链路对接,仅写一个 dns.listen 不代表系统请求已经进入它。

TUN 与端口:配置兼容不代表接管路径相同

浏览器能访问,但游戏、命令行或其他应用不走代理,通常应检查流量入口,而不是立即更换协议。系统代理主要影响遵守该设置的应用;TUN 通过虚拟网络接口接收流量,可以覆盖更多应用,但还涉及权限、路由和 DNS 接管。

原版 Premium 已提供 TUN,原版开源内核不能与它混为一谈。mihomo 也提供 TUN,但不能保证旧配置中的栈选择、接口参数和路由设置在所有系统上原样工作。Windows、macOS、Linux 的权限和服务管理方式存在差异。

迁移时分两轮验证

  1. 先关闭 TUN,使用显式代理确认节点与规则正常。例如配置 mixed-port: 7897 后,对应入口为 127.0.0.1:7897;7897 是此处示例值,不是所有客户端的固定端口。
  2. 在终端执行下方命令,确认请求确实经过该入口。测试地址仅用于检查基本 HTTPS 连接,不能代表所有目标网站都可用。
  3. 显式代理正常后,再在客户端启用 TUN。检查提权或服务状态,以及虚拟接口和路由是否建立,最后测试不读取系统代理的应用。
curl --proxy http://127.0.0.1:7897 --connect-timeout 10 -I https://example.com

遇到 address already in use,先检查是否同时运行了两份内核。迁移期间旧客户端未退出,是本地监听端口冲突的常见原因。若出现整机断网,先关闭新客户端的 TUN 和系统代理,恢复基本网络,再逐项排查,不要同时叠加多个 VPN 或路由接管工具。

配置迁移步骤:测试、加载、规则与连通性分开验收

一份配置“能被加载”,只说明它通过了当前阶段的解析与初始化,不说明所有字段都被使用,更不代表节点和 DNS 已经可用。部分未知字段可能未产生显眼报错,因此应同时检查运行日志和实际行为。

  1. 备份当前状态。保存原始订阅、合并后的运行配置,以及本地覆写文件。订阅链接和节点认证信息不要发到公开讨论区。
  2. 选择匹配的订阅格式。订阅服务若提供 Clash 与 Clash Meta/mihomo 两种输出,按实际内核选择;检查生成结果,不只看按钮名称。
  3. 先执行配置测试。使用实际部署的二进制,并指定配置文件和工作目录,避免相对路径指向错误位置。
  4. 验证入口与节点。先通过显式代理测试,再查看连接记录中选择的节点或策略组;连接失败时保留完整报错链。
  5. 验证规则集。检查 provider 是否成功加载、条目是否存在,以及测试域名实际命中了哪条规则。
  6. 最后启用增强功能。每轮只改 DNS、sniffer、TUN 中的一项。出现异常时,能明确回退到上一份可用配置。
mihomo -v
mihomo -t -d /srv/mihomo -f /srv/mihomo/config.yaml

上面的 /srv/mihomo 是 Linux 部署示例目录,执行前应确认文件确实位于该目录。Windows 可使用 mihomo.exe -t -d . -f .\config.yaml 在当前配置目录测试。由客户端管理内核时,最终生效文件可能由订阅与覆写合并生成,不能只测试一份未被使用的原始文件。

如何选择:按节点协议与维护需求判断

需要 VLESS、Hysteria2、TUIC、MRS 规则集或 sniffer 等能力时,mihomo 的功能范围更符合需求。若只是维护一套传统协议配置,迁移重点则是配置可验证、客户端仍在维护,以及出现问题后能定位到具体环节,而不是期待更换内核就自动降低延迟。

两者差别可以按三层记忆:协议决定节点能否被识别,规则与 DNS 决定连接如何分流,系统代理或 TUN 决定流量能否进入内核。按这三层逐项检查,比同时切换多个开关更容易找到原因。

Clash 安装包