3X-UI 搭 VLESS Reality 节点:不用域名,也不用证书

3429 字
17 分钟
3X-UI 搭 VLESS Reality 节点:不用域名,也不用证书
  1. 13X-UI 搭 VLESS Reality 节点:不用域名,也不用证书本文
  2. 2v2rayN / v2rayNG 客户端下载:官方 Release 与 CDN 镜像
3X-UI 搭 VLESS Reality 节点:不用域名,也不用证书

手上有了一台全新的 VPS,怎么把它变成一个能导入客户端的代理节点?这篇记录我用 3X-UI 面板搭 VLESS Reality 节点的完整过程:从 SSH 连上服务器,到装面板、开 Reality 入站、设置 Vision 流控,最后拿到一条改个 IP 就能用的分享链接。全程在 Debian 13 上操作,Windows 自带的终端就够了,不需要额外装工具。

Reality 不用自己买域名,也不用配证书。它借一个真实网站的 TLS 握手做掩护:认证通过的客户端拿到的是服务端私钥签发的临时证书,数据走 xtls-rprx-vision 通道;认不出来的探测流量会被原样转发到那个真实网站,对方看到的只是一个正常站点。对只想自己用的人来说,它是省心程度和安全性比较平衡的选择。

适合谁:有一台干净 VPS、不排斥命令行、想自己掌控节点的人。读完你能得到:一个绑定在 127.0.0.1 的 3X-UI 面板、一个 443 端口上的 VLESS Reality 入站、一条能直接导入客户端的链接。

这是《自建代理链路》的第一篇,讲的是服务端:把一台空 VPS 变成能导入客户端的节点。第二篇讲客户端从哪下、怎么确认没下错,链接在下面「复制分享链接」那节。两篇按顺序读最顺,但各自都能独立照着做完。

关键要点
  • Reality 不用买域名也不用配证书:它借一个真实网站的 TLS 握手做掩护,探测流量会被原样转发过去
  • 面板装完只监听 127.0.0.1,用 SSH 隧道打开就行,不用为它多开一个公网端口
  • 面板生成的分享链接里写的是 localhost,必须换成 VPS 公网 IP,原样导入客户端连不上
  • 客户端的 Flow 要选 xtls-rprx-vision,不选就没有抗探测的效果
  • 给自己用的规模不用管数据库,客户端数上到几百之后 SQLite 才需要换成 PostgreSQL

连接 VPS:Windows 自带终端就够#

按 Win + R,输入 cmd,回车,打开命令提示符。

在运行对话框中输入 cmd 打开命令提示符
在运行对话框中输入 cmd 打开命令提示符

然后根据 VPS 的 SSH 端口选择命令。新买的 VPS 默认 22 端口,直接连:

Terminal window
ssh root@你的VPS IP

服务商如果给了非 22 的端口,加 -p 指定:

Terminal window
ssh -p 2222 root@你的VPS IP

首次连接会提示指纹确认,输入 yes;接着提示输密码。

在命令提示符中输入 ssh 命令连接 VPS,并输入密码
在命令提示符中输入 ssh 命令连接 VPS,并输入密码

输密码时屏幕没有任何反应是正常现象

终端输入密码时不显示字符,连 * 都没有。直接输完按回车就行。

先做安全加固:改 SSH 端口和防火墙#

默认 22 端口很容易被暴力破解

如果拿这台 VPS 搭加速节点,被攻破后你的所有外网访问数据都会暴露。这步不要跳过。

加固做两件事:把 SSH 端口从 22 改成一个高位端口(下文用 2222 做例子),再用 UFW 防火墙只放行需要的端口。

改 SSH 端口#

用 sed 一条命令改掉配置文件里的端口,省得手动找那一行:

Terminal window
sed -i 's/^#\?Port .*/Port 2222/' /etc/ssh/sshd_config

这条命令做的事,等价于把下面这行:

/etc/ssh/sshd_config
#Port 22
Port 2222
想手动编辑就用 nano

nano /etc/ssh/sshd_config,找到 #Port 22,删掉开头的 #,把 22 改成 2222,Ctrl + O 保存、Ctrl + X 退出。

改完先验证语法,再重启 SSH 服务:

Terminal window
sshd -t && systemctl restart ssh
sshd -t 没有任何输出就说明配置没问题

如果它报错,按提示改对再重启。配置写错又直接 reboot,重启后可能再也连不上这台机器。

Debian 12 上如果提示 Failed to restart ssh.service: Unit ssh.service not found,说明这台机器用了 socket 激活,改用这条:

Terminal window
systemctl restart ssh.socket

重启服务后不要关掉当前这个终端窗口,新开一个窗口用新端口试连一次,能连上再往下走:

Terminal window
ssh -p 2222 root@你的VPS IP

连不上就回到还开着的旧窗口把端口改回去,这是留一条后路的意思。

装 UFW 并放行端口#

然后安装并配置 UFW。注意顺序:先把新 SSH 端口放行了,再启用防火墙,否则会把自己锁在门外。

Terminal window
apt update && apt install -y ufw
ufw allow 443/tcp
ufw allow 2222/tcp
ufw enable
reboot
想在重启前确认规则已经生效,单独跑一次 ufw status

看到 443/tcp 和 2222/tcp 两行 ALLOW 就说明放行了,再 reboot 才放心。

VPS 重启完成后,再用新端口连回去确认一遍:

Terminal window
ssh -p 2222 root@你的VPS IP

安装 3X-UI 面板#

连回去之后,一条命令安装 3X-UI:

Terminal window
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

如果提示 command not found,先装 curl 再重跑:

Terminal window
apt update && apt install -y curl

安装过程中的几个选择#

安装脚本会依次问你几个问题,按下面选。

数据库选 1(SQLite):官方推荐客户端数在 500 以下用 SQLite,自用完全够了。面板端口问你要不要自定义时输入 y,然后填一个随机高位端口,本文截图里用的是 2095。

3X-UI 安装时的数据库选择和面板端口设置
3X-UI 安装时的数据库选择和面板端口设置

SSL 证书这一步选 4(跳过):因为面板等下只通过 SSH 隧道访问,不需要证书。

3X-UI 安装时选择跳过 SSL 证书
3X-UI 安装时选择跳过 SSL 证书

跳过 SSL 后面板走明文 HTTP

只有在反向代理或 SSH 隧道后面才安全。下一步把面板绑定到 127.0.0.1 时会问你,输入 y,强制只能通过隧道或反代访问。要公网直连面板的,先看后面「不想开隧道」那一节再决定。

记下安装完成输出的凭据#

装完后往上翻,找到 Panel Installation Complete 字样,把 Username、Password、Port、WebBasePath、API Token 都记下来,登录面板要用。

3X-UI 安装完成后的账号密码端口和路径信息
3X-UI 安装完成后的账号密码端口和路径信息

最后会输出 x-ui 的控制菜单,看到它就说明面板服务已经跑起来了。

3X-UI 安装完成后的控制菜单
3X-UI 安装完成后的控制菜单

用 SSH 隧道打开面板#

面板绑定在 127.0.0.1 上,公网直接访问是打不开的——这是故意的,面板不暴露到公网。本地开一条 SSH 隧道把面板端口转发出来:

Terminal window
ssh -p 2222 -L 2222:127.0.0.1:2095 root@你的VPS IP
注意命令里的 -p 2222

安装完输出的标准隧道命令没有带 -p,那是按默认 22 端口写的。前面把 SSH 端口改成了 2222,所以要加上,否则会连到 22 端口上去。

隧道保持开着,浏览器访问 http://localhost:2222/你的WebBasePath/,看到登录页就说明成功了。用刚才记下的账号密码登录。

3X-UI 面板登录页
3X-UI 面板登录页

登录成功后进入面板首页。

3X-UI 面板首页概览
3X-UI 面板首页概览

创建 VLESS Reality 入站#

侧边栏点「入站」,再点左上角的「添加入站」。基础配置里:备注随便填(本文用 Freekm.com),协议选 vless,端口写 443。

在 3X-UI 中添加入站,协议选 vless,端口填 443
在 3X-UI 中添加入站,协议选 vless,端口填 443

切到「安全」页签,把安全类型从「无」改成 Reality。表单会展开一串参数:

  • 目标填 www.microsoft.com:443,然后点旁边的「扫描」,让面板测试这个目标站点可用;也可以直接点「查找目标」让它自动挑一个
  • uTLS 保持 chrome
  • Short IDs、SpiderX、公钥、私钥全部由面板自动生成,不用手动改

在安全页签选择 Reality 并设置目标网站
在安全页签选择 Reality 并设置目标网站

点右下角「创建」,回到入站列表,能看到新记录:端口 443 上有 vless、TCP、Reality 三个标签,状态为开启,说明入站已经生效。

添加客户端并设置 Vision 流控#

侧边栏点「客户端」,再点「添加客户端」。弹窗顶部有「基本」「凭据」「链接」三个页签。在「基本」页签把关联入站选成刚才创建的那个入站。

添加客户端时选择关联入站
添加客户端时选择关联入站

切到「凭据」页签,这里是 UUID、密码、订阅 ID 这些连接凭据。关键一步:在 Flow(流控)下拉菜单里选 xtls-rprx-vision,然后点「创建」。

在凭据页签设置 Flow 流控为 xtls-rprx-vision
在凭据页签设置 Flow 流控为 xtls-rprx-vision

流控模式怎么选:

  • 无:不开流控,兼容性最好,性能一般
  • xtls-rprx-vision:推荐,配合 Reality 或普通 TLS 使用,握手后的数据走 XTLS Vision 通道,减少可探测特征
  • xtls-rprx-vision-udp443:把 UDP 443 也纳入流控,兼容性较差,一般不选

创建完回到客户端列表,新客户端已经在列表里了。

复制分享链接并改成你的 VPS IP#

点击客户端行最左边的二维码图标,弹出分享面板,展开「Vless TCP REALITY」这一项,点右侧的「复制」按钮拿到链接。

在分享面板中展开 Vless TCP REALITY 并复制链接
在分享面板中展开 Vless TCP REALITY 并复制链接

链接里的 localhost 必须换成 VPS 公网 IP

因为面板监听在 127.0.0.1,生成的链接里服务器地址是 localhost,直接导入客户端是连不上的。把 localhost 替换成你的 VPS 公网 IP 再导入。

替换前的链接长这样:

vless://0dff199d-4a03-445f-9108-4595727672bb@localhost:443?encryption=none&flow=xtls-rprx-vision&fp=chrome&pbk=Ifs0B19vQw4LPiV1zvkK3cSLQj5q-6iKxXHobjEfoQI&security=reality&sid=f527e0ddad&sni=c.s-microsoft.com&spx=%2F91b3b23fbbde023&support-x25519mlkem768=true&type=tcp#Freekm.com-73r5lux703qw

把 @localhost:443 改成 @你的VPS IP:443,导入客户端就能用了。

v2rayN / v2rayNG 客户端下载:官方 Release 与 CDN 镜像
v2rayN 是桌面端(Windows / macOS / Linux),v2rayNG 是 Android 端,别下错。GitHub 直连时好时坏就用 CDN 镜像,附十个包的 SHA256 与 GPG 验签方法;iOS 只能从 App Store 装。
2026-11-01折腾笔记#教程#跨平台#代理#命令行

不想开隧道:面板暴露到公网要付什么代价#

面板绑在 127.0.0.1 上不是多余的一步。它和节点不一样:节点对外只暴露 443 上的 TLS 握手,面板暴露的是一个登录表单加一套 API,扫描器最喜欢这类东西。

跳过证书、把面板端口直接开到公网,有两个现实风险:密码和会话 Cookie 走明文 HTTP,链路上的人能看到;面板端口和路径会被批量扫,弱密码可能几小时内就被撞开,撞开等于把你所有入站、客户端配置和 API Token 一起交出去。

先加密,再谈公网访问#

有域名的话,安装时 SSL 那一步别选跳过(本文选的 4),按提示填域名,让脚本走 Let’s Encrypt 把证书签下来。已经装完的也能补:在 x-ui 菜单的证书管理里配好证书路径,重启面板即可。之后访问走:

https://你的域名:面板端口/你的WebBasePath/

没有域名就别硬放出去#

Let’s Encrypt 不给纯 IP 签证书,自签证书浏览器会一直报警告,用起来和安全都打折扣。这种情况继续用 SSH 隧道,或者套一层 Cloudflare Tunnel,都比明文挂公网强。

把暴露面缩到最小#

真要开,就把能收的口都收掉:WebBasePath 用安装时生成的随机串,别改成 admin 这类好猜的词;面板端口别留 2095 这种默认值;UFW 只放行你自己的 IP。

Terminal window
ufw allow from 你的家庭公网IP to any port 2095 proto tcp
反代放 443 会撞车

本文的 443 已经被 Reality 入站占用,反代只能换端口(比如 8443),或者把面板挂到反代的子路径下——后者配置繁琐,容易把自己绕进去。用面板自带的证书,比额外架一层反代省事。

监听地址要改

面板默认只听 127.0.0.1,想公网访问得在 x-ui 菜单的「设置」里把监听地址改成 0.0.0.0(不同版本菜单措辞略有差异),改完重启面板。

我的选择是:平时关着,要用的时候开隧道进去。省下的不是配置时间,是被爆破的概率。

常见问题#

Q:输入密码时终端没反应?#

正常现象。Linux 终端输入密码不回显任何字符,直接输完按回车。

Q:安装脚本提示 command not found?#

缺 curl。先执行 apt update && apt install -y curl,再重跑安装命令。

Q:浏览器打不开面板?#

按顺序检查三件事:SSH 隧道窗口是否还开着;地址是否用的 http://localhost:转发端口/WebBasePath/;端口和路径是否和安装完成输出的一致。面板绑定了 127.0.0.1,用公网 IP 直接访问面板端口是打不开的,这是预期行为。

Q:面板能不能直接用公网 IP 打开?#

默认不行,面板只监听 127.0.0.1,公网访问面板端口会直接被拒。真想直连,得先改监听地址、再配好证书,步骤在「不想开隧道」那一节。不加密就挂公网,等于把登录密码放在明文信道上让人看。

Q:链接导入客户端后连不上?#

先确认把链接里的 localhost 换成了 VPS 公网 IP;再确认 UFW 放行了 443 端口;最后确认客户端支持 Reality 和 xtls-rprx-vision 流控,太老的客户端内核不支持。

最后验收一下#

全部做完,对照这份清单:

  • 浏览器能通过 SSH 隧道打开面板登录页
  • 入站列表里 443 端口有 vless、TCP、Reality 三个标签,状态开启
  • 客户端导入改好 IP 的链接后能正常连通
  • 面板要么没对公网开放,要么是 https 且只放行了你的 IP

这套方案适合自己用、节点数量不多、想要抗探测的场景;如果你要给很多人用,SQLite 在客户端数超过 500 后就该换 PostgreSQL 了,安装时选 2 即可。不适合想一键脚本梭哈的人——但这套流程走一遍下来,以后排查问题会容易很多。

下一步建议:登录面板后先把默认账号密码改掉,养成定期备份 /etc/x-ui/x-ui.db 的习惯,数据库文件里存着所有入站和客户端配置。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

3X-UI 搭 VLESS Reality 节点:不用域名,也不用证书
https://freekm.com/posts/vps-vless-reality-3x-ui/
作者
FreeKm
发布于
2026-11-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
FreeKm
写代码、折腾服务器、淘好东西。记录技术折腾笔记与日常随笔。
分类
标签
站点统计
文章
3
分类
2
标签
9
总字数
10,361
运行时长
0 天
最后活动
0 天前
文章目录