9.7 KiB
9.7 KiB
title, source, source_date, extracted_date, type, tags, confidence, contested, evidence_boundary
| title | source | source_date | extracted_date | type | tags | confidence | contested | evidence_boundary | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mihomo(Clash Meta 内核)架构与核心概念摘编 | MetaCubeX/mihomo 官方仓库 README(https://github.com/MetaCubeX/mihomo,默认分支 Meta)+ 官方文档 wiki.metacubex.one(虚空终端 Docs) | 2026-08-07 | 2026-08-07 | source-derivative |
|
high | false | 抓取时间 2026-08-07。依据:① GitHub MetaCubeX/mihomo Meta 分支 README.md(raw.githubusercontent.com 抓取);② 官方文档 wiki.metacubex.one 的 简介/全局配置/通用字段/代理组/路由规则/DNS/代理集合/规则集合 章节;③ Alpha 分支 docs/config.yaml 全量示例(100,853 字符)。版本特性以文档写作时为基准,新版本可能新增或废弃字段;配置示例中的服务器地址、密码、密钥均为占位符,不可直接使用。文中"原神"指原版 Clash(Dreamacro/clash,已归档),"虚空终端"为 mihomo 的中文社区名。 |
来源说明
本文件是 mihomo(Clash Meta 内核)的架构与核心概念中文结构化摘编,内容综合官方仓库 README 与官方文档。配置编写细节见同目录《官方文档-配置编写-摘编.md》。
证据分级
- 官方事实:README、官方文档、官方配置示例中的功能描述与字段定义。
- 可复核机制:DNS 防污染、fake-ip、规则路由、健康检查等可实际验证的机制。
- 时效性提示:项目迭代快,部分字段(如已弃用的
sniffing、port-whitelist、组内interface-name/routing-mark、全局client-fingerprint、fallback-filter.geosite)在文档中已标记废弃,编写新配置时应使用新写法。
1. 项目定位
- mihomo(曾用名 Clash Meta)是原 Dreamacro/clash("原神")的二次开发代理内核,Go 语言实现,默认分支
Meta(稳定),Alpha(开发)分支承载最新特性。 - 功能上兼容原版 Clash 全部特性,并吸收 sing-box、v2ray-core 等项目的实现(见 README Credits)。
- 许可 GPL-3.0;附加条款:任何与 MetaCubeX 无关的下游项目不得在名称中使用 "mihomo" 一词。
- 配套 Dashboard:metacubexd(https://github.com/MetaCubeX/metacubexd)。
- 官方文档(中文):https://wiki.metacubex.one/ ;配置示例:
docs/config.yaml(Alpha 分支)。 - 构建:Go 1.20+;
go build(可选-tags with_gvisor启用 gvisor tun 栈);国内网络可设GOPROXY=https://goproxy.io,direct。
2. 功能特性(官方 README)
- 本地 HTTP/HTTPS/SOCKS 代理服务器,支持认证。
- 协议支持:VMess、VLESS、Shadowsocks、Trojan、Snell、TUIC、Hysteria 等。
- 内置 DNS 服务器,目标是最小化 DNS 污染攻击影响,支持 DoH/DoT 上游与 fake-ip。
- 基于域名、GEOIP、IPCIDR 或进程的规则路由,将数据包转发到不同节点。
- 远程策略组:自动 fallback、负载均衡或基于延迟自动选择节点。
- 远程提供者(proxy-providers / rule-providers):远程获取节点列表与规则,而非硬编码在配置中。
- Netfilter TCP 重定向(iptables),可部署在网关/路由器。
- 完整 HTTP RESTful API 控制器。
3. 分层架构与流量路径
应用 → 本地监听入口(mixed-port/socks/tun/redir/tproxy/自定义 listeners)
→ DNS 解析(内置 DNS:fake-ip 或 redir-host)
→ 规则匹配(rules 自上而下,首条命中生效)
→ 出口(proxy-groups 或 proxies;DIRECT/REJECT/COMPATIBLE 内置出站)
→ 节点 → 目标服务器
- 入口(inbound):mixed-port(HTTP+SOCKS 混合)、port(HTTP)、socks-port、tun、redir-port、tproxy-port,以及
listeners自定义入站(hysteria2、tuic、tun、ss/vmess 入口等,传入流量按mode匹配处理)。tunnels提供端口转发(本地端口→目标,经指定 proxy)。 - 运行模式 mode:
rule(规则匹配,默认)、global(全局走 GLOBAL 策略组)、direct(全局直连)。 - 内置出站:
DIRECT(直连)、REJECT(拒绝)、COMPATIBLE/PASS(兼容/放行)、GLOBAL(全局组)。代理组empty-fallback默认回退COMPATIBLE。 - API 层:
external-controller(RESTful 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-nameserver:direct 出口专用解析服务器。enhanced-mode: fake-ip|redir-host;fake-ip-range;fake-ip-filter(不回发 fake-ip 的域名,如*.lan、局域网设备、内网服务);fake-ip-filter-mode(blacklist 默认/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-verify、disable-qtype-65(屏蔽 HTTPS/TYPE65 解析)等。
4.3 防污染工作流(fake-ip 典型)
- 客户端请求域名 → mihomo 用 nameserver(国内)解析,或直接回 fake-ip;
- 若解析出境外 IP(fallback-filter geoip 判断非 CN)→ 改用 fallback(境外可信 DNS)结果;
- 实际建连时按规则:命中代理规则的域名走节点,命中国内规则的走 DIRECT(用 nameserver 结果)。
5. TUN 与透明代理
tun.enable: true创建虚拟网卡接管系统流量;stack: system|gvisor|mixed(gvisor 需with_gvisor编译标签;mixed 默认 tcp 走 system、udp 走 gvisor)。dns-hijack:劫持0.0.0.0:53的 DNS 请求。auto-route:自动配置路由表(把默认流量导入 tun);auto-redirect(Linux):自动配置 iptables 重定向 TCP,路由器场景可与 auto-route 组合。strict-route:所有连接强制走 tun 防泄漏(本机其他设备将不可访问)。- 高级过滤(Linux/Android 部分需 auto-route):include/exclude-interface、uid、mac-address、Android 用户/应用包名;
route-address自定义路由段;mtu、gso等。 - 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 默认 443,HTTP 默认 80)。- 已废弃写法:
sniffing、port-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-key,age-encryption.org/v1 armor 格式);命令行工具mihomo age keygen/convert/decrypt/encrypt;mihomo generate ech-keypair生成 ECH 密钥,mihomo convert-ruleset转换 mrs 规则集。 - 多路复用:smux(sing-mux,协议 smux/yamux/h2mux)、TCP Brutal 拥塞控制(brutal-opts)、gRPC 多路复用。
- 性能:
tcp-concurrent(并发连接所有解析 IP 取最快)、unified-delay(统一延迟计算)、TCP Fast Open(tfo)、MPTCP(mptcp)、keep-alive调优。 - 出站控制:
interface-name(绑定网卡)、routing-mark(fwmark,Linux)、dialer-proxy(节点经另一代理建立连接,可链式)。 - 调试:API 提供 debug 接口;日志级别 silent/error/warning/info/debug。
8. 与周边生态的关系
- 订阅/面板:metacubexd(官方面板)、Clash Verge Rev、Clash Meta for Android(CMFA)等客户端内嵌 mihomo 内核。
- 规则集数据源:MetaCubeX/meta-rules-dat(geoip.dat/geosite.dat/mmdb/mrs 包)。
- 上游/参考:Dreamacro/clash、SagerNet/sing-box、go-shadowsocks2、v2ray-core、wireguard-go。