Clash 的运行原理(2):实例和各种代理协议

1. 一次 HTTPS 请求在 Clash 中的完整生命周期
以访问 https://www.google.com 为例。
第一步:应用发起 DNS 查询
浏览器要访问:
1 | www.google.com |
它先请求 DNS 解析。
第二步:Clash DNS 返回 fake-ip
如果开启 fake-ip,Clash 可能返回:
1 | www.google.com → 198.18.0.23 |
同时 Clash 记录映射:
1 | 198.18.0.23 → www.google.com |
第三步:浏览器连接 fake-ip
浏览器以为 198.18.0.23 就是目标地址,于是建立 TCP 连接。
第四步:连接进入 Clash
由于系统代理、TUN 或透明代理规则,这条连接进入 Clash。Clash 查映射表,知道:
1 | 198.18.0.23 实际对应 www.google.com |
第五步:规则匹配
Clash 检查规则:
1 | - DOMAIN-SUFFIX,google.com,PROXY |
命中后,决定走 PROXY 策略组。
第六步:策略组选择节点
假设当前 PROXY 选择的是 trojan-node-1。
Clash 使用 Trojan 协议连接远程服务器。
第七步:远程代理服务器连接目标网站
路径变为:
1 | 浏览器 |
浏览器和 Google 之间的 HTTPS 内容仍然由浏览器和 Google 端到端加密。Trojan 服务器通常能看到连接目标,但不能直接读取 HTTPS 正文。
2. 各种协议的异同与工作原理
下面逐个解释 Clash 中常见的出站协议。
2.1 SOCKS5
SOCKS5 是通用代理协议。它的职责是让客户端告诉代理服务器:请帮我连接某个目标地址和端口。
典型流程:
1 | 客户端 → SOCKS5 代理:我要连接 example.com:443 |
SOCKS5 的特点:
1 | 支持 TCP |
在 Clash 中,SOCKS5 可以作为本地入站,也可以作为远程出站。
SOCKS5 更像一个基础代理接口,而不是安全隧道。它是否安全,取决于它运行在哪条链路上。如果 SOCKS5 只在本机 127.0.0.1 使用,风险较低;如果远程 SOCKS5 没有加密地暴露在网络上,就容易被监听或滥用。
2.2 HTTP 代理
HTTP 代理主要服务于 Web 流量。
对于普通 HTTP 请求:
1 | 浏览器 → HTTP 代理 → 目标网站 |
对于 HTTPS 请求,通常使用 CONNECT 方法:
1 | 浏览器 → HTTP 代理:CONNECT example.com:443 |
HTTP 代理特点:
1 | 标准化程度高 |
HTTP 代理和 SOCKS5 都属于基础代理协议,不是为抗识别或复杂加密代理设计的。
2.3 Shadowsocks
Shadowsocks 是轻量加密代理协议,可以理解为“加密的 SOCKS 风格代理”。
典型结构:
1 | App |
本地客户端接收应用请求,使用预共享密码和加密算法把数据加密后发给远程服务器。远程服务器解密后,再连接目标网站。
特点:
1 | 轻量 |
Shadowsocks 的安全性主要依赖加密算法、密码强度、服务端实现和配置。现代配置通常使用 AEAD 类加密,提供机密性和完整性。
它的缺点是流量形态不像标准 HTTPS。虽然内容加密,但协议特征可能和普通 HTTPS 不同。
2.4 Trojan
Trojan 的核心思想是把代理流量隐藏在 TLS 连接里,使外观看起来更接近普通 HTTPS。
典型路径:
1 | Clash |
Trojan 客户端与服务器建立 TLS 连接。TLS 建立后,客户端在加密通道内发送认证信息和代理请求。服务端验证通过后,代理流量;验证失败时,服务端可以表现得像一个普通 HTTPS 网站。
特点:
1 | 依赖 TLS |
Trojan 和 Shadowsocks 的关键区别:
1 | Shadowsocks:自有加密代理协议。 |
Trojan 的实际隐蔽性取决于 TLS 指纹、证书配置、服务器行为、SNI、ALPN、回落网站等因素。不是只要叫 Trojan 就一定“完全像 HTTPS”。
2.5 VMess
VMess 是 V2Ray 生态中的代理协议,早期是 V2Ray 的主力协议。
典型路径:
1 | Clash / V2Ray 客户端 |
VMess 的特点是:
1 | 支持用户 ID 认证 |
VMess 本身提供一定加密和认证,但在实际部署中经常和 TLS、WebSocket、gRPC 等传输层组合,以改善兼容性或伪装效果。
它的缺点是协议复杂度较高,现代 Xray/V2Ray 生态中很多新配置更倾向于 VLESS。
2.6 VLESS
VLESS 可以理解为 VMess 的轻量化后继协议。它去掉了 VMess 中一些内建加密和冗余设计,把安全和伪装更多交给外层传输,如 TLS、XTLS、REALITY、gRPC、WebSocket 等。
典型组合:
1 | VLESS + TLS |
VLESS 的特点:
1 | 协议更轻 |
理解 VLESS 时不能只看 VLESS 四个字。真正的安全性和流量形态取决于完整组合。
例如:
1 | VLESS 裸跑:不推荐。 |
VLESS 的优势是灵活,但配置复杂度也更高。
2.7 Hysteria
Hysteria 是基于 QUIC/UDP 思路的代理协议,目标之一是改善高延迟、高丢包网络中的传输表现。
典型路径:
1 | Clash |
Hysteria 特点:
1 | 基于 UDP / QUIC |
它适合 UDP 可用、但 TCP 线路质量差的场景。QUIC 在 UDP 上实现自己的会话、加密、流复用和拥塞控制,因此可以绕开部分 TCP 层面的性能问题。
但它的限制也明显:
1 | 如果 UDP 被封锁,可能不可用。 |
Hysteria 不是“必然更快”,它更像是为特定网络环境优化的 QUIC 代理。
2.8 TUIC
TUIC 也是基于 QUIC/UDP 的代理协议,强调低延迟、0-RTT、流复用和 UDP 代理能力。
典型路径:
1 | Clash |
TUIC 特点:
1 | 基于 QUIC |
Hysteria 和 TUIC 的共同点:
1 | 都基于 UDP/QUIC |
大致区别:
1 | Hysteria 更强调弱网吞吐和拥塞控制。 |
如果网络环境对 UDP 不友好,二者都可能不如 Trojan、VLESS + TLS 这类 TCP/TLS 协议稳定。
2.9 WireGuard
WireGuard 和前面这些协议不在同一个层级。它不是普通代理协议,而是三层 VPN 隧道协议。
典型路径:
1 | App |
WireGuard 的核心特点:
1 | 工作在三层 |
WireGuard 的路由机制通常基于 AllowedIPs,也就是某个 peer 允许承载哪些 IP 段。
例如:
1 | AllowedIPs = 10.0.0.0/8 |
表示访问 10.0.0.0/8 这段内网地址时走该 WireGuard 对端。
它和 Clash 常见代理协议的关键区别:
1 | Shadowsocks / Trojan / VLESS:代理某些连接。 |
WireGuard 非常适合远程办公和内网访问,但它默认不伪装成 HTTPS,也不主打抗识别。它的流量特征比较明确,且依赖 UDP。
3. 常见协议横向对比
| 协议 | 类型 | 加密 | 底层传输 | UDP 支持 | 伪装能力 | 典型用途 |
|---|---|---|---|---|---|---|
| SOCKS5 | 基础代理 | 无 | TCP,可支持 UDP | 有 | 弱 | 通用代理接口 |
| HTTP Proxy | 基础代理 | 无,除非套 TLS | TCP | 弱 | 弱 | Web 代理、企业代理 |
| Shadowsocks | 加密代理 | 有 | TCP/UDP | 有 | 中等 | 轻量代理 |
| Trojan | TLS 代理 | 有 | TCP/TLS | 有,取决于实现 | 较强 | HTTPS 风格代理 |
| VMess | V2Ray 协议 | 有 | TCP/WS/gRPC/TLS 等 | 有 | 取决于组合 | V2Ray 旧生态 |
| VLESS | 轻量代理协议 | 依赖外层 TLS/XTLS/REALITY | TCP/WS/gRPC/REALITY 等 | 有 | 强,取决于组合 | Xray 新生态 |
| Hysteria | QUIC 代理 | 有 | UDP/QUIC | 强 | 中等 | 弱网加速、UDP 可用场景 |
| TUIC | QUIC 代理 | 有 | UDP/QUIC | 强 | 中等 | 低延迟 QUIC 代理 |
| WireGuard | 三层 VPN | 有 | UDP | 原生 | 弱 | 远程组网、内网访问 |
选择时可以按场景理解:
1 | 只需要本地代理接口:SOCKS5 / HTTP |
4. Clash 与传统 VPN 的区别
传统 VPN 的典型路径:
1 | 系统所有 IP 流量 |
Clash 的典型路径:
1 | 应用流量 / TUN 流量 |
主要区别:
| 项目 | 传统 VPN | Clash |
|---|---|---|
| 核心定位 | 网络隧道 | 规则代理转发引擎 |
| 工作层级 | 通常三层或二层 | 入站可应用层,也可 TUN 三层 |
| 分流能力 | 依赖路由表或客户端规则 | 域名/IP/端口/进程/地区规则丰富 |
| 出站协议 | 通常单一 VPN 协议 | 支持多种代理协议 |
| 典型用途 | 远程办公、组网、全局隧道 | 科学分流、多节点代理、广告拦截 |
| 是否接管全部流量 | 通常是 | 可选,取决于系统代理/TUN/透明代理 |
开启 TUN 后,Clash 的体验会更接近 VPN,但本质仍然是规则代理引擎,而不是单一 VPN 协议。
5. 安全边界:谁能看到什么
假设路径是:
1 | 你 → Clash → 代理服务器 → 目标网站 |
5.1 本地运营商能看到什么
通常能看到:
1 | 你连接了某个远程服务器 |
通常看不到:
1 | 代理隧道内的具体网页内容 |
但如果 DNS 泄漏,运营商仍可能看到你查询了哪些域名。
5.2 代理服务器能看到什么
代理服务器通常能看到:
1 | 你的真实 IP |
如果目标网站是 HTTPS,代理服务器通常不能直接看到 HTTPS 正文。但它仍然是重要信任边界,因为所有被代理的连接都经过它。
5.3 目标网站能看到什么
目标网站通常看到:
1 | 代理服务器出口 IP |
目标网站通常看不到你的真实本地公网 IP,除非出现:
1 | WebRTC 泄漏 |
Clash 不是匿名系统。它主要解决流量转发、规则分流和链路加密问题,不等于 Tor 这类匿名网络。
6. 常见问题与底层原因
6.1 为什么开了 Clash,但某些软件没有走代理
常见原因:
1 | 软件不使用系统代理 |
解决方向:
1 | 开启 TUN |
6.2 为什么有些网站显示代理 IP,有些显示本地 IP
因为规则不同。
1 | 命中 DIRECT → 显示本地出口 IP |
Clash 的核心就是允许不同网站走不同出口。
6.3 为什么测速快但访问慢
测速通常只测某个测试 URL 的延迟,例如 generate_204。真实访问还受到:
1 | 节点出口带宽 |
低延迟不等于高吞吐,也不等于所有网站都快。
6.4 为什么 fake-ip 会导致异常
部分软件不兼容假 IP,可能把 fake-ip 写入缓存、日志、证书校验或私有协议流程中。
解决通常是配置 fake-ip-filter,让特定域名走真实解析。
6.5 为什么 UDP 应用不稳定
可能原因:
1 | 代理协议不支持 UDP |
有些配置会阻断 UDP 443,让浏览器从 HTTP/3/QUIC 回落到 TCP/HTTPS,以便被更稳定地代理。
7. 一个简化但完整的模型
可以把 Clash 理解成一台本地软件路由器。
它接收流量:
1 | HTTP 代理入口 |
它识别目标:
1 | 域名 |
它匹配规则:
1 | DOMAIN |
它选择策略:
1 | DIRECT |
它选择出站:
1 | Shadowsocks |
最后把流量送到目标网站。
完整链路可以压缩为:
1 | App |
8. 总结
四条主线:
第一,Clash 不是协议,而是调度器。Trojan、Shadowsocks、VLESS、Hysteria、TUIC、WireGuard 才是具体出站方式。
第二,TUN 是三层虚拟网卡。它让 Clash 能从系统网络层接管更多应用的流量,而不只依赖系统代理。
第三,DNS 是分流准确性的核心。fake-ip 的作用不是“制造假网络”,而是用假 IP 保留域名与连接之间的映射关系。
第四,各种协议没有绝对优劣,只有适用场景。Shadowsocks 轻量,Trojan 像 HTTPS,VLESS 组合能力强,Hysteria/TUIC 偏向 QUIC 弱网优化,WireGuard 适合三层 VPN 和远程组网。



