搭建一个 VLESS+Vision+Reality 节点
前言
在本章中,我们将使用 Xray 搭建一个 VLESS+Vision+Reality 节点。Reality 是 XTLS 团队开发的革命性协议,它的核心思想是 “偷取”其他网站的 TLS 证书 来伪装自己的流量。
Reality 的工作原理
传统的 TLS 伪装需要你拥有一个域名和 SSL 证书。而 Reality 协议可以:
- 无需域名和证书:直接使用 Microsoft、Apple、Cloudflare 等网站的证书
- 完美伪装:外部探测者看到的是完全合法的 TLS 握手
- 主动防御:非法探测会被转发到真实的目标网站
“偷别人证书” vs “偷自己证书”
本章我们先实现 “偷别人证书” 方案,即使用 www.microsoft.com 等网站作为伪装目标。这个方案的优点是无需域名,可以快速部署测试。
在系列最后一章,我们会升级为 “偷自己证书” 方案,使用自己的域名和证书,配合 Nginx SNI 分流实现最佳伪装效果。
第一步:安装 Xray
使用 Xray 官方提供的一键安装脚本:
shell
# 下载并执行官方安装脚本 |
安装完成后,验证安装:
shell
# 查看 Xray 版本 |
你应该能看到类似以下输出:
text
Xray 25.12.8 (Xray, Penetrates Everything.) 81f8f39 (go1.25.5 linux/amd64) |
第二步:生成必要的密钥
Xray Reality 需要几个关键的密钥和 ID,我们需要先生成它们。
生成 UUID(用户标识)
shell
# 生成 UUID |
输出示例:f47ac10b-58cc-4372-a567-0e02b2c3d479
生成 Reality 密钥对
shell
# 生成 X25519 公私钥对 |
输出示例:
text
PrivateKey: oGSPyKx0tzTE1xdwbyer7r_1MLcn-1gZDkI89fZXYXg |
重要:请保存好这两个密钥!
- Private key(私钥):配置在服务器端
- Password(原 Public Key -> 公钥):配置在客户端
生成 Short ID
shell
# 生成 16 位十六进制 short_id |
输出示例:a1b2c3d4e5f67890
第三步:选择目标网站
Reality 需要一个目标网站(dest/target)来进行伪装。这个网站需要满足以下条件:
- ✅ 支持 TLS 1.3
- ✅ 支持 X25519 密钥交换
- ✅ 支持 HTTP/2(h2)
- ⭐️ 加分项:网站服务器物理距离和你的VPS近 (IP 相近)
- ⭐️ 加分项:网站支持 OCSP Stapling
选取方法参考:https://github.com/XTLS/Xray-core/issues/2005#issuecomment-1538294415
如果你懒得折腾,直接用下面的目标网站:
| 域名 | 说明 |
|---|---|
www.microsoft.com |
微软官网,稳定可靠 |
www.apple.com |
苹果官网 |
www.cloudflare.com |
Cloudflare 官网 |
www.amazon.com |
亚马逊官网 |
gateway.icloud.com |
iCloud 网关 |
可以在vps上面使用ping 域名, 看下哪个延迟最小,使用哪个
验证目标网站兼容性
你可以使用以下命令验证目标网站是否支持 TLS 1.3 和 X25519:
shell
# 检查 TLS 版本和密钥交换算法 |
如果输出包含 TLSv1.3 和 X25519,说明该网站兼容 Reality。
第四步:配置 Xray
现在我们来编写 Xray 的配置文件。
shell
# 编辑 Xray 配置文件 |
将以下配置粘贴进去,并替换标记的占位符:
json
{ |
配置项详解
| 配置项 | 说明 |
|---|---|
port: 443 |
监听 443 端口(标准 HTTPS 端口) |
protocol: vless |
使用 VLESS 协议 |
id |
你生成的 UUID,用于客户端认证 |
flow: xtls-rprx-vision |
启用 Vision 流控,提供更好的性能和伪装 |
network: raw |
使用 TCP 传输 |
security: reality |
使用 Reality 安全层 |
dest |
目标网站地址,用于 TLS 伪装 |
serverNames |
允许的 SNI 列表,客户端需要使用这些域名连接 |
privateKey |
你生成的 X25519 私钥 |
shortIds |
短 ID 列表,用于额外的认证 |
第五步:启动 Xray 服务
shell
# 检查配置文件语法是否正确 |
如果配置正确,你会看到类似输出:
text
Xray 25.12.8 (Xray, Penetrates Everything.) 81f8f39 (go1.25.5 linux/amd64) |
现在启动服务:
shell
# 重启 Xray 服务 |
如果状态显示 active (running),说明 Xray 已成功启动。
查看运行日志
shell
# 实时查看 Xray 日志 |
按 Ctrl+C 退出日志查看。
第六步:配置客户端
现在服务器已经准备就绪,我们需要配置客户端来连接。
连接信息汇总
根据你的配置,整理以下信息:
| 参数 | 值 |
|---|---|
| 地址 (Address) | 你的 VPS IP 地址 |
| 端口 (Port) | 443 |
| 协议 (Protocol) | vless |
| UUID | 你生成的 UUID |
| 流控 (Flow) | xtls-rprx-vision |
| 传输层 (Network) | tcp |
| 安全 (Security) | reality |
| SNI | www.microsoft.com |
| 指纹 (Fingerprint) | chrome |
| 公钥 (Public Key) | 你生成的公钥 |
| Short ID | 你生成的 shortId |
v2rayN 配置(Windows)
- 打开 v2rayN
- 服务器 → 添加 [VLESS] 服务器
- 填入上述信息
- 传输层安全选择
reality - 填入公钥和 shortId
Clash Meta / Mihomo 配置
yaml
proxies: |
分享链接格式
text
vless://UUID@VPS_IP:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.microsoft.com&fp=chrome&pbk=公钥&sid=shortId&type=tcp#节点名称 |
第七步:连接测试
配置好客户端后,尝试连接并访问网站测试是否正常工作。
- 在客户端开启代理
- 访问 https://www.google.com 测试连通性
- 访问 https://ip.sb 确认出口 IP 是否为 VPS IP
常见问题排查
问题 1:连接超时
shell
# 检查 443 端口是否开放 |
问题 2:Reality 握手失败
- 确认客户端的公钥与服务器的私钥是配对的
- 确认 shortId 完全一致
- 确认 serverName/SNI 在服务器配置的 serverNames 列表中
问题 3:连接后无法访问网站
shell
# 查看 Xray 日志 |
总结
在本章中,我们完成了:
- ✅ 安装 Xray 核心
- ✅ 生成 UUID、Reality 密钥对和 Short ID
- ✅ 配置 VLESS+Vision+Reality(”偷别人证书”方案)
- ✅ 配置客户端并成功连接
现在你已经拥有了一个基础的 Reality 节点。在后续章节中,我们会:
- 配置 SmartDNS 优化 DNS 解析
- 申请自己的域名和证书
- 使用 Nginx SNI 分流实现 “偷自己证书” 的最佳伪装方案
转载文章地址
https://blog.pollochen.com/posts/vps-xray-01-vless-vision-reality/



