Mihomo内核介绍

Mihomo 是由 MetaCubeX 开发的高级网络代理内核,基于开源项目 Clash 的二次开发版本,旨在提供更强大的协议支持、更灵活的规则控制以及更高效的网络流量管理能力。

以下是 Mihomo 内核的主要功能模块及其特性:

1. 协议支持

Mihomo 支持多种主流代理协议,满足不同用户的网络需求,包括:

  • HTTP、SOCKS5
  • Shadowsocks、ShadowsocksR
  • VMess、VLESS(支持 XTLS)
  • Trojan(支持 XTLS)
  • Hysteria、Hysteria2
  • TUIC(v4/v5)
  • WireGuard
  • AnyTLS、Snell、Mieru

此外,Mihomo 还支持代理链(Relay)和 TCP 并发连接,提升代理的灵活性和性能。


2. 路由规则与策略控制

Mihomo 提供强大的规则引擎,支持多种规则类型和组合逻辑,实现精细化的流量控制:

  • 支持 GEOSITE 和 GEOIP 规则,基于地理位置进行流量分流。
  • 支持 RULE-SET 规则集合,方便管理和更新规则。
  • 支持 SRC-PORT 和 DST-PORT 规则,基于源端口和目标端口进行控制。
  • 支持逻辑判断规则(AND、OR、NOT),实现复杂的规则组合。
  • 支持子规则集和规则优先级设置,提高规则匹配的灵活性。

这些功能使用户能够根据不同的需求,灵活地配置流量的路由策略。


3. DNS 模块

Mihomo 的 DNS 模块功能丰富,支持多种解析模式和优化选项:

  • 支持域名嗅探器(Sniffer),自动识别域名。
  • 支持使用 Geosite 的 Fallback-Filter 和 Redir-Host 远程解析。
  • 支持使用代理解析 IP,防止 DNS 泄露。
  • 支持 DNS over HTTP/3 和 DNS over QUIC,提升解析速度和安全性。

此外,Mihomo 还支持 DNS 分流配置,可以根据域名规则选择不同的 DNS 服务器进行解析。


4. TUN 模块

Mihomo 的 TUN 模块支持多平台,方便用户实现全局代理:

  • 支持 macOS、Linux 和 Windows 平台。
  • 内置 iptables 和 Wintun 驱动程序,无需手动配置。
  • 支持 gVisor、System 和 lwip 堆栈,满足不同系统的需求。

通过 TUN 模块,Mihomo 能够接管系统的所有网络流量,实现更全面的代理功能。


5. 配置与管理

Mihomo 支持灵活的配置方式,方便用户进行个性化设置:

  • 支持 YAML 配置文件,结构清晰,易于管理。
  • 支持锚点(&)和别名(*)的使用,提高配置的复用性。
  • 支持 JavaScript 配置方式,满足高级用户的需求。

此外,Mihomo 提供了详细的文档和示例,帮助用户快速上手和深入理解配置方法。


6. OpenClash替换Mihomo内核方法

  1. 首先确认你使用的是OpenWRT及OpenClash的版本信息。

如果担心出现不可恢复的问题,可以先备份虚拟机或OpenClash整体配置。本篇内容也适用于OpenClash内核更新失败的手动解决方案。

  1. 通过SSH登入OpenWRT,并进入OpenClash的核心所在文件夹:
cd /etc/openclash/core
  1. 备份原来的meta核心:
cp clash-meta clash-meta.backup
  1. 下载Mihomo核心,从https://github.com/MetaCubeX/mihomo/releases 选择版本和自己路由器架构的核心包,并复制链接地址,替换下面命令中的地址,X86-64用户选择mihomo-linux-amd64-compatible-go120后缀即可。
# 下载核心
wget -c https://github.com/MetaCubeX/mihomo/releases/download/v1.19.9/mihomo-linux-arm64-v1.19.9.gz
# 解压,-d 后面的文件名称根据你所下载的核心文件压缩包名称更换
gzip -d mihomo-linux-arm64-v1.19.9.gz
#重命名 文件名称根据你所下载的核心文件名称更换
mv mihomo-linux-arm64-v1.19.9.gz clash-meta
  1. OpenWRT网页端进入OpenClash,点击插件设置 - 版本更新,查看[Meta]当前内核版本是否为v1.19.9,如图所示
  2. 如果显示为当前下载的内核版本号,即表示替换成功。重启OpenClash即可生效。不要再点击检查并更新了。