核心原理 · 深度解析

Clash 是怎么工作的?

从流量入口到规则匹配再到协议出站,把 Clash 的完整代理链路拆开讲清楚——帮你真正理解规则分流、TUN 透明代理、DNS 防泄漏背后的机制,而不只是会粘贴配置。

一条请求是如何在 Clash 中被处理的?

当你在浏览器里打开一个网址,流量并不是直接发出去的。Clash 在本地监听一个或多个端口,拦截所有出站连接,经过规则引擎判断后,才决定走「直连」还是「代理出站」。

整个链路分为五个阶段,每个阶段都有 Clash 明确的介入点:

  1. 流量拦截——应用发起连接,系统代理或 TUN 虚拟网卡将流量转发给 Clash 进程
  2. DNS 解析——Clash 内置 DNS 模块介入,根据配置决定使用 Fake-IP 还是真实 IP 解析
  3. 规则匹配——按照 rules 列表从上到下逐条比对域名、IP、进程名等条件
  4. 策略组调度——命中某条规则后,交给对应策略组(Proxy / DIRECT / REJECT)处理
  5. 协议出站——使用选定节点的协议(SS / VMess / Trojan…)完成加密传输

Clash 规则引擎:优先级、匹配类型与执行顺序

规则引擎是 Clash 最核心的能力。它按照 rules 列表从第一条到最后一条逐行匹配,第一条命中的规则立刻生效,后续规则不再执行——顺序决定一切。

域名类规则

最常用的一类,精确到域名或后缀级别,适合对特定网站做分流。

DOMAINgoogle.comProxy
DOMAIN-SUFFIXgithub.comProxy
DOMAIN-KEYWORDyoutubeProxy
  • DOMAIN:精确匹配,仅命中完整域名
  • DOMAIN-SUFFIX:后缀匹配,同时命中所有子域名
  • DOMAIN-KEYWORD:关键词匹配,域名中含该词即命中

IP / 地理位置规则

基于目标 IP 地址或 GeoIP 数据库做判断,是「国内直连、国外代理」的核心规则。

IP-CIDR192.168.0.0/16DIRECT
IP-CIDR6fe80::/10DIRECT
GEOIPCNDIRECT
  • IP-CIDR:精确匹配 IPv4 子网段
  • IP-CIDR6:精确匹配 IPv6 子网段
  • GEOIP:调用 Country.mmdb 库查询归属地

进程 / 端口规则

按应用进程名或端口号做分流,适合针对特定软件(如开发工具、游戏客户端)单独配置出口。

PROCESS-NAMEchromeProxy
SRC-PORT7890DIRECT
DST-PORT443Proxy
  • PROCESS-NAME:按进程名匹配(macOS / Windows 支持较好)
  • DST-PORT:按目标端口匹配,常用于 80 / 443

规则集 RULE-SET

把成百上千条规则封装进一个远程订阅文件,客户端定时拉取更新,是大型分流方案的标准做法。

# rule-providers 定义规则集
RULE-SETgfwProxy
RULE-SETcn_domainDIRECT
  • 规则集支持 YAML / text 两种格式
  • 可设置 interval 自动定时更新
  • 社区常用:Loyalsoldier / blackmatrix7 等维护的规则集

规则顺序决定分流结果

规则从上到下依次匹配,第一条命中即生效,后续规则不再执行。常见错误:把 MATCH,DIRECT 放在 GEOIP 前面,会导致所有流量直连。推荐顺序:

  1. 本地 / 私网地址(IP-CIDR 192.168.0.0/16)→ DIRECT
  2. 明确需要代理的域名 / RULE-SET → Proxy 策略组
  3. 明确需要直连的域名 / RULE-SET → DIRECT
  4. GEOIP,CN,DIRECT——IP 归属国内则直连
  5. MATCH,Proxy——兜底,未命中的流量走代理

TUN 模式 vs 系统代理:区别与适用场景

Clash 支持两种接管流量的方式,选错模式是「某些 App 不走代理」的常见根因:

系统代理模式
TUN 透明代理
原理
在系统中注册 HTTP/SOCKS5 代理地址,应用主动连接该地址
创建虚拟网卡,在网络层拦截全部 IP 流量
覆盖范围
仅支持系统代理设置的应用(浏览器、大多数 App)
所有进程的所有出站流量,包括命令行工具、游戏客户端
需要权限
普通用户权限
管理员 / root 权限(创建虚拟网卡)
适合场景
日常浏览、简单代理需求
游戏加速、命令行工具代理、全局流量接管

TUN 模式配置示意

config.yaml
tun:
  enable: true
  stack: system # or gvisor
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

stack 选项system 使用系统网络栈性能更高,gvisor 用户态网络栈兼容性更好;Mihomo 内核还支持 mixed 混合模式。

Clash DNS 工作原理:Fake-IP、Redir-Host 与 DNS 防泄漏

DNS 泄漏是代理用户最容易忽视的安全盲区——你的流量走了代理,但 DNS 查询却被明文发给了本地 ISP,暴露你访问的域名。Clash 内置完整的 DNS 处理模块来应对这个问题。

Fake-IP 模式

推荐

Clash 收到 DNS 请求后,立刻返回一个虚假 IP(如 198.18.x.x),让应用尽快发起连接;真正的 DNS 解析推迟到节点侧完成,避免在本地提前泄露域名。

1 应用问:google.com 是多少?
2 Clash 返回假 IP 198.18.0.1
3 应用连接该假 IP,Clash 拦截并记录真实域名
4 节点侧重新解析并连接真实服务器
  • 连接速度更快(无需等待真实 DNS 响应)
  • 防泄漏效果好,域名不经过本地 DNS
  • 与规则引擎配合最流畅

Redir-Host 模式

兼容模式

先在本地完成真实 DNS 解析,把域名解析为真实 IP 后再交给规则引擎做 GEOIP 匹配。兼容性更好,但 DNS 查询本身可能泄露给本地 ISP。

1 应用问:google.com 是多少?
2 Clash 向上游 DNS 查询真实 IP
3 返回真实 IP,规则引擎用 IP 做 GEOIP 判断
4 按规则决定直连或代理
  • 对特殊网络环境兼容性更好
  • GEOIP 规则匹配更精确(基于真实 IP)
  • DNS 查询在本地发生,存在泄漏风险

DNS 配置参考

config.yaml — dns 块
dns:
  enable: true
  enhanced-mode: fake-ip # or redir-host
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 8.8.8.8
    - 114.114.114.114
  fallback: # used when GEOIP != CN
    - tls://1.1.1.1:853
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

fallback 配合 fallback-filter:当域名解析到国外 IP 时,自动用加密的 DoT / DoH 服务器重新解析,防止污染。

Clash 支持的代理协议:原理差异与选型建议

协议决定流量的加密方式和混淆策略。Clash 原生支持多种协议,Mihomo(Clash Meta)内核进一步扩展了对新一代协议的支持。

Shadowsocks(SS)

经典稳定

使用对称加密(AES / ChaCha20)对流量进行加密,外观上看起来像随机数据,能一定程度对抗深度包检测(DPI)。协议设计简洁,客户端支持最广泛。

加密AES-256-GCM / ChaCha20-Poly1305
传输层TCP / UDP
适合场景日常代理,节点广泛,入门首选

VMess

V2Ray 生态

V2Ray 项目设计的专属协议,在加密之外加入了时间戳验证和混淆能力,可配合 WebSocket + TLS 伪装成 HTTPS 流量,抗封锁能力强。

加密AES-128-GCM / ChaCha20-Poly1305
传输层TCP / WebSocket / gRPC / HTTP/2
适合场景高封锁环境,搭配 CDN 效果好

Trojan

TLS 伪装

直接在 TLS 层传输代理数据,外观与正常 HTTPS 完全一致,无需额外混淆层。服务端同时提供真实网页响应,进一步隐蔽代理特征。

加密TLS 1.3(证书验证)
传输层TCP / WebSocket
适合场景需要 TLS 伪装,流量特征最接近 HTTPS

Hysteria2

Mihomo 支持

基于 QUIC(UDP)的新一代高性能协议,在弱网、高丢包环境下表现显著优于 TCP 协议族。专为高延迟、不稳定网络场景设计。

传输层QUIC(基于 UDP)
优势弱网环境下速度更快,抗丢包能力强
要求需要 Mihomo(Clash Meta)内核

TUIC

Mihomo 支持

同样基于 QUIC,专注于低延迟和连接复用,0-RTT 握手设计减少首包延迟,适合对响应速度敏感的场景(如游戏、实时音视频)。

传输层QUIC(UDP)+ 0-RTT
优势超低首包延迟,连接复用效率高
要求需要 Mihomo(Clash Meta)内核

WireGuard

Mihomo 支持

现代 VPN 协议,代码量极少、审计简单,使用 ChaCha20 + Poly1305 加密,内核级实现性能极高。Mihomo 支持将 WireGuard 作为出站协议使用。

加密ChaCha20-Poly1305 / Curve25519
传输层UDP
要求需要 Mihomo(Clash Meta)内核

策略组详解:URL-Test 自动测速、Fallback 故障切换、负载均衡

策略组是规则「打包」和节点「调度」的核心机制。规则命中后,流量不直接交给某个节点,而是交给一个策略组——由策略组决定用哪个节点,实现自动测速、故障切换等能力。

select · 手动选择

用户从节点列表中手动挑选当前使用的节点,客户端通常在界面上直接展示。适合想要精细控制出口的用户。

type: select
proxies: [HK-01, SG-02, JP-03]

url-test · 延迟自动选优

定时对所有节点发出 HTTP 探测请求,自动选择响应延迟最低的节点。节点延迟超出 tolerance 阈值时才切换,避免频繁抖动。

type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50

fallback · 故障自动切换

按顺序使用第一个节点,当它无法通过健康检测时自动切换到第二个,以此类推。适合需要稳定性保障的场景。

type: fallback
url: http://www.gstatic.com/generate_204
interval: 180

load-balance · 负载均衡

多个节点轮流承担流量,将连接分散到不同节点上,提升整体吞吐量。Mihomo 支持 consistent-hashing 确保同一会话用同一节点。

type: load-balance
strategy: consistent-hashing
url: http://www.gstatic.com/generate_204

Clash 经典内核 vs Mihomo(Clash Meta):该用哪个?

Clash 目前有两条主要分支,日常使用时经常混称,但能力差异明显——尤其是协议支持和 TUN 增强功能。

Clash(经典)

Dreamacro/clash
  • Shadowsocks / VMess / Trojan / SNELL
  • HTTP / SOCKS5 代理
  • Rule / Global / Direct 三种模式
  • Fake-IP / Redir-Host DNS
  • TUN 模式(基础)
  • Hysteria2 / TUIC / WireGuard
  • 增强 TUN(gVisor / mixed stack)
  • 规则集提供商(rule-providers)进阶能力
VS

Mihomo(Clash Meta)

metacubex/mihomo
  • Shadowsocks / VMess / Trojan / SNELL
  • Hysteria2 / TUIC / WireGuard / VLESS
  • Rule / Global / Direct / Script 模式
  • Fake-IP + fallback-filter 增强 DNS
  • 增强 TUN(system / gVisor / mixed)
  • rule-providers 远程规则集订阅
  • Sub-Rule 子规则、GeoSite 数据库
  • 多架构:x86_64 / ARM / MIPS

结论:新用户直接选择基于 Mihomo(Clash Meta) 内核的客户端(如 Clash Verge Rev、Mihomo Party、Clash Meta for Android),能获得更完整的协议支持与 TUN 能力,无需折中。经典 Clash 内核的客户端仍然稳定,但协议生态的持续更新集中在 Mihomo 分支。

核心原理常见问题

Clash 的规则顺序为什么很重要?
规则引擎逐行从上往下匹配,第一条命中即生效、后续不再执行。如果把宽泛的 MATCH 放在前面,会导致下面所有规则永远不被触发。合理顺序应是:局域网 → 明确代理域名 → 明确直连域名 → GEOIP → MATCH 兜底。
Fake-IP 会导致某些应用出问题吗?
少数应用(如部分游戏、局域网服务)会对 198.18.x.x 段 IP 做特殊处理导致异常。Clash 提供 fake-ip-filter 配置项,可以把特定域名排除在 Fake-IP 之外,让它们走正常 DNS 解析。
TUN 模式开启后系统变慢是为什么?
TUN 模式拦截所有流量并在用户态处理,会比直接走内核网络栈多一层开销。Mihomo 的 system stack 比 gvisor 性能更高;若机器性能不足,可以只对特定应用开系统代理,不开 TUN。
VMess 和 Shadowsocks 哪个更安全?
两者在加密层面旗鼓相当(均使用 AEAD 加密)。区别在于流量特征:Shadowsocks 的流量特征相对简单;VMess 搭配 WebSocket+TLS 可以完全伪装成正常 HTTPS,在高强度检测环境下更不容易被识别和封锁。
url-test 策略组的测速 URL 有什么要求?
测速 URL 应该响应快、服务稳定,通常使用 Google 的 http://www.gstatic.com/generate_204(返回 204 空响应)或 http://cp.cloudflare.com/generate_204。建议使用能通过代理访问的境外地址,避免用国内地址造成误判。
Country.mmdb 是什么,多久需要更新一次?
Country.mmdb 是 MaxMind GeoIP2 格式的 IP 归属数据库,GEOIP 规则依靠它把 IP 地址映射到国家代码。建议每 1-3 个月更新一次,部分客户端支持自动更新。可从 Loyalsoldier 等社区维护的精化版本获取更准确的 CN IP 覆盖。

理解原理之后,下一步:下载并配置 Clash

选择适合你平台的客户端,三步完成安装与订阅配置,立即体验智能分流。