ECH 多通道隧道代理

基于 WebSocket 的高性能预连接隧道系统

📊 系统架构总览

💻
本地应用
浏览器/应用程序
SOCKS5
HTTP
TCP
🔐
客户端代理
🌐 ECH 公钥获取
🔗 连接池管理
🏆 通道竞争选择
📦 多路复用
🚀 预连接通道池
N 个 WebSocket 连接
通道 0
通道 1
通道 2
🖥️
WebSocket 服务端
🔒 TLS 1.3 + ECH
🎫 Token 认证
🌍 CIDR 白名单
↔️ TCP/UDP 转发
🌐
目标服务器
互联网资源

⚡ 预连接技术演示

传统连接模式

📱
请求
DNS
TCP
TLS
WS
🖥️
服务器
延迟: 0 ms

❌ 每次请求都需要完整握手

❌ DNS + TCP + TLS + WebSocket 握手

❌ 高延迟,约 300-500ms

预连接模式 ✨

📱
请求
🖥️
服务器
延迟: 0 ms

✅ 连接已预先建立

✅ 直接发送数据帧

✅ 超低延迟,约 10-50ms

🛡️ 防火墙阻断规避机制

频繁的 TLS 握手(SNI)是防火墙识别并阻断 Cloudflare CDN IP 的主要特征

🚫 传统短连接/直连 高风险

GFW 敏感度: 0%
GFW 防火墙边界
IP 已被阻断
检测到频繁 SNI 握手特征
握手频率: 0 次/秒

❌ 每个 HTTP 请求触发一次 TLS 握手

❌ 短时间内大量 SNI 暴露,极易触发 GFW 阻断

✅ 多通道复用池 安全

GFW 敏感度: 0%
GFW 防火墙边界
TLS 隧道
握手频率: 0 次/秒

✅ 所有请求复用 3 个预建立的 WebSocket 隧道

✅ 0 次重复握手,流量特征隐蔽,避免 IP 阻断

🏆 多通道竞争机制

🆕
新连接
等待中...
0
--ms
1
--ms
2
--ms
🏆
胜出
通道 ?

📋 竞争流程说明

1. 新TCP连接到达,生成唯一 connID
2. 向所有通道广播 CLAIM 请求
3. 第一个返回 CLAIM_ACK 的通道获胜
4. 绑定连接到该通道,发送 TCP 请求

🔒 ECH 加密客户端问候

传统 TLS 握手

📱
ClientHello SNI: example.com (明文)
🖥️
👁️
中间人可以看到你访问的域名!

❌ SNI 以明文传输

❌ 可被防火墙识别和阻断

❌ 隐私泄露风险

ECH 加密握手 ✨

📱
Encrypted ClientHello SNI: 🔐 [已加密]
🖥️
👁️
中间人只能看到 Cloudflare 公共 SNI

✅ 真实 SNI 完全加密

✅ 通过 DNS HTTPS 记录获取公钥

✅ 防止流量分析和阻断

🔑 ECH 公钥获取流程

1
查询 DoH
2
获取 HTTPS RR
3
解析 ECHConfig
4
缓存并使用

📊 数据流与协议

📨 消息类型

CLAIM: 通道竞争请求
TCP: 建立TCP连接
DATA: 数据传输
CLOSE: 关闭连接
UDP_*: UDP 关联

📚 协议栈

应用数据
多路复用 (connID)
WebSocket
TLS 1.3 + ECH
TCP/IP

🎯 核心优势

超低延迟

预连接避免握手开销

🔄
高可用

多通道冗余,自动故障转移

⚖️
智能选路

自动选择最快响应通道

🔐
隐私保护

ECH 加密防止流量分析

📈 模拟实时监控

0
活跃连接
0
吞吐量 KB/s
0
平均延迟 ms
3
活跃通道

📝 活动日志

[系统] 等待连接...

💻 启动命令示例

🖥️ 服务端

./tunnel -l wss://0.0.0.0:443/ws -token secret123

📱 客户端 (TCP转发)

./tunnel -l tcp://127.0.0.1:8080/target:80 -f wss://server/ws -token secret123 -n 3

🌐 客户端 (SOCKS5/HTTP代理)

./tunnel -l proxy://user:[email protected]:1080 -f wss://server/ws -token secret123