🚀 高性能隧道代理协议

Phantom-X
技术深度解析

基于 WebSocket 的高性能多路复用隧道代理,支持 0-RTT 首包携带、ECH 加密握手、智能流量混淆, 专为抗探测和高并发场景设计

8B
最小帧头部
4B+
并发流支持
3x
连接复用
0-RTT
首包携带

核心技术特性

六大核心技术,打造高性能、高安全、抗探测的隧道代理

0-RTT 首包携带

TCP 连接请求时直接携带初始数据,减少一次往返延迟,显著提升首包响应速度

// 读取初始数据(20ms 超时) conn.SetReadDeadline(time.Now().Add(20*time.Millisecond)) initBuf := make([]byte, proto.MaxInitData) n, _ := conn.Read(initBuf) // 构建 Open 命令,携带初始数据 payload := proto.BuildOpenPayload(ipStrategy, host, port, initBuf[:n])
🔐

ECH 加密握手

支持 Encrypted Client Hello,隐藏真实 SNI,有效对抗深度包检测(DPI)

// 通过 DoH 获取 ECH 配置 func queryDoH(domain, dohURL string) (string, error) { // 查询 HTTPS 记录 (Type 65) dnsQuery := buildDNSQuery(domain, 65) // 返回 Base64 编码的 ECH 配置 return parseDNSResponse(body) }
🎭

智能流量混淆

三种填充分布策略(均匀/正态/拟态),模拟 HTTPS 流量特征,对抗流量分析

type PaddingCalculator struct { httpsSmallPktProb float64 // 0.3 httpsSmallPktMean float64 // 60 bytes httpsLargePktMean float64 // 1200 bytes } // 拟态模式:模拟 HTTPS 包大小分布
🔀

多路复用

单条 WebSocket 连接承载数千并发流,32位 StreamID 支持超过 40 亿流

type Frame struct { Cmd byte // 命令类型 StreamID uint32 // 流标识 (4B = 4,294,967,296) Flags byte // 标志位 Payload []byte // 实际数据 }
📦

数据聚合

多流数据智能聚合,减少网络开销,提升批量传输效率

type AggregatedData struct { Items []struct { StreamID uint32 Data []byte } } // FlagAggregate = 0x02 标识聚合帧
💾

内存池化

三级缓冲池设计,减少 GC 压力,提升高并发下的内存效率

var bufferPool = &BufferPool{ small: sync.Pool{}, // 4KB medium: sync.Pool{}, // 32KB large: sync.Pool{}, // 64KB } // 按需获取合适大小的缓冲区

系统架构设计

分层架构,职责清晰,高内聚低耦合

数据流转路径

📱 应用程序
Browser / App
🧦 SOCKS5
本地代理
📦 Client
协议封装
🌐 WebSocket
TLS 1.3 + ECH
🖥️ Server
协议解析
🎯 Target
目标服务器

五层架构设计

应用层 (Application) SOCKS5 Server/Client
会话层 (Session) Stream Manager
协议层 (Protocol) Frame Codec / Padding
传输层 (Transport) WebSocket + TLS 1.3
连接层 (Connection) Pool / ECH / Dialer

自定义二进制协议

极简帧结构,8字节头部,高效编解码

帧结构 (Frame Structure)

悬停查看详情

Cmd
1 Byte
命令类型
0x01: OpenTCP
0x02: OpenUDP
0x03: Data
0x04: Close
0x05: ConnStatus
StreamID
4 Bytes
流标识符
范围: 0 ~ 4,294,967,295
支持 40 亿+ 并发流
Flags
1 Byte
标志位
0x01: Padding
0x02: Aggregate
0x04: Encrypted
Length
2 Bytes
负载长度
最大: 65535 字节
Big Endian 编码
Payload
0 ~ 65535 Bytes
实际数据
可包含 Padding
可聚合多流数据
// 帧头部编解码 func PackHeader(buf []byte, cmd byte, streamID uint32, flags byte, length int) { buf[0] = cmd binary.BigEndian.PutUint32(buf[1:5], streamID) buf[5] = flags binary.BigEndian.PutUint16(buf[6:8], uint16(length)) } const HeaderLen = 8 // 固定 8 字节头部

Open Payload 结构

// Open 命令的 Payload 结构 ┌──────────────┬──────────────┬──────────────────┬───────────┬──────────────┐ │ IP Strategy │ Host Length │ Host │ Port │ Init Data │ │ (1 Byte) │ (1 Byte) │ (0-253 Bytes) │ (2 Bytes) │ (0-4096 B) │ └──────────────┴──────────────┴──────────────────┴───────────┴──────────────┘ // IP 策略 IPDefault = 0x00 // 系统默认 IPv4Only = 0x01 // 仅 IPv4 IPv6Only = 0x02 // 仅 IPv6 IPv4First = 0x03 // 优先 IPv4 IPv6First = 0x04 // 优先 IPv6

与主流协议对比

Phantom-X 与 Shadowsocks、VMess、Trojan、WireGuard 等协议的对比分析

特性 Phantom-X Shadowsocks VMess Trojan WireGuard
协议类型 WebSocket + 自定义二进制 自定义加密 自定义二进制 TLS + 明文 UDP + 加密
多路复用 原生支持 (4B+ 流) 不支持 支持 不支持 不适用
0-RTT 首包 支持携带数据 不支持 不支持 不支持 TLS 0-RTT
ECH 支持 原生支持 不支持 不支持 不支持 不适用
流量混淆 三种 Padding 策略 插件支持 有限支持 伪装 HTTPS
数据聚合 智能聚合
协议伪装 标准 HTTPS/WebSocket 可识别特征 可识别特征 HTTPS 伪装 UDP 特征明显
头部开销 8 Bytes ~16 Bytes ~40 Bytes ~58 Bytes ~32 Bytes
抗探测能力 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐

🔵 vs Shadowsocks

多路复用 0-RTT ECH WebSocket
  • Shadowsocks 每个 TCP 连接对应一个目标,Phantom-X 单连接支持数千流
  • Shadowsocks 流量特征较明显,已被多种 DPI 设备识别
  • Phantom-X 使用标准 WebSocket,与正常 HTTPS 流量无异
  • Phantom-X 支持 ECH,隐藏 SNI,对抗深度检测

🟣 vs VMess (V2Ray)

更小头部 0-RTT 简化设计
  • VMess 头部 ~40 字节,Phantom-X 仅 8 字节
  • VMess 加密校验复杂,Phantom-X 依赖 TLS 层加密
  • Phantom-X 原生 0-RTT,VMess 需额外协商
  • Phantom-X 配置更简洁,无需复杂的 UUID/AlterID

🟢 vs Trojan

多路复用 数据聚合 智能混淆
  • Trojan 不支持多路复用,每连接一个目标
  • Trojan 依赖明文密码认证,Phantom-X 使用 HMAC 签名
  • Phantom-X 支持三种 Padding 策略,流量特征更模糊
  • 两者都伪装 HTTPS,但 Phantom-X 额外支持 ECH

🟠 vs WireGuard

伪装能力 穿透性 应用代理
  • WireGuard 是 VPN 协议,UDP 特征明显易被封锁
  • Phantom-X 基于 HTTPS,穿透防火墙能力更强
  • WireGuard 是网络层代理,Phantom-X 是应用层代理
  • Phantom-X 可选择性代理,WireGuard 全局接管

性能对比 (相对值)

Phantom-X
95%
VMess
78%
Trojan
85%
Shadowsocks
72%
吞吐量
延迟表现

🚀 Phantom-X 独特优势

抗探测设计
  • ✓ 完全伪装标准 HTTPS 流量
  • ✓ ECH 隐藏真实 SNI
  • ✓ 拟态 Padding 模拟真实包大小分布
  • ✓ 无固定协议特征,难以被指纹识别
  • ✓ 支持 CDN 中转,进一步隐匿服务器
性能优化
  • ✓ 8 字节极简头部,开销最小
  • ✓ 0-RTT 首包携带,首次连接更快
  • ✓ 多流聚合减少网络往返
  • ✓ 连接池复用,减少握手开销
  • ✓ 内存池化,低 GC 压力

安全机制

多层安全设计,从认证到传输全方位保护

🔑 HMAC 签名认证

基于时间戳的 HMAC-SHA256 签名,防止令牌重放攻击

// 生成签名令牌 func GenerateSignedToken(secret, clientID string) string { timestamp := time.Now().Unix() message := fmt.Sprintf("%s:%d", clientID, timestamp) mac := hmac.New(sha256.New, []byte(secret)) mac.Write([]byte(message)) signature := hex.EncodeToString(mac.Sum(nil)) return fmt.Sprintf("%s:%d:%s", clientID, timestamp, signature) } // 令牌有效期:5 分钟 const TokenValiditySeconds = 300

🛡️ Host 安全验证

严格的 Host 验证,防止 SSRF 和注入攻击

// Host 验证规则 func ValidateHost(host string) error { // 1. 长度检查 (最大 253) if len(host) > MaxHostLen { return ErrHostTooLong } // 2. 危险字符检查 // 禁止: < > " ' ` \ $ { } | & ; ( ) [ ] // 3. 域名格式验证 // 4. 本地地址检测 (可选) if isLocalAddress(host) { return ErrInvalidHost } return nil }

🎭 Padding 分布策略

点击切换不同的填充分布模式

拟态模式模拟 HTTPS 流量包大小分布,30% 小包 (~60B) + 70% 大包 (~1200B)

性能优化

多维度优化,追求极致性能

🔄 连接池管理

type ConnPool struct { cfg *Config conns []*PoolConn // 连接数组 frameHandler func(...) // 帧处理器 nextConnIdx uint32 // 轮询索引 } // 配置参数 NumConnections = 3 // 默认连接数 WriteQueueSize = 4096 // 写队列大小 AggregateDelay = 5 * time.Millisecond MaxAggSize = 64 * 1024 // 64KB 聚合阈值

💾 三级缓冲池

4KB
Small Buffer
控制帧 / 小数据包
32KB
Medium Buffer
常规数据传输
64KB
Large Buffer
大文件 / UDP 数据

📊 关键性能参数

// 超时配置 WriteTimeout = 10 * time.Second // 写超时 ReadTimeout = 60 * time.Second // 读超时 PingInterval = 30 * time.Second // 心跳间隔 IdleTimeout = 120 * time.Second // 空闲超时 InitDataReadTimeout = 20 * time.Millisecond // 0-RTT 读取窗口 // 并发限制 MaxStreamsPerConn = 1000 // 每连接最大流数 MaxConnections = 10000 // 最大连接数 // 缓冲区 ReadBufferSize = 64 * 1024 // 64KB WriteBufferSize = 64 * 1024 // 64KB

项目结构

清晰的目录组织,模块化设计

phantom-x/ ├── cmd/ │ ├── server/ │ │ └── main.go # 服务端入口 │ └── client/ │ └── main.go # 客户端入口 ├── internal/ │ ├── proto/ │ │ ├── protocol.go # 帧编解码 / Padding │ │ └── protocol_test.go │ ├── transport/ │ │ ├── websocket.go # WebSocket 连接管理 │ │ └── framer.go # 帧读写器 / 缓冲池 │ ├── stream/ │ │ └── manager.go # 流管理器 │ ├── pool/ │ │ └── connpool.go # 连接池 / 数据聚合 │ ├── server/ │ │ └── session.go # 服务端会话处理 │ ├── socks5/ │ │ └── server.go # SOCKS5 代理服务 │ └── ech/ │ └── ech.go # ECH 配置管理 ├── pkg/ │ ├── config/ │ │ └── config.go # 配置解析 │ ├── log/ │ │ └── logger.go # 日志系统 │ └── metrics/ │ └── metrics.go # 监控指标 ├── configs/ │ ├── server.example.yaml │ └── client.example.yaml ├── scripts/ │ └── install.sh # 一键安装脚本 ├── Dockerfile ├── docker-compose.yml ├── go.mod └── README.md

快速开始

一键安装,快速部署

🖥️ 服务端安装

curl -fsSL https://raw.githubusercontent.com/ooooqooooooooo/scripts/install.sh | bash -s server

💻 客户端安装

curl -fsSL https://raw.githubusercontent.com/ooooqooooooooo/scripts/install.sh | bash -s client

🐳 Docker 部署

docker-compose up -d

📝 客户端配置示例

# client.yaml server: "wss://your-server.com:443/ws" token: "your-secret-token" socks5_listen: ":1080" num_connections: 3 # ECH 配置 enable_ech: true ech_domain: "cloudflare-ech.com" # Padding 配置 enable_padding: true padding_distribution: "mimicry" log_level: "info"