文章

主流代理协议技术详解

主流代理协议技术详解(2026 年中·深度版)

面向网络工程 / 网络安全学习的协议深度参考。 本文聚焦「检测原理 ↔ 协议反制」的攻防对抗逻辑,以及各协议的握手流程、密码学基础、已知弱点与部署形态。 所有协议均为开源项目(XTLS / sing-box / hysteria / tuic / shadowsocks / v2ray 等),其设计思想(TLS 伪装、流量分片、弱网优化、指纹对抗)属于流量工程与隐私通信的通用研究范畴。


0. 阅读须知:如何评估一个代理协议

0.1 五个评估维度(扩展)

维度含义典型度量
流量特征隐蔽性被动 DPI 能否从背景流量识别包长熵、时序、TLS 指纹命中率
抗主动探测审查方主动发包时能否”优雅伪装”探测响应是否像真实服务
性能 / 吞吐单连接带宽、CPU 开销加解密效率、零拷贝能力
弱网表现高丢包/高延迟下稳定性重传策略、拥塞控制
部署与生态实现成熟度、配置复杂度客户端/GUI 覆盖、社区维护

0.2 攻防本质:成本博弈

不存在”永远不被识别”的协议。审查方与协议方是在玩成本博弈

  • 协议方的目标:把”精准批量识别”的成本提高到不经济(需要逐流深度分析、误杀率飙升)。
  • 审查方的目标:用尽量低的成本把”大部分流量”拦下来(宁可误杀,不可放过)。
  • 因此协议强弱 = 识别成本高低,而非”能不能被识别”。

0.3 关于”协议 X 被破解”的理性认知

  • 多数所谓”被识别”不是协议密码学被破,而是部署特征暴露(IP、证书域名、握手频率、端口规律)。
  • 真正被动特征泄露,常来自”伪装不像”(指纹不符)或”参数不严谨”(SNI 不真实、填充不规律)。

1. 检测技术基础(DPI 与主动探测)

不理解”怎么被检测”,就无法理解”协议为什么这么设计”。本章是后续所有协议反制逻辑的对照基准。

1.1 被动检测(Deep Packet Inspection)

(a) 字节级特征

  • 固定魔数(magic bytes)、可预测的头部前缀、已知的协议结构(如老 SS 首包长度模式)。
  • 熵值异常:强加密流量的字节熵接近 1(随机),而明文/弱混淆流量熵偏低——这本身就是一个特征。

(b) 流级特征(flow features)

  • 包长序列(packet length sequence):不同协议/应用产生独特的包长分布。例如”一长一短”的请求-响应 pattern。
  • 方向性(directionality):上行/下行包数量比、突发(burst)形态。
  • 时序(timing):包间隔(IAT)、突发间隔。
  • 这些恰恰是 TLS-in-TLS、固定 MTU 分片等被针对的根源。

(c) TLS 指纹

  • JA3 / JA3S:把 ClientHello 的 版本 + 密码套件 + 扩展 + 曲线 + 曲线格式 按固定顺序拼接后取哈希,得到客户端指纹;JA3S 对应 ServerHello。审查方可建库比对,发现”声称是 Chrome 却给出非 Chrome 指纹”的异常。
  • JA4 / JA4S / JA4+(FoxIO,2023 起):比 JA3 更鲁棒,覆盖 TLS 1.3、SSH、TCP 等,字段设计避免哈希碰撞,且对人类可读(分段编码)。已成为新一代指纹标准。
  • 协议反制手段:用 uTLS 等库精确模拟真实客户端(如 Chrome)的 ClientHello,使 JA3/JA4 命中真实浏览器指纹。

(d) 机器学习分类器

  • 用流级特征训练二分类/多分类模型(随机森林、CNN 对包长序列等),对未知协议也有一定泛化。对抗方式:随机化 + 填充,破坏训练集统计规律。

1.2 主动探测(Active Probing)

审查设备主动向疑似端口发包,观察行为:

探测类型做法协议应对
握手探测发 TLS ClientHello,看能否握手校验失败→转发给真实目标
重放探测重放截获的握手包时间戳/nonce 防重放
随机数据探测发非预期字节,看是否报错/超时行为要像真实服务(超时而非拒绝)
时序/旁路测量响应延迟差异行为一致性

关键设计目标:面对探测时表现得”像一个真的被伪装服务”,而不是”一个会报错的代理”。Reality/ShadowTLS 的核心价值正在于此。

1.3 流量分析对抗的四种思路

  1. 伪装(mimicry):让流量像某种合法流量(Chrome、真实 HTTPS 站点)。
  2. 随机化(randomization):打乱包长/时序,破坏统计规律。
  3. 分片(fragmentation):把一条流拆成多条真实请求(XHTTP)。
  4. 填充(padding):随机长度填充,消除包长特征(AnyTLS)。

2. 密码学基础:为什么老协议不安全

2.1 流密码的崩溃

  • 老 SS 用 RC4、AES-CFB、AES-CTR 等无认证的流密码:加密不绑定完整性,攻击者可字节翻转(byte-flipping) 篡改明文而接收方无法察觉。
  • 无重放保护:截获的密文包可直接重放。
  • 首包结构固定(IV + 长度),形成可识别指纹。
  • 结论:无 AEAD 的加密协议已不可用于安全场景

2.2 认证加密(AEAD)是底线

  • AEAD = 加密 + 完整性认证,如 AES-128-GCMAES-256-GCMChaCha20-Poly1305
  • 任何被篡改的密文都会被拒绝,且认证标签绑定了 nonce,天然抗重放(配合 nonce 唯一性)。
  • 现代协议(SS2022、VMess-AEAD、VLESS、Trojan、Hysteria2、TUIC)全部基于 AEAD

2.3 密钥交换与前向安全

  • 前向安全(PFS)要求:即使长期私钥泄露,历史会话也不可解密。
  • 依赖 (EC)DHE(特别是 X25519 曲线)做临时密钥交换。
  • Reality 的认证、WireGuard 的 Noise 握手、TLS 1.3 的 ECDHE 都用 X25519。

2.4 证书与信任模型

  • 传统 TLS 伪装需要自有可信证书(Let’s Encrypt 等),证书域名须解析到你的服务器 IP,否则易被关联。
  • Reality / ShadowTLS 的突破:借用第三方真实服务器的证书完成握手,服务端不持有任何证书,消除证书-IP 绑定这一暴露面。

3. 顶级抗封锁方案(深度)

3.1 VLESS + Reality

定位:综合最强、长期稳定首选,抗主动探测的标杆。

完整握手流程(概念层)

  1. 客户端配置 dest(真实目标,如某大厂 443)、serverNames(伪装 SNI,如 www.microsoft.com)、publicKey(服务端 Reality 公钥)。
  2. 客户端发起标准 TLS 1.3 ClientHello:SNI 填伪装域名;认证信息封装在 ClientHello 的 Random 字段(32 字节) 中——用服务端公钥做 ECDH 派生密钥后加密一段含时间戳+auth 的数据。
  3. 服务端用 Reality 私钥校验 Random 中的认证:
    • 校验通过 → 放行代理流量(进入 VLESS 数据处理)。
    • 校验失败(探测包/非授权客户端)→ 把整个 ClientHello 原样转发给 dest 真实服务器,由真实服务器正常响应。
  4. 于是审查方主动探测时,看到的是”一个真的在访问伪装网站的 TLS 会话”——优雅失败

关键参数

  • dest:真实后端目标(IP:端口),决定伪装成谁,必须可达且 TLS 指纹匹配。
  • serverNames:伪装 SNI 列表,必须是 dest 支持的真实域名。
  • privateKey / publicKey:X25519 密钥对(服务端生成,客户端用公钥)。
  • shortId:可选短 ID,允许多用户/灵活认证。
  • spiderX:可选爬虫路径,让首次 HTTP 请求更”自然”。

已知弱点

  • 依赖 dest 长期可达且未被大范围封锁;伪装目标一旦失稳,链路受影响。
  • serverNames 必须真实,伪造 SNI 会立刻暴露。
  • 时钟偏差 / 随机性不足会影响认证稳健性。
  • 不同核心(Xray / sing-box / mihomo)实现细节有差异,参数要严格对齐。

版本演进:Reality 自 Xray 1.8 起随 VLESS 提供,后续在 sing-box/mihomo 中跟进支持。

3.2 VLESS + Vision(flow: xtls-rprx-vision

定位:在 Reality 之上进一步消除 TLS-in-TLS 特征,性能更好。

原理

  • 传统 TLS 代理转发内层 TLS 时,要在应用层”解密外层→再加密内层”,既耗 CPU 又产生双层 TLS 结构特征。
  • Vision 用传输层透传(splice):在握手完成后,把内层 TLS 记录直接在传输层定向转发,避免应用层加解密。
  • 旧的 xtls-rprx(direct) 不同:旧版曾因透传逻辑存在安全缺陷被弃用;Vision 是重新设计的安全版,仅在可验证安全时才 splice(带方向检查等)。

优点:降低 TLS-in-TLS 可观测特征、省 CPU、提吞吐。 缺点:配置比纯 Reality 稍复杂;需核心支持 Vision 流控。

3.3 VLESS + XHTTP

定位:把代理流量拆成多个真实 HTTP 请求,适合过 CDN / 高审查。

原理

  • 基于 HTTP/2(或 HTTP/1.1)请求分片思想(类 splitHTTP)。
  • 一条代理数据流被拆成多个独立的、看起来正常的 HTTP 请求/响应,分散到不同连接。
  • 每个分片都是”正常 HTTP 行为”,且可走 CDN(源站藏在边缘节点后)。

优点:抗流量分析强;依托 CDN 隐藏源站。 缺点:分片/重排引入额外延迟;对 CDN 配置有要求。

3.4 NaiveProxy

定位:极致隐蔽,流量与真实 Chrome 几乎一致。

原理

  • 客户端用 uTLS 精确模拟 Chrome 的 ClientHello / TLS 指纹,且 HTTP/2 行为(优先级树、帧顺序)也对齐 Chrome。
  • 服务端是真实 Web 服务器(Caddy),代理流量混在 Caddy 承载的真实 HTTPS 流量里。
  • 审查方看到的报文与”真实 Chrome 访问 Caddy 站点”在 JA3/JA4 与统计上无差异。

优点:隐蔽性最高;依托成熟 Web 服务器,实现优雅。 缺点:需真实 Web 服务资源,搭建稍麻烦;并发/资源占用偏高;速度通常非最优。


4. 新兴 / 中间层(深度)

4.1 AnyTLS

原理:2024–2025 迅速走红,基于 TLS 1.3 的轻量协议,专治 TLS-in-TLS。

  • 灵活的 padding(填充)策略:把代理数据裹在带随机填充的 TLS 记录里,打乱包长分布,破坏流级特征。
  • 连接复用:降低握手频率(连接频率本身也是 DPI 特征)。
  • 实现极简,客户端/服务端代码量小,因而被众多”机场”快速跟进。

现状:生态快速成熟,作为 Reality 之外的轻量替代很受欢迎。

4.2 ShadowTLS(v3)

原理:借用第三方可信服务器的 TLS 握手完成伪装,常作为 SS / VMess 的前端插件。

  • 与 Reality 思路同源(借真服务器证书),但更通用,可套在多种老协议前。
  • 机制:ShadowTLS 服务端连接一个真实 TLS 服务器获取其证书/完成握手,使客户端面对的 TLS 会话”看起来真实”;代理数据嵌套其中。
  • 与 Reality 的异同:都借真实证书;Reality 把认证嵌入 ClientHello Random 并支持失败转发,ShadowTLS 更偏”中继真实握手”的插件形态。

现状:稳定性不错,作为给老协议”续命”的补充方案很实用。

4.3 Hysteria2

原理:基于 QUIC(UDP) 的高性能协议,专注弱网。

  • QUIC 内置:0-RTT、多路复用、内置拥塞控制。
  • 自定义拥塞控制(类 BBR 的带宽探测),在高丢包/高延迟链路上速度往往明显优于 TCP 系。
  • 内置 obfs 混淆(如 salamander 混淆器),进一步掩盖 QUIC 流量特征。
  • 认证用 password,支持 up/down 限速。

优点:弱网/高丢包速度强;延迟表现好。 缺点UDP 特征比 TCP 更易被针对性限速/阻断(不少网络对 UDP 不友好);服务端需支持。

4.4 TUIC(v5)

原理:同样基于 QUIC 的代理协议,偏速度向。

  • 0-RTT 建连连接迁移(connection migration)(IP/网络切换不断线,靠 QUIC Connection ID)、多路复用
  • v5 使用更完整的认证(UUID + password 形态)。

与 Hysteria2 的关系:定位高度相似(都是”QUIC 系高性能”),区别在拥塞控制策略与实现细节,实际表现需按所在网络实测。


5. 传统但仍在用的协议(深度)

5.1 Shadowsocks 2022(SS-2022)

原理:老 SS 的重大安全升级。

  • 使用 AEAD 加密:2022-blake3-aes-128-gcm2022-blake3-aes-256-gcm2022-blake3-chacha20-poly1305(Blake3 用于密钥派生)。
  • PSK(预共享密钥):16/32 字节对应 128/256 位;支持多用户(每用户独立 PSK 派生)。
  • 重放保护:头部含时间戳,服务端拒绝过期包。
  • 更好的 UDP 支持(独立 AEAD 通道)。

建议:比老 SS 强很多,可作日常或中转,但仍有可识别特征,不建议裸奔直连

5.2 Trojan

原理:伪装成 HTTPS。

  • 先做标准 TLS 握手(需真实可信证书,通常 Let’s Encrypt 自动签发)。
  • 握手后客户端发送 password(共享密钥,在加密隧道内)+ 代理请求头;整体流量表现为标准 HTTPS。
  • 被动 DPI 看到的是正常 TLS 会话。

风险点:证书域名/IP 一旦被关联,整条链路暴露;单独用风险较高,建议配合好域名与前向策略。

5.3 VMess

原理:V2Ray 老牌协议,支持动态端口、AEAD。

  • 头部带时间戳做重放保护,使用 UUID 认证。

问题:协议结构(AEAD 头、固定模式)已被研究得较充分,指纹相对明显。

建议:逐渐被 VLESS 取代,不推荐新部署;老节点可逐步迁移。

5.4 原始 Shadowsocks(legacy)

原理:最早 SS,使用 RC4/流密码等已被证明不安全的加密。 现状:特征明显、安全性差,基本淘汰,仅特殊兼容场景使用。


6. 其他补充

6.1 WireGuard

  • 现代 VPN 协议,基于 Noise_IK 框架,极简、握手快、性能好。
  • 握手特征明显:Initiation/Response 是固定结构、固定大小的 UDP 包,极易被指纹识别。
  • 通常做法:把 WireGuard 跑在已有伪装(Reality / SS)隧道内部(套壳),而非直连暴露。

6.2 SOCKS5 / HTTP

  • 最基础代理协议(SOCKS5 见 RFC 1928,可选 RFC 1929 用户名/密码认证),无加密、无混淆
  • 角色:通常只做本地转发 / 链式中转最后一环(浏览器 → 本地 SOCKS5 → 加密隧道)。

6.3 插件 / 混合方案

  • ShadowTLS + SSReality + 其他协议:用新协议的伪装能力给老协议”打补丁”,延长生命周期或提升隐蔽性。

7. 实现架构与部署拓扑(深度)

7.1 四种典型拓扑

[A] 直连
客户端 ↔ 服务端 ↔ 目标
- 简单,但源站 IP 直接暴露。

[B] 中转(relay)
客户端 ↔ 入口节点(抗封锁强) ↔ 中转节点 ↔ 出口节点 ↔ 目标
- 入口用 Reality 等强伪装,内部用 Hysteria2/TUIC 等高性能,兼顾隐蔽与速度。

[C] CDN 前置
客户端 ↔ CDN 边缘 ↔ 源站(隐藏) ↔ 目标
- 入口走支持 CDN 的协议(XHTTP / Trojan+CDN),真实源站藏在边缘节点后。

[D] 链式 + TUN
设备 → TUN(系统级接管) → 核心(路由/规则) → [B/C 拓扑]
- 全家/全设备流量经规则分流后进入加密隧道。

7.2 客户端核心矩阵

核心配置格式擅长
Xray-coreJSONReality/Vision 原生
sing-boxJSON协议最广、DNS 强
mihomo(Clash Meta)YAML规则组分流体验

7.3 配置结构通用范式

无论哪种核心,逻辑都是「入站(本地入口) + 出站(协议+传输) + 路由(分流规则)」三要素的组合。抗封锁能力几乎全在「出站的传输层配置」里(Reality/TLS/ws/padding 等)。


8. 选型矩阵(多维度评分)

目标首选备选备注
稳定抗封锁VLESS+RealityAnyTLS / ShadowTLS+SS长期首选
高性能+高隐蔽VLESS+Vision+Reality——计算省、特征低
速度/弱网Hysteria2TUIC v5UDP 系
极致隐蔽NaiveProxyVLESS+XHTTP(过CDN)混浏览器流量
尝鲜/备选AnyTLS/TUIC/NaiveProxy——多一个方案
机场节点(用户视角)Reality 系列 + Hysteria2 双协议——主流标配

9. 评估方法论:如何自己测试一个协议/节点

(学习向,指思路而非具体越权操作)

  1. 延迟与抖动:连续 ping / TCP RTT,看 P99 抖动。
  2. 吞吐:单/多连接 iperf 类测速,观察是否触达带宽上限。
  3. 弱网恢复:人为注入丢包(如 5%–20%),看重传与恢复速度(Hysteria2/TUIC 优势区)。
  4. 指纹自检:用 JA3/JA4 工具检查客户端 ClientHello 是否命中真实浏览器指纹(NaiveProxy/Reality 重点)。
  5. 包长分布:抓包看包长是否规律(无填充的协议易暴露)。
  6. 主动探测模拟:向端口发异常包,观察是”超时”还是”报错”——前者更安全。

10. 现实约束(比协议更重要)

  1. 节点 IP 质量:再好的协议跑在被标记/被封 IP 上也无效。IP 信誉、机房/住宅段、是否被批量扫描,直接决定可用性。
  2. 中转方式:合理的「入口抗封锁 + 内部高性能」链式,往往比单协议裸连更稳。
  3. 客户端实现:同一协议,不同核心/GUI 的握手构造、填充策略、指纹模拟质量不同,实际抗识别能力差异很大。
  4. 攻防动态:今天主流的 Reality,明天可能遇新探测手段;保持核心版本更新、关注 XTLS / sing-box / hysteria / tuic 安全公告,比”死守一个协议”更务实。

附录 A:协议特性速查大表

协议传输层加密抗被动DPI抗主动探测弱网部署难度现状
VLESS+RealityTCPTLS1.3+ECDH极强首选
VLESS+VisionTCPTLS+splice极强极强中高高性能
VLESS+XHTTPHTTP分片TLS极强过CDN
NaiveProxyHTTPSTLS(Chrome指纹)极强极致隐蔽
AnyTLSTLS1.3TLS+padding走红中
ShadowTLS v3TLS(借证)TLS补充
Hysteria2QUIC/UDPAEAD中(需obfs)极强速度向
TUIC v5QUIC/UDPAEAD极强速度向
SS-2022TCP/UDPAEAD日常/中转
TrojanTCPTLS需好证书
VMessTCP/WSAEAD渐淘汰
legacy SSTCP流密码淘汰
WireGuardUDPNoise弱(特征明)需套壳
SOCKS5/HTTPTCP仅本地

附录 B:术语表

  • DPI:深度包检测,被动分析报文内容/特征。
  • JA3/JA4:TLS 客户端/服务端指纹哈希(JA4 为新一代可读编码)。
  • AEAD:带认证加密,加密同时保证完整性。
  • PFS / X25519:前向安全 / 椭圆曲线临时密钥交换。
  • TLS-in-TLS:TLS 套 TLS 的可观测嵌套结构,是 DPI 打击重点。
  • Reality:XTLS 提出的”借真实服务器 TLS 握手完成认证”的机制。
  • QUIC:基于 UDP 的传输层协议,内置加密与多路复用。
  • uTLS:可精确模拟特定客户端 TLS 指纹的 Go 库。

附录 C:参考生态(开源项目)

  • Xray-core / XTLS(Reality、Vision、XHTTP)
  • sing-box(统一多协议核心)
  • hysteria(Hysteria2)
  • tuic(TUIC)
  • shadowsocks(SS-2022)
  • naiveproxy(NaiveProxy)
  • shadowtls(ShadowTLS)
  • anytls(AnyTLS)

本文为协议技术综述,具体部署请遵守所在地区法律法规与网络使用规范。


相关笔记

本系列属于「代理协议与核心实现」知识簇: