查看 2026-05-29 20 分钟 进阶 4 步

VLESS Reality 节点搭建完整教程(VPS 2026):3X-UI + Xray-core 从零部署

VLESS Reality 不需要域名和 TLS 证书,通过借用目标网站的 TLS 指纹来伪装流量。但很多人卡在 dest(伪装目标)、serverNames、privateKey/publicKey 和 shortId 四个参数对不上,导致客户端持续报 reality verification failed。这篇把每个字段的生成方式、含义和查错顺序按命令行和 3X-UI 面板分别写清楚。

2026 年如果要自建一个节点,VLESS Reality 是目前部署负担最轻的选择:不需要买域名、不需要申请 TLS 证书、不需要做 DNS 解析,一台干净的境外 VPS 加一个 443 端口就能跑起来。

但把四个 Reality 参数(dest / serverNames / privateKey-publicKey / shortId)理解清楚是上线不翻车的底线。这篇按 3X-UI 面板和命令行 Xray-core 两条路径把每一步写清楚,重点放在各参数的含义和报错排查上。

为什么 Reality 不需要域名和证书?

传统 VMess + WebSocket + TLS 方案需要先买域名、做 A 记录指向 VPS IP、用 acme.sh 或 certbot 申请证书,整个流程至少多出 15 分钟和一年几十块的域名费用。Reality 的方案是「借用」一个真实存在的 HTTPS 站点的 TLS 指纹:当非授权请求(DPI 探测、端口扫描)打到你的 443 端口时,Xray 直接把这个请求转发到你指定的 dest 站点(比如 learn.microsoft.com),探测方看到的响应和直接访问微软官网一模一样。

只有持有正确 x25519 公钥(pbk)、shortId(sid)和 SNI 的客户端才能完成 Reality 握手,进入真正的 VLESS 隧道。

方案需要域名需要 TLS 证书默认端口伪装方式
VMess + WS + TLS是(acme.sh/certbot)443自签证书或 CA 证书,Nginx/Caddy 反代
VLESS + XTLS Vision可选可选443XTLS 流控直接处理 TLS 内流量
VLESS + Reality443借用目标站点 TLS 1.3 指纹,无证书
Hysteria 2是或自签自签即可443/8443QUIC 伪装,无额外反代

从上表可以看出 Reality 在部署复杂度上明显低于其他方案,且因为不需要自签证书,没有证书链被扫到后关联多个节点的风险。

dest 和 serverNames 怎么选?不是随便填一个网址就行

dest 是做什么的

dest 是 Reality 的「伪装转发目标」。当有人直接访问 https://你的VPS_IP:443 但没有正确的 Reality 证书时,Xray 会把这次连接转向 dest。如果 dest 是 www.microsoft.com:443,那么探测者看到的就是微软官网的页面和证书。

serverNames 和 dest 的关系

serverNames 是一个数组,定义了服务器接受的 SNI 值。它至少要包含 dest 中的域名。如果你填 serverNames: ["www.microsoft.com", "learn.microsoft.com"],客户端 sni 填这两个中的任何一个都能通过,但 dest 仍然只会转发到其中一个。

四个推荐的 dest 站点

站点dest 填写值TLS 1.3全球 CDN备注
Microsoft Learnlearn.microsoft.com:443支持Azure CDNXray 社区默认推荐,非商业域名
Microsoft 官网www.microsoft.com:443支持Azure CDN几乎零宕机,延迟低
Apple 官网www.apple.com:443支持Akamai CDN全球加速覆盖好
Cloudflarewww.cloudflare.com:443支持Cloudflare CDN本身就是 CDN 厂商

不要选的站点类型:中文网站、有明显地域限制的域名(在 VPS 地区解析异常)、个人博客、大陆 CDN 站点。选定 dest 前,在 VPS 上跑一条 curl 确认可通:

curl -I https://learn.microsoft.com 2>&1 | head -5

返回 HTTP 200 或 301/302 且响应头出现 TLS 1.3 相关信息说明可用。返回 connection refused 或 timeout 就换一个 dest。

x25519 密钥对和 shortId:为什么客户端连不上通常是这两个对不上

Reality 的密钥对使用 x25519(Curve25519),不是 RSA 也不是 ECDSA。生成方式有两种:

方法一:Xray 内置命令(推荐)

xray x25519

输出:

Private key: gKX...(44 个 base64url 字符)
Public key:  yJm...(44 个 base64url 字符)

方法二:在 3X-UI 面板中生成

入站编辑页 → 安全选 reality → 点「生成」按钮。系统同时生成 privateKey 和 publicKey。

关键规则:私钥永远只放在服务器的 config.json 里,不给任何人。公钥放在客户端的 pbk 字段中。 很多人都在这步翻车——把 publicKey 填到了服务端,或者把 privateKey 泄露给了客户端。客户端和服务端密钥配不上,结果就是 reality verification failed。

shortId 是做什么的

shortId 是 Reality 握手阶段的一个附加验证值,长度 8 个十六进制字符(如 a1b2c3d4)。它加在 x25519 密钥之上作为二层验证。服务端的 shortIds 是数组格式,可以同时填多个值:

"shortIds": [
  "a1b2c3d4",
  "e5f6a7b8",
  ""
]

空字符串 "" 表示兼容模式——接受不带 shortId 的连接。这在过渡迁移时有用:先用两个 shortId + 空字符串跑一段时间,确认所有客户端都切到新 shortId 后再删除旧值。

客户端四项参数对照表

不管你用什么客户端,VLESS Reality 的连接参数必须和服务端完全一致。任何一个字段对不上就是连不上。

客户端字段对应服务端配置示例值是否大小写敏感
地址 (address)VPS 公网 IP45.xx.xx.xx不适用
端口 (port)inbounds.port443不适用
UUID (id)clients[].id3a8f...-...-...-...-...
Flowclients[].flowxtls-rprx-vision
安全 (security)streamSettings.securityreality
公钥 (pbk)realitySettings.privateKey 推导yJm...(44 位 base64url)是,每个字符都必须一致
Short ID (sid)realitySettings.shortIds[]a1b2c3d4(8 位十六进制)
SNI (sni/serverName)realitySettings.serverNames[]learn.microsoft.com
Fingerprint (fp)无需服务端对应字段chrome

Shadowrocket 用户扫码后注意检查 pbk 字段是否正确导入——这个客户端在某些版本中会把 URL 参数里的 %3D(= 号的 URL 编码)还原失败,导致公钥末尾缺少 =

支持的客户端(2026 年已验证兼容)

客户端平台最低版本Reality 支持
v2rayNWindows6.0+完整支持,支持二维码扫码
v2rayNGAndroid1.8.0+完整支持,支持二维码和剪贴板
ShadowrocketiOS2.2.0+支持,pbk 字段需注意 URL 编码
Sing-box全平台1.8.0+支持,需手动写 JSON,flow 在顶层
NekoBoxAndroid1.2.0+支持,sing-box 内核

Clash Meta / Mihomo 对 VLESS Reality 的支持仍在 experimental 阶段,部分版本会报 unsupported network: tcp 或 early eof,不推荐作为 Reality 的生产客户端。

端口冲突和防火墙:443 被占用了怎么办

部署过程中最常卡住的不是协议本身,而是端口。如果安装脚本跑完 xray 或 x-ui 起不来,第一件事就是查端口:

lsof -i :443

常见占用 443 的进程:

进程原因解决方法
Nginx / ApacheVPS 自带或之前装了 Web 服务systemctl stop nginx && systemctl disable nginx
Caddy自动 HTTPS 接管 443systemctl stop caddy && systemctl disable caddy
另一个 Xray 实例旧配置残留systemctl stop xray && pkill xray 然后重装
云服务商安全组控制台未放行登录云控制台 → 防火墙/安全组 → 添加入站规则 TCP 443

如果因为某些原因 443 确实不能用(比如公司网络封了 443 非 HTTP 流量,或者运营商干扰),可以换到 8443 或 2096。但这两个端口的流量特征不如 443 自然,被识别概率会稍高。

常见错误排查路径

按从高概率到低概率排列:

  1. reality verification failed:检查 pbk、sid、sni、fp 四项,尤其是 pbk 的每一位是否和服务器公钥完全一致。用 xray x25519 重新生成一次确保密钥对格式正确。
  2. connection refused / timeout:防火墙没放行 443,或者 VPS IP 已被阻断。先 ufw status 和云控制台安全组做双重确认。
  3. 客户端显示已连接但无法访问网页:系统代理未接管。v2rayN 右键 → 系统代理 → 全局模式。或者直接开 TUN 模式。
  4. 刚搭好能连,几小时后就断了:dest 站点在你 VPS 所在区域解析不通。换一个 dest,比如从 learn.microsoft.com 换成 www.cloudflare.com。
  5. 3X-UI 面板能打开但入站一直显示停止:Xray 主进程没跑起来。SSH 运行 systemctl status xray 看错误日志,大概率是 config.json 有语法错误或者 443 被占。

如果你在部署过程中需要搭配兼容 Reality 协议的订阅线路,可以用兼容 Clash / Singbox / V2Ray 的订阅作为备用,省去自建节点时逐个客户端手动配置的重复工作。但自建 VLESS Reality 的隐私隔离优势依然是共享订阅无法替代的——你拥有完整的服务器控制权,不需要信任中间层。

相关阅读

来源与时间

本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。

看更多教程:教程库 · 看客户端:客户端目录 · 看下载入口:下载中心