核心架构
Clash(Mihomo)是基于 Go 语言开发的高性能规则分流代理核心引擎,理解其架构有助于编写出更精准高效的配置。
架构概览
Mihomo(原 Clash.Meta)核心由以下几个核心子系统协同工作:
mixed-port 可同时提供 HTTP+SOCKS5 混合端口。rules 列表,对每条连接决策走代理还是直连。支持 DOMAIN、IP-CIDR、GeoIP、PROCESS-NAME 等 20+ 种匹配条件,命中即停止。external-controller 暴露 RESTful API,可实时切换代理节点、查看流量统计、刷新配置。兼容 Clash Dashboard、Yacd、MetaCubeXD 等 Web 控制面板。流量处理流程
一条网络请求从应用发出,到最终由 Clash 转发,经历以下处理链路:
198.18.x.x),应用发起连接时携带此假 IP,Clash 入站识别后还原域名,再走规则引擎匹配,彻底防止真实 IP 暴露给本地应用,从根本上杜绝 DNS 泄漏。
代理模式
Clash 支持四种工作模式,通过配置文件的 mode 字段或客户端界面切换:
根据 rules 列表逐条匹配,决定每个连接走代理还是直连。国内网站直连保速,境外网站自动走代理,兼顾速度与隐私,是绝大多数用户的最佳选择。
mode: rule所有流量(包括国内)均通过代理服务器转发。适合需要完整出口 IP 一致性的场景(如海外账号操作),但会导致国内访问速度下降。
mode: global所有流量不经过任何代理,直接发出,相当于关闭代理功能。通常用于排查代理本身是否影响连接,或临时关闭代理而不退出客户端。
mode: direct用 JavaScript 编写完全自定义的路由逻辑,可访问请求的域名、IP、端口、进程名等所有属性,实现远超规则列表的灵活控制。
mode: script| 特性 | 系统代理(System Proxy) | TUN 模式 |
|---|---|---|
| 工作层级 | 应用层(Layer 7) | 网络层(Layer 3) |
| 覆盖范围 | 仅支持代理的应用(浏览器等) | 全部流量(游戏、命令行、所有 APP) |
| 所需权限 | 普通用户权限 | 需要管理员 / root 权限 |
| 配置复杂度 | 简单,客户端一键开启 | 需要安装网络驱动(自动) |
| 推荐场景 | 日常浏览器上网 | 游戏加速、Steam、全局代理 |
DNS 机制
Clash 内置 DNS 解析器,通过精细控制 DNS 查询来防止泄漏并实现更精准的分流:
dns: enable: true enhanced-mode: fake-ip # fake-ip | redir-host fake-ip-range: 198.18.0.1/16 listen: 0.0.0.0:1053 nameserver: - https://doh.pub/dns-query # DoH 国内 - https://dns.alidns.com/dns-query fallback: - https://1.1.1.1/dns-query # DoH 境外备用 - tls://8.8.8.8:853 fallback-filter: geoip: true geoip-code: CN
规则语法
Clash 规则系统是其最强大的功能之一,通过 YAML 格式精确控制每一条流量的走向。
规则格式
每条规则由三个部分组成,中间用英文逗号 , 分隔:
规则按从上到下的顺序逐一匹配,命中第一条即停止,未命中任何规则则使用最后一条 MATCH 兜底。
规则类型详解
DOMAIN,www.google.com,PROXYDOMAIN-SUFFIX,google.com,PROXYDOMAIN-KEYWORD,googleapis,PROXYDOMAIN-REGEX,^(www\.)?google\.com$,PROXYno-resolve 参数可跳过 DNS 解析。IP-CIDR,192.168.0.0/16,DIRECT,no-resolveIP-CIDR6,2400:3200::/32,DIRECTGEOIP,CN,DIRECTGEOSITE,cn,DIRECTPROCESS-NAME,steam.exe,DIRECTPROCESS-PATH,/usr/bin/curl,PROXYtcp 或 udp。NETWORK,udp,REJECTDST-PORT,443,PROXYRULE-SET,gfw,PROXYMATCH,🚀 节点选择🚀 节点选择)外,还有三个内置关键字:
DIRECT— 直接连接,不走任何代理PROXY— 走默认代理(等效于使用proxies中第一个节点)REJECT— 拒绝连接(广告过滤常用)
策略组(proxy-groups)
策略组是 Clash 规则体系的核心,将多个节点组合成具有不同选路行为的逻辑组:
type: selectinterval 设置测速间隔(秒),tolerance 设置切换容差(ms)。type: url-testtype: fallbackconsistent-hashing(同域名固定节点)和 round-robin(轮询)两种策略。type: load-balancetype: relay完整配置示例
以下是一个包含核心配置、代理节点、策略组和规则列表的完整 config.yaml 示例:
# ── 基础配置 ────────────────────────────────────── mixed-port: 7890 # HTTP + SOCKS5 混合端口 allow-lan: false mode: rule log-level: info external-controller: 127.0.0.1:9090 # ── DNS ────────────────────────────────────────── dns: enable: true enhanced-mode: fake-ip nameserver: - https://doh.pub/dns-query # ── 代理节点 ──────────────────────────────────── proxies: - name: 香港 01 type: vmess server: hk1.example.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 cipher: auto tls: true network: ws ws-opts: path: /ws headers: Host: hk1.example.com # ── 策略组 ────────────────────────────────────── proxy-groups: - name: 🚀 节点选择 type: select proxies: - ♻️ 自动选择 - 香港 01 - DIRECT - name: ♻️ 自动选择 type: url-test url: https://www.gstatic.com/generate_204 interval: 300 tolerance: 50 proxies: - 香港 01 # ── 规则列表 ──────────────────────────────────── rules: - GEOSITE,cn,DIRECT # 国内域名直连 - GEOIP,CN,DIRECT # 国内 IP 直连 - DOMAIN-SUFFIX,local,DIRECT # 局域网直连 - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - MATCH,🚀 节点选择 # 其余流量走代理
协议支持列表
Clash(Mihomo)原生支持 20+ 种主流代理协议,兼容绝大多数机场订阅与自建节点方案。
支持协议一览
传输层选项(Transport)
VMess、VLESS、Trojan 等协议支持在底层协议之上叠加多种传输方式,进一步增强流量伪装能力:
主流协议对比
根据速度、抗封锁能力和配置复杂度综合对比,帮助您选择最适合的协议:
| 协议 | 速度 | 抗封锁 | 配置难度 | 适合场景 | 推荐度 |
|---|---|---|---|---|---|
| VLESS + Reality | 中等 | 自建节点首选 | 极力推荐 | ||
| Hysteria2 | 简单 | 弱网 / 高延迟环境 | 极力推荐 | ||
| Trojan | 简单 | 日常翻墙主力 | 推荐 | ||
| VMess + WS + TLS | 中等 | CDN 中转场景 | 推荐 | ||
| TUIC v5 | 中等 | 低延迟小包场景 | 推荐 | ||
| Shadowsocks | 极简 | 机场订阅 / 入门 | 常用 | ||
| WireGuard | 较难 | 企业 VPN / Warp | 场景适用 |