Files
my_wiki/wiki/concepts/mihomo-内核与配置体系.md

100 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "mihomoClash 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"
---
# mihomoClash 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
→ 内置 DNSfake-ip 或 redir-host
→ 规则匹配(rules 自上而下,首条命中生效)
→ 出口(代理组/节点;DIRECT/REJECT/COMPATIBLE 内置出站)
→ 节点 → 目标服务器
```
- **入口**mixed-portHTTP+SOCKS 混合)、port、socks-port、tun、redir/tproxyLinux 透明代理)、`listeners` 自定义入站(hysteria2/tuic/tun/ss/vmess 等)、`tunnels` 端口转发。
- **模式**`rule`(默认)/ `global` / `direct`
- **控制面**RESTful APIexternal-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)、IPGEOIP/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 三种 behavioryaml/text/mrs 格式,可远程更新;`path-in-bundle` 从 BundleMRS.7z 加载。
### 5. TUN / 透明代理 / 嗅探
- `tun`:虚拟网卡接管流量;stack system/gvisor/mixeddns-hijack、auto-route、auto-redirectLinux 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/