100 lines
5.9 KiB
Markdown
100 lines
5.9 KiB
Markdown
---
|
||
title: "mihomo(Clash Meta 内核)架构与配置体系"
|
||
type: concept
|
||
last_updated: 2026-08-07
|
||
tags:
|
||
- "网络工具"
|
||
- "mihomo"
|
||
- "代理"
|
||
- "DNS"
|
||
- "TUN"
|
||
confidence: high
|
||
contested: false
|
||
raw_sources:
|
||
- path: "raw/技术/mihomo/官方文档-架构与核心概念-摘编.md"
|
||
hash: "sha256:d2540a477284aa6b46e1ae6ba8d34b2f909c521a7ed32de9474203dd9301299a"
|
||
- path: "raw/技术/mihomo/官方文档-配置编写-摘编.md"
|
||
hash: "sha256:17ad7664cb257744a3277c1709d15912156a521dcac1f014ccfd335f3880b1cf"
|
||
---
|
||
|
||
# mihomo(Clash Meta 内核)架构与配置体系
|
||
|
||
## 页面定位
|
||
|
||
本页解释 mihomo 内核是什么、它的分层架构与核心机制(DNS 防污染、规则路由、健康检查、提供者机制),是理解代理工具工作原理的**总览概念页**。实际写配置的逐步流程见 [[mihomo-配置编写指南]];字段级细节与模板见 `raw/技术/mihomo/` 两份摘编。
|
||
|
||
## 定义与项目背景
|
||
|
||
- **mihomo**(曾用名 Clash Meta)是原 Dreamacro/clash 的二次开发代理内核,Go 语言实现;默认分支 `Meta`(稳定)、`Alpha`(开发)。
|
||
- 兼容原版 Clash 全部特性,并吸收 sing-box、v2ray-core 等项目的实现;官方文档站 wiki.metacubex.one(中文,社区称"虚空终端")。
|
||
- 许可 GPL-3.0,附加条款:与 MetaCubeX 无关的下游项目不得在名称中使用 "mihomo"。
|
||
- 配套面板 metacubexd;客户端(Clash Verge Rev、CMFA 等)内嵌本内核。
|
||
- 构建要求 Go 1.20+;gvisor tun 栈需 `-tags with_gvisor` 编译。
|
||
|
||
## 分层架构
|
||
|
||
```
|
||
应用 → 入口监听(mixed-port/socks/tun/redir/tproxy/自定义 listeners)
|
||
→ 内置 DNS(fake-ip 或 redir-host)
|
||
→ 规则匹配(rules 自上而下,首条命中生效)
|
||
→ 出口(代理组/节点;DIRECT/REJECT/COMPATIBLE 内置出站)
|
||
→ 节点 → 目标服务器
|
||
```
|
||
|
||
- **入口**:mixed-port(HTTP+SOCKS 混合)、port、socks-port、tun、redir/tproxy(Linux 透明代理)、`listeners` 自定义入站(hysteria2/tuic/tun/ss/vmess 等)、`tunnels` 端口转发。
|
||
- **模式**:`rule`(默认)/ `global` / `direct`。
|
||
- **控制面**:RESTful API(external-controller + secret + 可选 TLS/Unix socket/namedpipe),`external-ui` 挂 Web 面板;可外置 DoH 服务器。
|
||
|
||
## 核心机制
|
||
|
||
### 1. DNS 防污染(fake-ip + fallback)
|
||
|
||
- `enhanced-mode: fake-ip` 时 DNS 返回 fake-ip 池(默认 `198.18.0.1/16`)的虚拟 IP,内核内部维护 域名→fake-ip 映射,实际建连按域名规则转发——客户端不接触真实解析结果,天然规避 DNS 污染;配合 TUN 可接管全部系统流量。
|
||
- `redir-host` 模式返回真实 IP。
|
||
- 防污染工作流:`nameserver`(国内 DNS)解析 → `fallback-filter` 判断结果非 CN 时改用 `fallback`(境外可信 DNS);`nameserver-policy` 按域名/geosite 精确指定解析器;`proxy-server-nameserver` 专门解析节点域名,避免"鸡蛋问题"。
|
||
|
||
### 2. 规则路由
|
||
|
||
- 规则自上而下首条命中;类型覆盖域名(DOMAIN/SUFFIX/KEYWORD/WILDCARD/REGEX/GEOSITE)、IP(GEOIP/IP-CIDR/IP-ASN/SRC-*)、端口、入站(IN-*)、进程(PROCESS-*)、UID、网络类型、逻辑组合(AND/OR/NOT/SUB-RULE)与 RULE-SET。
|
||
- 目标 IP 类规则可用 `no-resolve` 跳过 DNS 解析。
|
||
- GEOIP/GEOSITE 数据来自 meta-rules-dat,可 `geox-url` 自定义下载并自动更新。
|
||
|
||
### 3. 代理组与健康检查
|
||
|
||
- `select` 手动选择、`url-test` 按延迟选最优、`fallback` 按健康顺序优先、`load-balance` 负载均衡。
|
||
- 健康检查:`url`(如 gstatic generate_204)+ `interval` + `timeout` + `expected-status`;`lazy: true` 时未选中不测试。url 只测 `proxies` 字段的节点,`use` 引入的集合节点在 provider 内单独配 health-check。
|
||
|
||
### 4. 提供者机制(解耦配置)
|
||
|
||
- `proxy-providers`:http/file/inline 三种来源加载节点,支持间隔更新、经代理下载、age 加密订阅、override 覆写(字段覆盖 + yq v4 风格 `override-expr` 表达式)、filter 筛选。
|
||
- `rule-providers`:domain/ipcidr/classical 三种 behavior,yaml/text/mrs 格式,可远程更新;`path-in-bundle` 从 BundleMRS.7z 加载。
|
||
|
||
### 5. TUN / 透明代理 / 嗅探
|
||
|
||
- `tun`:虚拟网卡接管流量;stack system/gvisor/mixed;dns-hijack、auto-route、auto-redirect(Linux iptables)、strict-route 防泄漏;支持接口/UID/MAC/Android 应用级过滤。
|
||
- `sniffer`:对纯 IP/redir-host 流量嗅探 TLS/HTTP/QUIC 还原域名,使无域名流量也能走域名规则。
|
||
|
||
## 证据与不确定性
|
||
|
||
- 本页基于官方 README、官方文档与官方 config.yaml 示例(2026-08-07 抓取),字段定义可直接作为编写依据。
|
||
- 项目迭代快:文档已标注若干废弃字段(如 `sniffing`/`port-whitelist`、组内 `interface-name`/`routing-mark`、全局 `client-fingerprint`、`fallback-filter.geosite`),新配置应使用新写法。
|
||
- 官方示例中的服务器/密码/密钥均为占位符,不可直接使用。
|
||
|
||
## 失效条件与风险
|
||
|
||
- fake-ip 模式下内网/局域网域名(`*.lan`、`*.local`、设备管理页)未加 `fake-ip-filter` 将无法访问。
|
||
- 节点为域名但未配 `proxy-server-nameserver` 时可能解析失败。
|
||
- 规则顺序错误(如 MATCH 提前、GEOIP,CN 置于代理规则之前)导致分流错误。
|
||
- 对外监听(allow-lan / API 绑 0.0.0.0)无认证会暴露代理与 API 控制面。
|
||
|
||
## 相关页面
|
||
|
||
- [[mihomo-配置编写指南]] - 从零写 config.yaml 的逐步流程、模板与检查清单
|
||
- [[Obsidian-CLI-Wiki-Maintenance]] - 本仓库 Wiki 维护实践(同属"工具链"语境)
|
||
- [[Glossary|术语表]] - mihomo、fake-ip、代理组等术语定义
|
||
|
||
## 深入阅读
|
||
|
||
- raw 摘编:`raw/技术/mihomo/官方文档-架构与核心概念-摘编.md`、`raw/技术/mihomo/官方文档-配置编写-摘编.md`
|
||
- 官方仓库:https://github.com/MetaCubeX/mihomo ;官方文档:https://wiki.metacubex.one/
|