Reality 是目前抗探测能力最强的 VLESS 传输方式:服务端不依赖域名和证书,直接"借用"一个真实大站的 TLS 握手。下面是我在多台 VPS 上实测走通的流程。

一、生成密钥对

sing-box generate reality-keypair

得到 PrivateKey(服务端用)和 PublicKey(客户端用),保存好。

二、服务端配置(sing-box)

核心 inbound 配置:

{
  "type": "vless",
  "tag": "reality-in",
  "listen": "::",
  "listen_port": 443,
  "users": [{ "uuid": "你的UUID", "flow": "xtls-rprx-vision" }],
  "tls": {
    "enabled": true,
    "server_name": "www.apple.com",
    "reality": {
      "enabled": true,
      "handshake": { "server": "www.apple.com", "server_port": 443 },
      "private_key": "你的PrivateKey",
      "short_id": ["你的short_id"]
    }
  }
}

注意:short_id 自己生成一段 hex(如 18b028db),客户端要填一致的。

三、两个真实踩坑

坑一:www.microsoft.com 已不能做握手目标。 微软的证书链太大,Reality 借用握手会失败(上游已知问题)。实测 www.apple.com 稳定可用。

坑二:OpenWrt 上 kwrt 的 sing-box 包不带 init 脚本。 需要自己写 procd 脚本放到 /etc/init.d/sing-box,否则重启后服务起不来。

四、客户端配置

Shadowrocket / v2rayNG / Streisand 均支持:

  • 协议:VLESS + Reality + Vision(flow 填 xtls-rprx-vision)
  • 地址:你的 VPS IP,端口 443
  • UUID、PublicKey、short_id、SNI(www.apple.com)、指纹(chrome)

扫码导入最省事,服务端生成分享链接即可。

五、进阶:出站串接本地分流

如果 VPS 本地跑了 Clash/Mihomo,可以让 Reality 入站的出站指向 127.0.0.1:7890,这样 VPS 上的分流规则依然生效,节点行为和本地一致。