Guide

2026VPN3X-UI 搭建 VLESS + Reality搭建教程

用 3X-UI 搭建 VLESS + Reality 节点,覆盖入站字段、客户端 Flow、V2RayN 类客户端、Clash/Mihomo 参数和延迟 -1 排查。

VLESS Reality 节点搭建要点表

VLESS + Reality 可以直接使用服务器 IP 和 443 端口,不要求你拥有域名,也不需要申请 SSL 证书。真正容易出错的地方不在“创建节点”本身,而在 3X-UI 里的 Reality 参数、客户端 Flow、公钥、short-id、servername 和 client-fingerprint 是否完全匹配。

如果你还在选择 VPS,先读 海外华人 VPS 完整指南 判断机房、预算和备份策略。只跑 3X-UI 和少量节点时,可以参考 1核1G VPS 够用吗 评估资源余量。

为什么要升级到 Reality?

VLESS + TCP 的优点是简单,适合验证服务器、面板、端口和客户端是否能正常工作。Reality 的价值在于把传输安全层做得更接近正常 HTTPS 访问特征,同时省掉域名、DNS、证书签发和证书续签这些变量。

对初学者来说,Reality 的便利点很明确:你可以先用 IP 和端口完成部署,把排障范围收敛到端口、安全组、SNI、公钥、short-id、Flow 和 fingerprint。下面这张图把基础节点和 Reality 节点的差异放在同一张表里,后面所有配置都围绕这些字段展开。

VLESS Reality 节点搭建要点表
VLESS Reality 节点搭建要点表

Reality 到底解决了什么问题?

Reality 可以理解为 Xray 里的传输安全方案。它修改的是 TLS 握手层,让客户端和服务端之间的连接表现得更接近普通 HTTPS 访问。服务端使用一组自生成密钥,客户端用对应公钥完成校验;serverNameshortIdfingerprint 等字段共同参与这次握手。

本文采用 3X-UI 中常见的 VLESS + TCP/RAW + Reality 组合,所以客户端配置里 networktcp。这不是说 Reality 在所有实现中只能配 TCP;Project X 文档里 Reality 还可以和 RAW、XHTTP、gRPC 等传输方式配合。本文只讲最适合新手排障的 TCP/RAW 配法,避免把多个高级分支混在一起。

3X-UI 中怎么创建 VLESS + Reality 入站?

进入 3X-UI 面板后,打开「入站列表」,点击「添加入站」。建议先按下面的字段创建一个独立 Reality 入站,确认稳定后再决定是否清理旧节点。

关键字段如下:

  • 备注:reality,也可以写成你自己的命名。
  • 协议:VLESS
  • 监听端口:443
  • 传输协议:TCP
  • 安全:Reality
  • SNI / ServerName:真实存在的大型网站域名,例如 www.microsoft.comcloudflare.comapple.com
  • 密钥对:点击「自动生成」。

443 端口不是强制值,但它是 HTTPS 标准端口,很多网络环境默认允许出站访问。你也可以使用其他端口,只要服务器防火墙、云服务商安全组和客户端端口保持一致。

创建入站后,进入「编辑客户端」,把客户端的 Flow 设置为 xtls-rprx-vision。保存前重点检查三件事:UUID 是否存在,Flow 是否写入客户端,Reality 的公钥和 short-id 是否已经生成。

3X-UI 入站字段填写表
3X-UI 入站字段填写表

V2RayN 类客户端应该复制哪些参数?

很多桌面客户端界面仍然叫 V2RayN、V2Ray 客户端或 V2Ray 配置,但 Reality 实际依赖的是支持 Reality 的 Xray 或兼容核心。导入前先确认客户端核心足够新,且配置页里能看到 Reality、Flow、public key、short id、fingerprint 这类字段。

手动添加时,至少要从 3X-UI 复制这些参数:

  • 地址 / Address:填写 VPS 公网 IP。
  • 端口 / Port:填写 3X-UI 入站端口,例如 443
  • 用户 ID / UUID:填写 3X-UI 客户端 UUID。
  • 协议:选择 VLESS
  • 传输:选择 TCP
  • 安全:选择 Reality
  • Flow:填写 xtls-rprx-vision
  • SNI / ServerName:填写 3X-UI Reality 里设置的域名。
  • Public Key:填写 3X-UI Reality 生成的公钥。
  • Short ID:从 3X-UI 生成的 short-id 中任选一个。
  • Fingerprint:建议先填 chrome,并确认客户端支持该选项。

填完以后先测试延迟。若延迟显示正常数值,再做实际连接测试。若延迟是 -1、超时或立刻断开,不要反复重建节点,先按后面的排查顺序检查端口、时间、公钥、short-id 和 fingerprint。

Clash/Mihomo 配置怎么写?

Clash 生态里要区分传统 Clash 和 Mihomo/Clash.Meta 兼容核心。VLESS + Reality 需要客户端核心支持 vlessreality-optsclient-fingerprint。如果配置粘贴后无法识别字段,通常是客户端核心太旧,或者当前客户端不是 Mihomo 兼容内核。

在 Clash/Mihomo 中新建本地配置时,可以按下面的字段逐项填写:

  • namereality
  • typevless
  • server:你的 VPS 公网 IP。
  • port443,或你在面板里设置的端口。
  • uuid:3X-UI 客户端 UUID。
  • networktcp
  • tlstrue
  • udptrue
  • flowxtls-rprx-vision
  • servername:与 3X-UI Reality SNI 保持一致,例如 www.microsoft.com
  • reality-opts.public-key:填写 Reality 公钥。
  • reality-opts.short-id:填写 short-id 列表中的一个。
  • client-fingerprint:填写 chrome,不要留空。

这组字段里最常见的错配是 servername。服务端写的是 www.microsoft.com,客户端就不要改成 cloudflare.com。第二个高频问题是 client-fingerprint 留空。Mihomo 文档里把 client-fingerprint 作为 VLESS 等协议可用的 uTLS 指纹配置,Reality 场景下建议明确写出,例如 chrome

VLESS Reality 客户端参数映射表
VLESS Reality 客户端参数映射表

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

传统 TLS 的逻辑是:服务端出示证书,客户端验证证书是否绑定到目标域名。因此你如果要自己托管 HTTPS 服务,通常要准备域名、DNS 解析和证书签发。

Reality 的逻辑不同。它使用服务端生成的私钥和客户端持有的对应公钥来参与握手,同时借用目标站点的 TLS 行为特征作为外观。也就是说,你不需要真正拥有 servername 里填写的域名,也不需要给这个域名申请证书。

这也是 Reality 配置看起来“少了域名和证书”,但多了 public-keyshort-idfingerprint 的原因。它把传统证书链的一部分工作,换成了 Reality 自己的密钥和握手参数。对使用者来说,方便之处是部署门槛低;代价是参数必须严格一致,任何一个关键字段填错都会连接失败。

延迟显示 -1 怎么排查?

延迟显示 -1 通常表示客户端没有完成可用连接。按下面顺序排查,效率比反复删除节点更高。

先确认服务器真的在监听 443 端口。可以在服务器执行 ss -tlnp | grep 443。如果没有输出,说明服务端没有监听成功,回到 3X-UI 检查入站是否启用、端口是否被占用、Xray 是否正常运行。

再检查云服务商安全组。很多 VPS 控制台有独立防火墙,即使服务器内部已经监听 443,云平台入口没有放行也会连接失败。入站规则至少要允许 443/tcp

接着检查服务器时间同步。Reality 对握手时间差更敏感,服务器时间偏差过大时可能直接失败。Ubuntu 或其他 systemd 系统可以先执行 timedatectl status 查看状态,再执行 sudo timedatectl set-ntp true 开启网络时间同步。

最后检查客户端参数。优先看 UUID、Flow、公钥、short-id、client-fingerprint 和 servername。公钥和 short-id 必须来自同一个 Reality 入站;client-fingerprint 不要留空;servername 不要随意换成另一个域名。

VLESS Reality 延迟 -1 排查顺序表
VLESS Reality 延迟 -1 排查顺序表

常见问题

没有域名,Reality 还能用吗?

可以。Reality 不要求你拥有 `servername` 里填写的域名,也不需要为自己的 VPS 申请 SSL 证书。你真正要保存好的是服务端私钥、客户端公钥、short-id 和 UUID。

servername 可以随便填吗?

不建议随便填。它应该是真实存在、TLS 行为稳定的网站域名,并且要和服务端 Reality 配置里的允许值一致。本文示例使用 `www.microsoft.com`,你也可以选择其他大型网站域名,但不要服务端和客户端各填一个。

为什么连接后立刻断开?

最常见原因是公钥、short-id、Flow 或 fingerprint 不匹配。先不要改端口,也不要重装 3X-UI。把服务端 Reality 参数和客户端节点配置放在一起,一项一项对照,通常能很快找到问题。

Clash 配置粘贴后没反应怎么办?

先确认客户端使用的是 Mihomo/Clash.Meta 兼容核心,并且版本支持 VLESS + Reality。传统 Clash 或旧核心可能无法识别 `reality-opts`、`flow`、`client-fingerprint` 等字段。

可以直接把旧节点删掉吗?

不建议马上删除。先保留旧节点作为回退路径,等 Reality 节点在手机、电脑和常用网络环境都测试稳定后,再考虑关闭旧节点。这样一旦 Reality 参数写错,你仍然有一条能连回服务器的路径。