-
Notifications
You must be signed in to change notification settings - Fork 0
Mihomo Optimization
最后更新:2026-06-24 · 适用版本:Mihomo v1.17.0+ · 客户端:Clash Verge Rev
当你完成 安装 与 基础配置 后,Clash Verge Rev 已经能流畅工作。但 Mihomo 内核还有大量“隐藏开关”等待发掘:智能协议嗅探、Geo 数据加载、自适应并发、内存优化……这份指南将带你逐项解锁,让代理性能再上一个台阶。
- 为什么要调优 Mihomo 内核?
- 协议嗅探(Sniffer)——让分流更聪明
- Geo 数据优化——IP 与域名分流加速
- 性能配置——并发、连接与缓冲区
- DNS 高级调优——缓存与预加载
- TUN 栈调优——零拷贝与混合栈
- 内存与资源优化
- 实验性功能:脚本引擎与 eBPF
- 调优后完整配置参考
- 调优排错 FAQ
- 下一步学习
Mihomo(原名 Clash Meta)是 Clash 生态中最活跃的分支。原版 Clash Premium 于 2023 年停更后,Mihomo 接管了所有新协议的开发:VLESS、Hysteria2、Tuic、WireGuard 等。但默认配置往往偏向兼容性而非性能。一个经过调优的内核,能带来以下显著收益:
- 更精准的分流:Sniffer 模块可识别 HTTPS 流量中真实的域名,即使请求经过 CDN 或代理链。
- 更快的规则匹配:优化 Geo 数据格式与加载策略,减少毫秒级延迟。
- 更高的吞吐量:调整并发连接与缓冲区大小,榨干宽带潜力。
- 更低的内存占用:连接复用与垃圾回收策略优化,适合低配设备。
以下每一项调优都是可选的,你可以按需组合,不必全部启用。
在传统代理中,规则匹配依赖请求的目标域名或 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 调优 配合使用效果最佳,详见下文。
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 配置 之上,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 数据库。
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 会牺牲一点重启后的首次响应速度,但能显著减少持久化写入和内存占用。
Mihomo 支持通过 Lua 或 Starlark 脚本在规则匹配阶段执行自定义逻辑,例如根据请求头动态选择节点:
script:
enable: true
engine: starlark
path: ./scripts/custom.star脚本可以访问请求上下文,实现极其灵活的流量编排。这是 Mihomo 区别于其他内核的杀手级特性。
在 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 中重新导入即可生效。
某些老旧设备或非标准 TLS 实现可能被嗅探干扰。可将问题域名加入 skip-domain 列表,或临时关闭 parse-pure-ip 观察是否恢复。
中国大陆网络环境可能无法直接访问 GitHub 源。将 geox-url 替换为 jsdelivr CDN(如上例)通常可解决。若仍有问题,可手动下载 dat 文件并改用 file 本地加载。
首先确认 geodata-loader 设为 memconservative,并降低 cache-size 与 max-connections。在「日志」中观察是否有大量连接堆积,必要时重启客户端释放。
确保内核版本 ≥ 5.4,且网卡驱动支持 GSO。可在终端执行 ethtool -k eth0 | grep generic-segmentation-offload 检查状态。若不支持,将 gso 设为 false 即可。
内核调优完成后,你的代理系统已经具备生产级的性能与稳定性。以下是进阶专题,继续深挖 Clash Verge Rev 的潜力:
- 🔗 TUN 深度优化 — 从 Wintun 驱动到 auto-route 的完整解析。
- 🛡️ DNS 防泄漏终极方案 — Fake-IP 原理与防污染实测。
- 🤖 AI 网站智能分流 — ChatGPT、Claude 等 AI 流量自动路由。
- 📑 Rule 白名单结构 — 构建自己的轻量分流规则。
- 📦 检查最新版本 — Mihomo 内核更新频繁,新版本可能带来更多优化参数。
⬅️ 返回配置精要 · 返回 Wiki 首页
本教程为 clash-verge-rev-omni-guide 项目的一部分。