Files
my_wiki/raw/技术/mihomo/官方文档-架构与核心概念-摘编.md
T

9.7 KiB
Raw Blame History

title, source, source_date, extracted_date, type, tags, confidence, contested, evidence_boundary
title source source_date extracted_date type tags confidence contested evidence_boundary
mihomoClash Meta 内核)架构与核心概念摘编 MetaCubeX/mihomo 官方仓库 READMEhttps://github.com/MetaCubeX/mihomo,默认分支 Meta+ 官方文档 wiki.metacubex.one(虚空终端 Docs 2026-08-07 2026-08-07 source-derivative
mihomo
Clash
代理
网络工具
DNS
TUN
high false 抓取时间 2026-08-07。依据:① GitHub MetaCubeX/mihomo Meta 分支 README.mdraw.githubusercontent.com 抓取);② 官方文档 wiki.metacubex.one 的 简介/全局配置/通用字段/代理组/路由规则/DNS/代理集合/规则集合 章节;③ Alpha 分支 docs/config.yaml 全量示例(100,853 字符)。版本特性以文档写作时为基准,新版本可能新增或废弃字段;配置示例中的服务器地址、密码、密钥均为占位符,不可直接使用。文中"原神"指原版 ClashDreamacro/clash,已归档),"虚空终端"为 mihomo 的中文社区名。

来源说明

本文件是 mihomoClash Meta 内核)的架构与核心概念中文结构化摘编,内容综合官方仓库 README 与官方文档。配置编写细节见同目录《官方文档-配置编写-摘编.md》。

证据分级

  • 官方事实:README、官方文档、官方配置示例中的功能描述与字段定义。
  • 可复核机制DNS 防污染、fake-ip、规则路由、健康检查等可实际验证的机制。
  • 时效性提示:项目迭代快,部分字段(如已弃用的 sniffingport-whitelist、组内 interface-name/routing-mark、全局 client-fingerprintfallback-filter.geosite)在文档中已标记废弃,编写新配置时应使用新写法。

1. 项目定位

  • mihomo(曾用名 Clash Meta)是原 Dreamacro/clash"原神")的二次开发代理内核,Go 语言实现,默认分支 Meta(稳定),Alpha(开发)分支承载最新特性。
  • 功能上兼容原版 Clash 全部特性,并吸收 sing-box、v2ray-core 等项目的实现(见 README Credits)。
  • 许可 GPL-3.0;附加条款:任何与 MetaCubeX 无关的下游项目不得在名称中使用 "mihomo" 一词。
  • 配套 Dashboardmetacubexdhttps://github.com/MetaCubeX/metacubexd
  • 官方文档(中文):https://wiki.metacubex.one/ ;配置示例:docs/config.yamlAlpha 分支)。
  • 构建:Go 1.20+go build(可选 -tags with_gvisor 启用 gvisor tun 栈);国内网络可设 GOPROXY=https://goproxy.io,direct

2. 功能特性(官方 README

  1. 本地 HTTP/HTTPS/SOCKS 代理服务器,支持认证。
  2. 协议支持:VMess、VLESS、Shadowsocks、Trojan、Snell、TUIC、Hysteria 等。
  3. 内置 DNS 服务器,目标是最小化 DNS 污染攻击影响,支持 DoH/DoT 上游与 fake-ip。
  4. 基于域名、GEOIP、IPCIDR 或进程的规则路由,将数据包转发到不同节点。
  5. 远程策略组:自动 fallback、负载均衡或基于延迟自动选择节点。
  6. 远程提供者(proxy-providers / rule-providers):远程获取节点列表与规则,而非硬编码在配置中。
  7. Netfilter TCP 重定向(iptables),可部署在网关/路由器。
  8. 完整 HTTP RESTful API 控制器。

3. 分层架构与流量路径

应用 → 本地监听入口(mixed-port/socks/tun/redir/tproxy/自定义 listeners
     → DNS 解析(内置 DNSfake-ip 或 redir-host
     → 规则匹配(rules 自上而下,首条命中生效)
     → 出口(proxy-groups 或 proxiesDIRECT/REJECT/COMPATIBLE 内置出站)
     → 节点 → 目标服务器
  • 入口(inboundmixed-portHTTP+SOCKS 混合)、portHTTP)、socks-port、tun、redir-port、tproxy-port,以及 listeners 自定义入站(hysteria2、tuic、tun、ss/vmess 入口等,传入流量按 mode 匹配处理)。tunnels 提供端口转发(本地端口→目标,经指定 proxy)。
  • 运行模式 moderule(规则匹配,默认)、global(全局走 GLOBAL 策略组)、direct(全局直连)。
  • 内置出站DIRECT(直连)、REJECT(拒绝)、COMPATIBLE/PASS(兼容/放行)、GLOBAL(全局组)。代理组 empty-fallback 默认回退 COMPATIBLE
  • API 层external-controllerRESTful API,可配 secret、TLS、Unix socket、Windows namedpipe、CORS);external-ui 挂载 Web 面板,访问路径为 API 地址/ui;可在外置端口开启 DoH 服务器(external-doh-server)。

4. DNS 体系(防污染核心)

4.1 两种增强模式

  • fake-ip(推荐):DNS 返回 fake-ip 池(默认 198.18.0.1/16)中的虚拟 IP,mihomo 内部维护域名→fake-ip 映射;实际连接时按域名规则转发。优点:客户端不接触真实解析结果,规避 DNS 污染;配合 TUN 时所有流量可被内核接管。store-fake-ip: true 可持久化映射,重启后复用。
  • redir-host:返回真实 IP,行为与传统代理一致。

4.2 关键字段

  • nameserver:默认解析服务器(一般用国内/本地 DNS,如 114.114.114.114、DoH 阿里/腾讯)。
  • fallback:后备服务器(一般用境外可信 DNS,如 tls://8.8.8.8);配合 fallback-filter 判断 nameserver 返回的 IP 是否为 CN 以外(被视为污染)再改用 fallback 结果。
  • nameserver-policy:按域名(支持 +.domain、geosite、rule-set 键)指定解析服务器,优先级高于 nameserver/fallback。
  • default-nameserver:仅用于解析其他 DNS 服务器域名,必须为纯 IP 或加密 DNS,防止 DNS 服务器自身域名解析死循环。
  • proxy-server-nameserver:专门解析代理节点域名的 DNS(防止"鸡蛋问题"——节点域名需要代理才能解析时)。
  • direct-nameserverdirect 出口专用解析服务器。
  • enhanced-mode: fake-ip|redir-hostfake-ip-rangefake-ip-filter(不回发 fake-ip 的域名,如 *.lan、局域网设备、内网服务);fake-ip-filter-modeblacklist 默认/whitelist/rule)。
  • listen:监听 UDP/TCP 53 可作局域网 DNS 服务器;ipv6: false 时返回 AAAA 空结果。
  • respect-rules:DNS 上游连接是否遵守路由规则(需配置 proxy-server-nameserver;不建议与 prefer-h3 同用)。
  • 附加参数(# 连接):8.8.8.8/dns-query#proxy(经指定代理/策略组连接)、#RULES(遵守路由规则)、#h3=true(强制 DoH over HTTP/3)、#ecs=1.1.1.1/24(指定 EDNS Client Subnet)、skip-cert-verifydisable-qtype-65(屏蔽 HTTPS/TYPE65 解析)等。

4.3 防污染工作流(fake-ip 典型)

  1. 客户端请求域名 → mihomo 用 nameserver(国内)解析,或直接回 fake-ip;
  2. 若解析出境外 IPfallback-filter geoip 判断非 CN)→ 改用 fallback(境外可信 DNS)结果;
  3. 实际建连时按规则:命中代理规则的域名走节点,命中国内规则的走 DIRECT(用 nameserver 结果)。

5. TUN 与透明代理

  • tun.enable: true 创建虚拟网卡接管系统流量;stack: system|gvisor|mixedgvisor 需 with_gvisor 编译标签;mixed 默认 tcp 走 system、udp 走 gvisor)。
  • dns-hijack:劫持 0.0.0.0:53 的 DNS 请求。
  • auto-route:自动配置路由表(把默认流量导入 tun);auto-redirectLinux):自动配置 iptables 重定向 TCP,路由器场景可与 auto-route 组合。
  • strict-route:所有连接强制走 tun 防泄漏(本机其他设备将不可访问)。
  • 高级过滤(Linux/Android 部分需 auto-route):include/exclude-interface、uid、mac-address、Android 用户/应用包名;route-address 自定义路由段;mtugso 等。
  • iptables 透明代理:tproxy-port: 9898 + iptables: {enable: true, inbound-interface: eth0}
  • listeners 中的 tun 类型可多实例配置(高级用法)。

6. 流量嗅探(sniffer

  • 对无域名流量(TUN/Redir/TProxy 且 DNS 为 redir-host,或纯 IP 流量)嗅探 TLS/HTTP/QUIC 以还原域名,从而走域名规则。
  • override-destination:是否用嗅探结果作为实际访问目标。
  • force-domain(如 +.v2ex.com)强制嗅探;skip-* 跳过;sniff 配置各协议端口(TLS/QUIC 默认 443HTTP 默认 80)。
  • 已废弃写法:sniffingport-whitelist(被 sniffer.sniff 取代)。

7. 其他关键能力

  • Geo 数据GEOIP/GEOSITE/ASN 数据库,geox-url 自定义下载地址(meta-rules-dat release),geo-auto-update + geo-update-interval 自动更新;geodata-loader 有内存友好模式。
  • 订阅加密proxy-providers 支持 age 加密(age-secret-keyage-encryption.org/v1 armor 格式);命令行工具 mihomo age keygen/convert/decrypt/encryptmihomo generate ech-keypair 生成 ECH 密钥,mihomo convert-ruleset 转换 mrs 规则集。
  • 多路复用smuxsing-mux,协议 smux/yamux/h2mux)、TCP Brutal 拥塞控制(brutal-opts)、gRPC 多路复用。
  • 性能tcp-concurrent(并发连接所有解析 IP 取最快)、unified-delay(统一延迟计算)、TCP Fast Opentfo)、MPTCPmptcp)、keep-alive 调优。
  • 出站控制interface-name(绑定网卡)、routing-markfwmarkLinux)、dialer-proxy(节点经另一代理建立连接,可链式)。
  • 调试:API 提供 debug 接口;日志级别 silent/error/warning/info/debug。

8. 与周边生态的关系

  • 订阅/面板:metacubexd(官方面板)、Clash Verge Rev、Clash Meta for AndroidCMFA)等客户端内嵌 mihomo 内核。
  • 规则集数据源:MetaCubeX/meta-rules-datgeoip.dat/geosite.dat/mmdb/mrs 包)。
  • 上游/参考:Dreamacro/clash、SagerNet/sing-box、go-shadowsocks2、v2ray-core、wireguard-go。