官方知识库 · 完整知识体系与全维度参考

从 Clash 协议到 Mihomo 内核,从 DNS 原理到 YAML 语法,这里系统梳理了代理工具运行的底层逻辑。无论是建立认知框架还是快速查阅细节,Wiki 都能提供准确、体系化的参考。

Clash 协议 Mihomo 内核 DNS 原理与配置 TUN 虚拟网卡 GeoIP 数据说明 YAML 配置语法

📘 Clash 协议详解

🧬 什么是 Clash?

Clash 是一套开源的代理工具核心规范,定义了规则分流策略组代理节点管理的标准模型。它并非单一软件,而是一种被多个客户端(包括 Clash Verge Rev)遵循的配置范式。

🔀 分流规则体系

Clash 规则按优先级从上到下匹配,支持 DOMAINDOMAIN-SUFFIXGEOIPIP-CIDR 等多种类型。每条规则将匹配的流量导向指定策略组,实现精细化流量调度。

🧩 策略组与代理链

策略组是节点选择的逻辑单元。常见类型包括 select(手动)、url-test(自动选优)、fallback(故障转移)和 load-balance(负载均衡)。策略组之间可以嵌套,形成灵活的代理链。

📡 支持的代理协议

原生支持 Shadowsocks、VMess、Trojan、HTTP/SOCKS5 等协议。通过 Mihomo 内核的扩展,还可兼容更多新兴协议,确保广泛的节点兼容性。

📄 配置文件格式

Clash 配置文件使用 YAML 格式,以 generalproxiesproxy-groupsrules 等段落组织。严格缩进和正确的字段名是关键,错误的格式将导致配置无法加载。

⚖️ 规则匹配优先级

规则按从上到下的顺序依次匹配,首次命中即停止。因此更精确的规则应放在前面,最末尾的 MATCH 规则作为兜底,确保所有流量都有明确去向。


⚙️ Mihomo 内核文档

🚀 内核定位

Mihomo 是 Clash Verge Rev 的底层引擎,负责协议解析规则匹配连接调度DNS 处理。它采用 Go 语言编写,具备高并发和低资源占用的特性。

性能优势

相比传统 Clash 内核,Mihomo 在连接复用、内存管理和规则编译方面进行了大量优化,单机可支撑数万并发连接,适合服务器部署和高负载场景。

🔧 可调优参数

  • buffer-size:调整缓冲区大小,影响大文件传输速度。
  • tcp-concurrent:控制 TCP 并发连接数上限。
  • keep-alive-interval:设置连接保活间隔,减少断线。

🔄 更新与维护

Mihomo 内核独立于 GUI 更新,可在客户端内一键升级。版本更新会带来性能提升、新协议支持和安全补丁,建议保持最新。

🆚 与 Clash 原版的区别

Mihomo 在 Clash 基础上重写了连接池DNS 模块,修复了部分内存泄漏问题,并加入了对 WireGuard 等新协议的支持,整体更稳定高效。

🔨 编译与自定义构建

高级用户可以从源码编译 Mihomo,通过修改 build tags 可裁剪不需要的功能,获得更小的二进制体积,或启用实验性特性进行测试。


🌐 DNS 原理与配置

🔍 DNS 的作用

DNS(域名系统)将人类可读的域名转换为 IP 地址。代理工具中 DNS 配置直接影响域名分流准确性隐私防护。错误的 DNS 设置可能导致泄漏或分流失效。

🔐 DoH/DoT 加密

DNS over HTTPS(DoH)和 DNS over TLS(DoT)对 DNS 查询进行加密,防止运营商或中间人窥探。Clash Verge Rev 推荐使用加密 DNS 作为上游服务器。

🪞 Fake-IP 模式

开启 Fake-IP 后,DNS 解析返回虚拟 IP 地址,并在内存中维护域名-IP 映射表。规则可以直接基于 IP 匹配,无需重复解析,大幅提升规则引擎效率。

🛡️ DNS 防泄漏

通过设置 dns.ipv6 为 false 禁止 IPv6 查询泄漏,启用 fallback-filter 防止回退到本地 DNS,搭配 Fake-IP 共同构筑防护体系。

DNS over QUIC (DoQ)

DoQ 基于 QUIC 协议,比传统 DoH/DoT 更快更安全。Mihomo 内核支持将 DoQ 服务器设为上游,进一步降低解析延迟并增强抗干扰能力。

🗄️ 域名解析缓存

客户端可配置 DNS 缓存时间(cache-ttl),合理的缓存值能减少对外查询频率,加速重复访问,但过长可能导致 IP 变化时延迟生效。


🖧 TUN 虚拟网卡

📡 TUN 是什么?

TUN 是操作系统层面的虚拟网络接口,可以拦截所有进出设备的 IP 包。Clash Verge Rev 通过创建 TUN 设备实现全局流量接管,使不支持代理的应用也能走代理。

🔄 与系统代理的区别

系统代理仅影响遵循系统代理设置的应用(如浏览器)。TUN 模式工作在更低层,可接管命令行工具Docker 容器WSL 等所有网络流量。

⚙️ 配置要点

  • enable: true 开启 TUN。
  • stack: system 使用系统网络栈。
  • auto-route: true 自动设置路由规则。
  • auto-detect-interface: true 自动检测网卡。

⚠️ 注意事项

部分安全软件可能与 TUN 驱动冲突;Linux 下需要 root 权限或配置 CAP_NET_ADMIN;开启 TUN 后请确保 DNS 也正确配置以防泄漏。

🔌 TUN 驱动安装与卸载

Windows 下 TUN 驱动(如 wintun)随客户端附带,无需手动安装。macOS/Linux 则依赖系统内核模块。若出现问题,可通过客户端设置中的重置 TUN 驱动功能修复。

🗺️ 路由表管理

TUN 启动时会自动添加路由规则,将特定流量导向虚拟网卡。用户也可通过route-address 自定义 CIDR 列表,精确控制哪些 IP 段走代理。


🌍 GeoIP 数据说明

📊 GeoIP 是什么?

GeoIP 是 IP 地址归属地的数据库,用于判断某个 IP 属于哪个国家或地区。Clash Verge Rev 使用 离线 GeoIP 数据库 进行 GEOIP 规则匹配,无需联网查询。

🔄 数据更新

GeoIP 数据库由社区维护,每月更新一次以反映最新的 IP 分配情况。客户端支持自动拉取最新数据库,确保分流准确性。

🎯 应用场景

常见的 GEOIP,CN,Direct 规则将所有中国大陆 IP 流量直连,避免代理绕行导致速度下降。也可用于按国家分流业务流量与日常通信。

🧪 自定义 GeoIP

用户可以通过 YAML 文件加载自定义的 GeoIP 规则,覆盖默认数据库,实现私有 IP 段或特殊区域的分流逻辑。

🗂️ GeoIP 数据库格式

默认使用 MMDB 格式(MaxMind Database),体积小查询快。也可手动替换为其他兼容格式的数据库,以满足特定隐私或精度需求。

🔗 与直连规则的结合

GeoIP 常与 DOMAIN-SUFFIX 配合使用,例如将国内域名与 GEOIP-CN 同时设为直连,双重过滤确保访问速度与稳定性。


📄 YAML 配置语法

📋 YAML 基础

YAML 是一种人类可读的数据序列化格式,使用缩进表示层级关系。Clash 配置文件完全采用 YAML 编写,要求严格的缩进(2 空格)和正确的键值对格式。

🧱 配置结构

标准配置文件包含 generalproxiesproxy-groupsrulesdns 等顶层段。每个段下又包含若干字段,Clash Verge Rev 会自动校验配置合法性。

🚫 常见错误

  • 缩进不一致(混用空格和 Tab)
  • 漏写或错写字段名
  • 策略组引用不存在的节点
  • 规则中指定了未定义的策略组

🧰 校验工具

Clash Verge Rev 内置了 YAML 语法检查器,会在加载配置时提示错误行号和类型。也可使用在线 YAML 校验工具预先检查,确保配置准确。

📑 多文档支持

YAML 使用 --- 分隔符支持多个文档共存于同一文件。Clash 允许将不同策略组或规则集分段编写,方便模块化管理与复用。

💬 注释与最佳实践

使用 # 添加注释说明规则用途,便于维护。建议为每条自定义规则写上注释,并在修改后立即测试,养成配置版本管理的习惯。