Appearance
Reality 协议详解:免证书借道伪装新一代技术原理与配置实战
REALITY 是由 Xray-core 开发团队于 2023 年推出的一项颠覆性传输安全层技术。它彻底解决了自建节点最大的痛点——购买个人域名、配置并周期性续签 SSL/TLS 证书,以及自购域名因访问特征异常极易被列入审查黑名单的问题。REALITY 通过巧妙的“借道伪装”机制,直接将目标借用为真实合规的国际知名大厂(如苹果、微软、亚马逊或 Cloudflare)的公钥证书。当审查设备进行中间人重放或主动探测时,看到的是毫无破绽的全球顶尖网站证书,从而实现了当前公网直连场景下的抗封锁极限。
一、REALITY 的核心技术原理:如何实现“偷天换日”?
传统的 TLS 伪装(如 Trojan 协议 或标准 VLESS-TLS)需要服务端持有对应域名的真实私钥。如果没有对应私钥,服务端就无法完成 TLS 握手。REALITY 是如何打破这一铁律的?
1. 密钥对握手与认证拦截机制
REALITY 并不是真正去破解大型网站的私钥,而是利用了现代 TLS 1.3 协议和 X25519 密钥交换的设计特性:
- 预共享临时密钥对:部署 REALITY 服务端时,节点管理员会生成一对 X25519 专有公私钥(
PrivateKey与PublicKey),以及一串校验短 ID(ShortId)。 - 握手注入与识别:
- 当合规客户端(如已配置该公钥的 v2rayN 或 Clash Verge)发起连接时,它在 TLS Client Hello 的随机数和扩展字段中,使用目标网站的真实 SNI(如
gateway.icloud.com),同时利用预共享的PublicKey进行认证数据加密。 - REALITY 服务端在 443 端口监听到流量后,使用自己的
PrivateKey尝试解密。如果验证身份成功,服务端在 TLS 握手阶段与客户端直接建立专有的加密隧道,数据进入代理通道。
- 当合规客户端(如已配置该公钥的 v2rayN 或 Clash Verge)发起连接时,它在 TLS Client Hello 的随机数和扩展字段中,使用目标网站的真实 SNI(如
- 借道转发与中间人消除(真实借道):
- 如果来访流量是未携带密钥的普通访客、爬虫或防火墙主动探测系统,REALITY 服务端会原封不动地将整个 TCP/TLS 会话双向盲转发给真实的目标大厂服务器(如苹果官方服务器)。
- 探测系统收到的证书、握手签名乃至后续返回的 HTTP 网页,均由真实的官方服务器返回。探测器无论是对比证书哈希、证书链、TLS 指纹还是测试网络延迟,得到的结果都完全等同于直接访问官方大厂。
[合规客户端] ──(携带 PublicKey 认证)──► [REALITY 服务端 :443] ──► 校验成功 ──► 进入 VLESS 代理网络
│
[审查主动探测] ──(普通探测/扫描)───────► [REALITY 服务端 :443] ──► 盲转发 ──► [真实苹果/微软服务器]
(返回 100% 官方真实证书与页面)二、REALITY 相比传统 TLS 方案的压倒性优势
| 维度对比 | 传统 VLESS / Trojan + 自建 TLS | VLESS + REALITY 借道伪装 |
|---|---|---|
| 域名依赖 | 必须自行购买域名,域名易被针对性阻断 | 零域名依赖,免买域名,无续费成本 |
| 证书管理 | 需配置 ACME / Certbot 申请并定时续签 | 零证书维护,直接借道目标站点证书 |
| 主动探测防御 | 回落至本地自建静态网页,易暴露指纹差异 | 盲转发至国际知名大厂,指纹与大厂完全一致 |
| 部署门槛 | 需配置 DNS 解析、开放 80 端口验证、Nginx 反代 | 单一 Xray 二进制即可完成全部配置,极简极速 |
三、生产环境服务端与客户端配置实战
REALITY 通常必须与轻量级无状态的 VLESS 协议 协同工作。
1. 生成 REALITY 专有密钥
在部署前,通过 Xray 命令行生成专属公私钥对:
bash
xray x25519
# 输出示例:
# Private key: eNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw=
# Public key: fMyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyk=同时生成一个或多个随机短 ID(8 到 16 位的十六进制字符串):
bash
openssl rand -hex 8
# 输出示例: 7a8b9c0d1e2f3a4b2. 服务端配置模板(Xray JSON)
json
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "a90df182-358a-4d2c-9a4f-51a89c3bc891",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "gateway.icloud.com:443",
"xver": 0,
"serverNames": [
"gateway.icloud.com"
],
"privateKey": "eNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw=",
"shortIds": [
"7a8b9c0d1e2f3a4b"
]
}
}
}
]
}3. 客户端出站配置模板(Xray JSON)
json
{
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "198.51.100.23",
"port": 443,
"users": [
{
"id": "a90df182-358a-4d2c-9a4f-51a89c3bc891",
"flow": "xtls-rprx-vision",
"encryption": "none"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"fingerprint": "chrome",
"serverName": "gateway.icloud.com",
"publicKey": "fMyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyk=",
"shortId": "7a8b9c0d1e2f3a4b",
"spiderX": "/"
}
}
}
]
}四、目标借道域名(Dest/SNI)筛选黄金准则与避坑清单
配置 REALITY 最核心的技术环节就是借道目标站点(Dest)的选择。若选错目标,可能导致握手直接失败或反而引起审查关注:
- 必须支持 TLS 1.3 与 HTTP/2:
- 目标站点必须能够原生完成 TLS 1.3 握手并支持 ALPN(h2)。可通过终端命令检测:bash
curl -I -v --tlsv1.3 https://gateway.icloud.com
- 目标站点必须能够原生完成 TLS 1.3 握手并支持 ALPN(h2)。可通过终端命令检测:
- 严禁选择中国大陆境内存有 CDN 节点的域名:
- 如果所选域名在国内存在 CDN 节点(例如某些国际快餐品牌或跨国电商的中国分站),其解析出来的 IP 与握手行为可能被国内防火墙特殊监控,甚至导致客户端直接与国内节点连接失败。
- 客户端指纹必须与主流浏览器严格一致:
- 在客户端配置中,
fingerprint参数必须显式指定为chrome、firefox或safari(基于 uTLS 技术模拟真实浏览器的 Client Hello 扩展排列与加密套件)。留空或随意填写会导致指纹特征暴露。
- 在客户端配置中,
- 服务器物理链路与目标站点的延迟匹配:
- 最佳实践是挑选物理机房临近目标服务器的站点(例如美国西海岸 VPS 借道加利福尼亚大厂节点),确保盲转发时的 TLS 回落时延自然可信。
延伸阅读与技术关联
- 现代代理基础架构:VLESS 协议无状态设计解析
- 对比传统方案:Trojan 协议 TLS 伪装机制
- 客户端接入演练:Windows v2rayN 客户端导入与测速实战
- 基础与进阶配置:单节点与多协议路由配置标准