Skip to content

Mihomo Optimization

clash-verge2026 edited this page Jun 24, 2026 · 1 revision

Mihomo 内核深度调优:释放 Clash Meta 的隐藏性能

最后更新:2026-06-24 · 适用版本:Mihomo v1.17.0+ · 客户端:Clash Verge Rev

当你完成 安装基础配置 后,Clash Verge Rev 已经能流畅工作。但 Mihomo 内核还有大量“隐藏开关”等待发掘:智能协议嗅探、Geo 数据加载、自适应并发、内存优化……这份指南将带你逐项解锁,让代理性能再上一个台阶。

📑 本页目录


🎯 为什么要调优 Mihomo 内核?

Mihomo(原名 Clash Meta)是 Clash 生态中最活跃的分支。原版 Clash Premium 于 2023 年停更后,Mihomo 接管了所有新协议的开发:VLESS、Hysteria2、Tuic、WireGuard 等。但默认配置往往偏向兼容性而非性能。一个经过调优的内核,能带来以下显著收益:

  • 更精准的分流:Sniffer 模块可识别 HTTPS 流量中真实的域名,即使请求经过 CDN 或代理链。
  • 更快的规则匹配:优化 Geo 数据格式与加载策略,减少毫秒级延迟。
  • 更高的吞吐量:调整并发连接与缓冲区大小,榨干宽带潜力。
  • 更低的内存占用:连接复用与垃圾回收策略优化,适合低配设备。

以下每一项调优都是可选的,你可以按需组合,不必全部启用。


👃 协议嗅探(Sniffer)——让分流更聪明

在传统代理中,规则匹配依赖请求的目标域名或 IP。但当流量经过 CDN、Cloudflare Workers 或前置代理时,目标 IP 可能是通用的边缘节点,导致规则失效。Mihomo 的 Sniffer 模块可以在连接建立后,从 TLS ClientHello 或 HTTP Host 头中提取真实域名,以此重新匹配规则。

这在你通过 Cloudflare 等泛播网络访问时尤其重要。

基础配置

Sniffer 是一个独立的顶层配置段,不嵌套在其他模块中。以下是最常用的开启方式:

sniffer:
  enable: true
  sniffing:
    - tls
    - http
  force-dns-mapping: true
  parse-pure-ip: true

参数详解

参数 说明
enable: true 总开关,关闭后所有嗅探功能失效。
sniffing: [tls, http] 分别启用 TLS SNI 嗅探与 HTTP Host 嗅探。
force-dns-mapping: true 将嗅探到的域名强制写入 DNS 缓存,让后续规则能用域名匹配而非 IP。
parse-pure-ip: true 即使目标填的是纯 IP,也尝试嗅探其承载的域名。

进阶:跳过特定域名

某些内网设备或 IoT 设备不需要嗅探,可跳过以节省 CPU:

sniffer:
  enable: true
  sniffing:
    - tls
    - http
  skip-domain:
    - '+.local'
    - 'ntp.org'
    - '*.lan'

嗅探数据会显示在 Clash Verge Rev 的日志中,你可以看到类似 [Sniffer] sniffed domain: example.com 的条目,验证其工作状态。

💡 关联阅读:Sniffer 与 DNS 调优 配合使用效果最佳,详见下文。


🌍 Geo 数据优化——IP 与域名分流加速

Mihomo 的 GEOIP 和 GEOSITE 规则依赖本地数据库文件。默认情况下,这些文件可能较大且加载效率不高。优化后可以显著减少启动时间和内存占用。

切换为精简数据库

社区提供了更轻量的 Geo 数据文件,仅包含常用条目:

geodata-mode: true
geodata-loader: memconservative
geox-url:
  geoip: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat"
  geosite: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat"
  mmdb: "https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb"

参数说明

参数 说明
geodata-mode: true 启用 Mihomo 内置的 Geo 数据加载器。
geodata-loader: memconservative 使用内存优化模式,不将所有数据一次性载入。可选 standard(默认)或 memconservative
geox-url 自定义 Geo 数据下载地址,推荐使用 jsdelivr CDN 加速。

效果:切换到 memconservative 模式后,内存占用可降低约 30-50 MB,启动速度提升 1-2 秒。


⚡ 性能配置——并发、连接与缓冲区

Mihomo 暴露了一个 profile 模块,用于精细控制内核的运行时行为。以下是经过实测的优化参数:

profile:
  store-selected: true
  store-fake-ip: true
  tracing: false

在更底层的连接层面,还有这些全局参数可以微调(写在配置顶层即可):

# 全局连接优化
tcp-concurrent: true
unified-delay: true
keep-alive-interval: 30

缓冲区(高吞吐网络可适当调大)

buffer-size: 4096

参数详解

参数 说明
store-selected: true 持久化记录用户在策略组中手动选择的节点,重启后保持。
store-fake-ip: true 持久化 Fake-IP 映射表,重启后减少重新解析。
tracing: false 关闭调试追踪,减少 CPU 开销。开发调试时可打开。
tcp-concurrent: true 允许对同一地址并发发起 TCP 连接,提升建连速度。
unified-delay: true 触发测速时统一延迟判定,让 url-test 策略组更准确。
keep-alive-interval: 30 TCP Keep-Alive 间隔(秒),防止长时间空闲连接被断开。
buffer-size: 4096 单次读写缓冲区(字节),大带宽用户可设为 8192 或更高。

🧬 DNS 高级调优——缓存与预加载

基础 DNS 配置 之上,Mihomo 还支持 DNS 缓存、预加载和独立策略路由等进阶特性。

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - '+.local'
    - 'ntp.*'
    - 'time.*'
  use-hosts: true
  prefer-h3: true
  ipv6: false
  cache-size: 4096
  default-nameserver:
    - tls://223.5.5.5
    - tls://1.12.12.12
  nameserver:
    - tls://dns.quad9.net
    - https://dns.cloudflare.com/dns-query
  proxy-server-nameserver:
    - tls://8.8.8.8
  nameserver-policy:
    "geosite:cn,private":
      - tls://223.5.5.5
      - tls://119.29.29.29
    "geosite:geolocation-!cn":
      - tls://dns.quad9.net
      - https://dns.cloudflare.com/dns-query

新增参数说明

参数 说明
ipv6: false 关闭 IPv6 DNS 解析,避免 AAAA 干扰。若需 IPv6 则改为 true。
cache-size: 4096 DNS 缓存条目数,默认 256,较大值减少重复查询。建议 2048-4096。
prefer-h3: true 优先使用 HTTP/3 (QUIC) 进行 DNS 查询,降低延迟。
geosite:geolocation-!cn nameserver-policy 中为所有非中国域名指定加密 DNS,进一步防止泄漏。

📌 注意nameserver-policy 中的 geosite 规则需要你已经在 Geo 数据优化 中正确加载了 geosite 数据库。


🔗 TUN 栈调优——零拷贝与混合栈

Mihomo 的 TUN 实现支持多种底层栈,不同平台选择不同栈能获得额外性能。在 TUN 深度优化指南 中我们详细介绍了完整 TUN 配置,这里只聚焦内核层面的微调。

tun:
  enable: true
  stack: mixed
  device: Mihomo
  mtu: 1500
  gso: true
  gso-timeout: 100ms
  dns-hijack:
    - any:53
  auto-route: true
  auto-detect-interface: true
  strict-route: false
  route-address-set:
    - 198.18.0.0/16
    - 10.0.0.0/8
    - 172.16.0.0/12
    - 192.168.0.0/16

参数详解

参数 说明
stack: mixed 混合栈,TCP 走 System 栈(零拷贝),UDP 走 gVisor。可选 system(全零拷贝)或 gvisor
gso: true 启用 Generic Segmentation Offload,减少 CPU 负载。仅 Linux 有效。
gso-timeout: 100ms GSO 超时时间,过短会频繁发包,过长会增加延迟。
mtu: 1500 虚拟网卡 MTU,默认 9000,对某些网络环境改成 1500 更稳定。
strict-route: false 严格路由模式下,只有明确匹配规则才走 TUN。设为 false 让更多流量进入。
route-address-set 显式指定哪些 IP 段走 TUN,包含 Fake-IP 段和局域网段。

🧹 内存与资源优化

对于树莓派、NAS 等低配设备,或者长时间运行不重启的环境,以下选项可以帮助控制内存增长:

# 连接复用与限制
max-connections: 512
tcp-keep-alive-idle: 600
tcp-keep-alive-interval: 30

# 实验性:定期强制 GC
profile:
  store-fake-ip: false

低配设备推荐值

设备 max-connections buffer-size cache-size
树莓派 4B (2GB) 256 2048 1024
软路由 (4GB) 512 4096 2048
桌面 PC (8GB+) 1024 8192 4096

💡 关闭 store-fake-ip 会牺牲一点重启后的首次响应速度,但能显著减少持久化写入和内存占用。


🧪 实验性功能:脚本引擎与 eBPF

⚠️ 警告:以下功能仍处于实验阶段,可能存在稳定性问题,不建议在生产环境使用。

脚本引擎(Script Engine)

Mihomo 支持通过 Lua 或 Starlark 脚本在规则匹配阶段执行自定义逻辑,例如根据请求头动态选择节点:

script:
  enable: true
  engine: starlark
  path: ./scripts/custom.star

脚本可以访问请求上下文,实现极其灵活的流量编排。这是 Mihomo 区别于其他内核的杀手级特性。

eBPF 旁路(Linux 限定)

在 Linux 5.8+ 内核上,Mihomo 可借助 eBPF 实现零拷贝数据转发,极限吞吐量远超传统 TUN:

ebpf:
  enable: true
  mode: redirect
  auto-redir: true

启用后,内核会绕过用户态网络栈,直接将数据包从网卡转发到代理,适合跑满万兆宽带的极端场景。目前仅限 Linux,需以 root 权限运行。


📋 调优后完整配置参考

将以上优化整合到一份配置中。以下模板假设你已经拥有了基础节点与规则,仅展示调优相关部分:

# ============================================
# Mihomo 内核深度调优配置模板
# 仓库:https://github.com/clash-verge2026/clash-verge-rev-omni-guide
# 适用:Clash Verge Rev v2.6.0+ + Mihomo v1.17.0+
# ============================================

---- 嗅探 ----

sniffer: enable: true sniffing: [tls, http] force-dns-mapping: true parse-pure-ip: true skip-domain: ['+.local', 'ntp.org']

---- Geo 数据 ----

geodata-mode: true geodata-loader: memconservative geox-url: geoip: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat" geosite: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat" mmdb: "https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb"

---- 连接性能 ----

tcp-concurrent: true unified-delay: true keep-alive-interval: 30 buffer-size: 4096 max-connections: 512

---- 运行时配置 ----

profile: store-selected: true store-fake-ip: true tracing: false

---- DNS 高级 ----

dns: enable: true enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 fake-ip-filter: ['.lan', '+.local', 'ntp.', 'time.*'] use-hosts: true prefer-h3: true ipv6: false cache-size: 4096 default-nameserver: - tls://223.5.5.5 nameserver: - https://dns.cloudflare.com/dns-query proxy-server-nameserver: - tls://8.8.8.8 nameserver-policy: "geosite:cn,private": - tls://223.5.5.5 "geosite:geolocation-!cn": - tls://dns.quad9.net

---- TUN 高级 ----

tun: enable: true stack: mixed device: Mihomo mtu: 1500 dns-hijack: [any:53] auto-route: true auto-detect-interface: true strict-route: false route-address-set: - 198.18.0.0/16 - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16

---- 节点、提供者、策略组、规则均继承自你的基础配置 ----

proxies: ...

proxy-providers: ...

proxy-groups: ...

rule-providers: ...

rules: ...

将基础配置与以上调优合并,保存为 config.yaml,在 Clash Verge Rev 中重新导入即可生效。


❓ 调优排错 FAQ

1. 开启 Sniffer 后部分网站无法访问

某些老旧设备或非标准 TLS 实现可能被嗅探干扰。可将问题域名加入 skip-domain 列表,或临时关闭 parse-pure-ip 观察是否恢复。

2. Geo 数据更新失败或加载缓慢

中国大陆网络环境可能无法直接访问 GitHub 源。将 geox-url 替换为 jsdelivr CDN(如上例)通常可解决。若仍有问题,可手动下载 dat 文件并改用 file 本地加载。

3. 内存占用依然很高

首先确认 geodata-loader 设为 memconservative,并降低 cache-sizemax-connections。在「日志」中观察是否有大量连接堆积,必要时重启客户端释放。

4. Linux 上 GSO 不生效

确保内核版本 ≥ 5.4,且网卡驱动支持 GSO。可在终端执行 ethtool -k eth0 | grep generic-segmentation-offload 检查状态。若不支持,将 gso 设为 false 即可。


🚀 下一步学习

内核调优完成后,你的代理系统已经具备生产级的性能与稳定性。以下是进阶专题,继续深挖 Clash Verge Rev 的潜力:

⬅️ 返回配置精要 · 返回 Wiki 首页


本教程为 clash-verge-rev-omni-guide 项目的一部分。

Clone this wiki locally