本文从技术角度讲解开源代理协议的设计思路,仅供学习与合法的网络研究使用,请遵守所在地的法律法规。

一个被忽略的前提:对抗的不是「加密」,而是「识别」

很多人以为代理的关键是「把流量加密」。可 HTTPS 早就把内容加密了,真正的难点在于:审查系统(DPI,深度包检测)根本不需要解密你的内容,只要能识别出「这是一条代理连接」,就能直接封锁。

所以代理协议这些年的演进,主线只有一条:让自己的流量看起来和正常 HTTPS 没有区别,甚至让主动探测也分辨不出来。抓住这条主线,VLESS、REALITY、CDN 就都串起来了。

VLESS:做减法的传输协议

VLESS 是 Xray(Project X)项目的核心传输协议,可以理解为前代 VMess 的「轻量化继任者」。

它最反直觉的一点是:VLESS 本身不加密

  • VMess 自带一套加密和基于时间的认证(alterID),不仅有性能开销,加密后的流量还带有可被统计识别的「指纹」。
  • VLESS 把加密这件事彻底交给传输层的 TLS,自己只用一个 UUID 做身份校验。于是更轻、更快、特征更少。

代价是:VLESS 几乎总要和 TLS 搭配(VLESS + TLS);再配合 XTLS Vision 流控,还能避免「TLS 套 TLS」的双重加密开销。

一句话:VLESS 负责「传」,TLS 负责「伪装成 HTTPS」。

REALITY:借用一张「别人家的门面」

VLESS + TLS 听起来很完美,但 TLS 这一层有个老大难——证书和域名

  • 你需要一个自己的域名加证书;
  • TLS 握手时的 SNI、证书信息都会暴露「这台服务器在自建服务」;
  • 审查方可以主动探测:主动连上你的端口,发现证书可疑、或者背后没有真实网站,就判定为代理并封锁。

REALITY 的思路非常巧妙:不再用你自己的证书,而是「借用」一个真实大网站的握手。

工作方式大致是:

  • 客户端发起握手时,SNI 填一个真实存在的大站(比如 www.microsoft.com);
  • 持有正确密钥的客户端,服务器认出来,走代理;
  • 对没有密钥的主动探测者,服务器把它透明转发到那个真实网站——探测方拿到的是微软真实的证书和真实页面,看不出任何破绽。

这样一来:不需要自己的域名和证书;TLS 指纹就是真实大站的指纹;主动探测也打不穿,因为打过去看到的是真网站。

服务端配置的关键部分长这样(Xray):

{
  "protocol": "vless",
  "settings": {
    "clients": [{ "id": "你的-UUID", "flow": "xtls-rprx-vision" }],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "realitySettings": {
      "dest": "www.microsoft.com:443",
      "serverNames": ["www.microsoft.com"],
      "privateKey": "服务端私钥",
      "shortIds": [""]
    }
  }
}

dest / serverNames 就是「借用」的目标网站,privateKey 与客户端的公钥配对完成认证。

CDN:把源站 IP 藏起来

REALITY 解决了「流量特征」和「主动探测」,但还留着一个软肋:你的服务器 IP 是直连暴露的。这个 IP 一旦被盯上,可以直接按 IP 封。

CDN(如 Cloudflare)提供了另一条路:

  • 客户端连接的是 CDN 的 IP,CDN 再把流量回源到你的服务器;
  • 审查方看到的只是 CDN 那一大片共享 IP,没法整片封(否则会误伤大量正常网站);
  • 你的真实源站 IP 被藏在 CDN 背后。

CDN 方案通常长这样:VLESS + WebSocket + TLS,因为 CDN 主要代理 HTTP / WebSocket 流量。

这里有个关键认知:REALITY 和 CDN 基本是互斥的。CDN 会在它那一端终结(解密)TLS,而 REALITY 要求真实的 TLS 握手原样到达你自己的服务器。所以它们是「两条不同的路线」,不是叠加关系。

怎么选:REALITY vs CDN

维度VLESS + REALITYVLESS + WS + CDN
域名 / 证书不需要需要域名(证书可由 CDN 提供)
抗主动探测强(探测看到的是真网站)一般
源站 IP直连暴露,可能被封 IP藏在 CDN 后,较难封
延迟 / 速度直连,低延迟多一跳,延迟更高
隐私流量不经过第三方CDN 能看到(它终结了 TLS)

简单记:

  • 想要低延迟、强抗探测,且不怕换 IP → 选 REALITY;
  • 源站 IP 容易被封、希望藏住服务器 → 选 CDN(WS + TLS);
  • 进阶玩家也会两套并存,按网络环境随时切换。

小结

  • 代理的核心矛盾是「不被识别」,而不是「加密」;
  • VLESS 做减法,把加密交给 TLS,自己只管轻量传输;
  • REALITY 用「冒用真实网站握手」解决了证书 / 域名和主动探测的难题;
  • CDN 换个思路,用共享 IP 藏住源站,代价是延迟和隐私。

三者不是谁取代谁,而是针对「识别」与「封锁」的不同侧面,各自补上一块拼图。