Network

Reality 协议:下一代代理协议深度解析

全面解析 VLESS + Reality 协议的原理、部署与优化,相比传统 TLS 代理具有更强的抗检测能力。

Reality 是 Xray-core 2.0 引入的革命性协议,它解决了传统 TLS 代理的指纹识别问题——让代理流量和真实访问大站的流量完全一致,从根本上杜绝主动探测。

为什么需要 Reality

传统 TLS 代理的问题:

方案致命弱点
VMess + TLSTLS 指纹可被识别
VLESS + TLS + Web需要伪装网站,自签证书有特征
Trojan密码在 TLS 握手中明文传输
Shadowsocks流量特征明显

核心矛盾:你的代理服务器返回的 TLS 证书是自签的,主动探测一查就知道不是真实网站。

Reality 的解法:不伪装,直接「借用」真实网站的证书。

工作原理

客户端                    Reality 服务器                   目标站点 (www.microsoft.com)
  |                            |                              |
  |--- TLS ClientHello ------->|                              |
  |                            |--- TLS ClientHello --------->|
  |                            |<-- TLS ServerHello + 真实证书 -|
  |<-- 转发真实证书 ------------|                              |
  |                            |                              |
  |  (验证: 证书是真的,域名也对)                              |
  |--- VLESS 请求(加密) ------>|                              |
  |                            |  (非法流量直接反向代理到目标)   |
  |<-- 正常代理响应 ------------|                              |

关键点:

  1. 真实证书 — 服务器向目标站点发起真实 TLS 握手,拿到的是真实 CA 签发的证书
  2. 主动探测免疫 — 探测者看到的是真实网站的证书和响应,完全合法
  3. 无域名要求 — 不需要购买域名,不需要配置 DNS
  4. 无端口复用 — 不需要 Nginx/SNI 分流

部署实战

服务端配置

安装 Xray-core:

bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install

配置文件 /usr/local/etc/xray/config.json

{
  "log": { "loglevel": "warning" },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "你的UUID",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.microsoft.com:443",
          "xver": 0,
          "serverNames": [
            "www.microsoft.com"
          ],
          "privateKey": "你的私钥",
          "shortIds": [
            "abcd1234",
            "",
            "0123456789abcdef"
          ]
        }
      }
    }
  ],
  "outbounds": [
    { "protocol": "freedom" },
    { "protocol": "blackhole" }
  ]
}

生成密钥对

xray x25519
# 输出:
# Private key: XXXXX(填入服务端 privateKey)
# Public key: YYYYY(填入客户端 publicKey)

生成 UUID

xray uuid
# 输出:一个随机 UUID

客户端配置

以 v2rayN / Clash Meta / Shadowrocket 为例,核心参数:

参数说明
协议VLESS
传输TCP
安全Reality核心选项
SNIwww.microsoft.com和服务端 serverNames 一致
Public Key服务端公钥从 x25519 生成
Short IDabcd1234和服务端 shortIds 匹配
Flowxtls-rprx-vision必须开启
Fingerprintchrome模拟浏览器指纹

Clash Meta 配置示例:

proxies:
  - name: "reality"
    type: vless
    server: your-server-ip
    port: 443
    uuid: 你的UUID
    network: tcp
    tls: true
    udp: true
    flow: xtls-rprx-vision
    client-fingerprint: chrome
    servername: www.microsoft.com
    reality-opts:
      public-key: 你的公钥
      short-id: abcd1234

目标站点选择

目标站点(dest)的选择很关键:

好的目标站点

  • 大厂官网:www.microsoft.comwww.apple.comwww.amazon.com
  • CDN 服务商:dl.google.com
  • 特征:支持 TLS 1.3 + H2,全球可达

不好的目标站点

  • 小众网站 — 可能下线
  • 已知代理服务站点 — 本身就是可疑目标
  • 不支持 TLS 1.3 的站点
  • 国内不可达的站点

验证目标站点

# 检查是否支持 TLS 1.3
openssl s_client -connect www.microsoft.com:443 -tls1_3 < /dev/null

# 检查证书链
echo | openssl s_client -connect www.microsoft.com:443 -servername www.microsoft.com 2>/dev/null | openssl x509 -noout -subject -issuer

性能优化

1. 开启 BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

# 验证
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr

2. 内核参数调优

# /etc/sysctl.conf
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_mtu_probing=1

3. Xray 服务端优化

{
  "policy": {
    "levels": {
      "0": {
        "handshake": 2,
        "connIdle": 30,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "bufferSize": 10240
      }
    }
  }
}

常见问题

Q: 连接失败,日志提示 reality handshake error

  • 检查 SNI 是否和服务端 serverNames 完全一致
  • 检查 shortId 是否在服务端 shortIds 列表中
  • 检查公钥是否正确

Q: 能连上但无法上网

  • 检查 outbounds 是否配置了 freedom
  • 检查服务器防火墙是否放行 443 端口
  • 检查服务器的出站网络是否正常

Q: 速度慢

  • 确认 BBR 已开启
  • 尝试更换目标站点
  • 检查服务器带宽和路由

Q: 被识别了

  • 确保 client-fingerprint 设为 chrome
  • 确保目标站点在国内可达
  • 不要和其他代理服务共用 443 端口

安全建议

  1. 不要分享配置 — 每人一套 UUID + shortId
  2. 定期更换 shortId — 增加追踪难度
  3. 服务端最小化暴露 — 只开 443,关闭其他端口
  4. 日志脱敏 — 生产环境 loglevel 设为 warning
  5. 系统加固 — SSH 密钥登录、fail2ban、自动更新

与其他协议对比

特性RealityVLESS+WS+TLSTrojanHysteria2
抗检测极强
需要域名
需要证书
协议开销极低
UDP 支持需额外配置需额外配置需额外配置原生
部署难度

总结

Reality 是目前抗检测能力最强的代理协议方案,它的核心创新是借用真实网站的证书来消除 TLS 指纹。部署简单、无需域名、无需证书,对个人用户来说几乎是零成本。配合 XTLS Vision 的流控,性能和安全性都达到了新高度。