自建代理节点教程——零基础从头搭建你的专属 VLESS+Reality 节点

自建代理节点 · 从零到运行完全指南

本教程面向完全没有相关经验的读者,手把手带你从购买服务器开始,一步步搭建属于自己的 VLESS+Reality 代理节点,并理解每一步背后的原理。请注意,本文所述仅仅是一个作者已经实现的方法,可能存在更优或者更安全更便捷的方法,欢迎各位佬友多多指正! 另外,如果有任何不理解或者不清楚的地方,欢迎多多提问。

预计耗时:1.5小时
你需要拥有一个绑定银行卡的支付宝账户

目录

  • 00 · 先搞懂原理:我们在做什么
  • 01 · 购买服务器
  • 02 · 测试网络质量
  • 03 · SSH 连接服务器
  • 04 · 初始化系统
  • 05 · 安装 3x-ui 面板
  • 06 · 申请 SSL 证书
  • 07 · 配置 VLESS+Reality 节点
  • 08 · 测试节点
  • 09 · 转换为 Clash 配置(YAML)
  • 10 · 多用户管理
  • !! · 关键踩坑记录

00 · 先搞懂原理:我们在做什么

什么是 GFW, 为什么我们需要代理

GFW是东大的网络审查系统,为了保护网民免受外界信息毒害。它会检测你发出的网络请求,而如果目标是被屏蔽的网站(Google、YouTube 等),就把这个连接直接掐断。因此,如果我们为了学习或工作要访问这些被屏蔽的网站,要做的,就是让 GFW “看不懂” 我们在做什么。

代理的工作原理

利用境外的一台服务器当作代理,访问境外网站时,流量不直接去目标网站,而是先发给这台服务器,服务器再代为访问并把结果传回来。GFW 看到的只是你和那台服务器之间的通信,而这个通信被我们伪装成了普通的 HTTPS 流量,GFW实施的是黑名单制度,是不断屏蔽ip而不是只允许我们访问特定ip,因此我们对陌生ip的访问大概率不会被GFW识别并屏蔽。

你的电脑  ──加密流量──▶  境外VPS  ──正常请求──▶  Google等

GFW 看到的:你在访问一个 HTTPS 网站(伪装成例如苹果官网的流量)→ 放行 ✅

为什么要自己部署代理服务器

自然,我们可以直接利用网上分享的公用节点和购买代理,而且,如果你只是日常在外网浏览一些信息,使用匿名服务的话,也够用了。但是如果你要用它注册重要账号,或者从事金融服务等需要,则这些公用代理的弊端显现出来了:这些代理大多使用人数很多,不仅在高峰时段容易拥堵,使用人数超标还可能让各大网站触发风控,使得ip “变脏”。 这样我们注册网站 (例如Google) 的时候就会备受折磨,同时如果代理商不怀好心,则你的信息和账密可能被监视并盗取,对个人财产安全造成损失。因此,从安全角度来看,自己部署代理是更好的选择。


01 · 购买服务器

什么是 VPS

VPS(虚拟私人服务器)就是你在机房租用的一台独立服务器,24 小时运行,有固定 IP 地址。我们需要它来做代理的中转。

推荐:搬瓦工 CN2 GIA (或是你自己搞到的任何能访问外网的服务器)

访问 https://bandwagonhost.com,选择 CN2 GIA 线路套餐。翻到页面底部,可以根据自己的需求选择香港或洛杉矶节点。

CN2 GIA 是什么?
CN2 GIA 是中国电信的顶级骨干网线路,虽然价格比普通 VPS 贵,但延迟更低,丢包更少。

推荐套餐:20G KVM PROMO V5 – CN2 GIA ECOMMERCE,约 $49.99/季度。机房选 Los Angeles DC6 或 DC9,对国内延迟最优。还好就好在支持支付宝支付,但是你得绑定银行卡。

系统选择

购买时系统选 Ubuntu 24.04,这是目前最稳定的 LTS 版本,本教程所有命令均基于此系统。

:warning: 购买完成后记录以下信息,后续所有操作都会用到:

  • 服务器 IP 地址
  • root 密码
  • KiwiVM 控制台地址和密码

KiwiVM 控制台:救命用的备用入口

搬瓦工提供 KiwiVM 控制台,里面有 VNC 功能——就算 SSH 断了、密码忘了,也能直接在浏览器里操作服务器。务必记录这个地址和密码,关键时刻能救命。


02 · 测试网络质量

为什么先测试

服务器的 IP 可能已经被 GFW 封锁。买完之后先测一下,确认 IP 没问题再继续操作,免得白费力气。如果确认ip已经被封锁,则可以申请更换节点。

Ping 测试:确认 IP 没被封

在 Windows 命令提示符(cmd)或终端里执行:

ping 你的服务器IP

或者使用ping.pe,输入ip,结果更直观

看结果:

  • 有回应,延迟在 50~300ms 之间 → IP 没被封,可以继续 :white_check_mark:
  • 全部 Request timed out / 100% 丢包 → IP 被封,找服务商换 IP :cross_mark:

:warning: 注意:ping 通不代表一切正常
ping 用的是 ICMP 协议,GFW 有时候不封 ICMP 但会封 TCP。后续如果节点连接失败,要进一步确认流量是否到达服务器。


03 · SSH 连接服务器

什么是 SSH

SSH(安全外壳协议)是远程控制服务器的工具。你在自己电脑上输入命令,命令通过加密通道传到服务器执行,就像坐在服务器面前操作一样。

搬瓦工 CN2 GIA:直接连接

搬瓦工线路质量好,SSH 不会被 GFW 掐断,直接在终端执行:

ssh root@你的服务器IP

:warning: 输密码时屏幕没有反应是正常的
SSH 出于安全考虑,输入密码时屏幕不显示任何字符(包括星号也不显示),正常输完按回车即可。

出现 root@服务器名:~# 说明连接成功。


04 · 初始化系统

更新系统包

SSH 连上服务器后,第一件事是更新系统,避免后续安装出现兼容性问题:

apt update && apt upgrade -y

如果过程中询问是否保留某个配置文件,输入 N 回车,保留现有配置即可。

apt 是什么?
apt 是 Ubuntu 的包管理器,相当于 iPhone 的 App Store。apt update 是刷新软件列表,apt upgrade 是把已装的软件更新到最新版本,-y 的意思是遇到所有询问自动选”是”。


05 · 安装 3x-ui 面板

什么是 x-ui

x-ui 是一个带有网页界面的 xray 管理工具。xray 是代理软件的核心引擎,配置文件比较复杂;x-ui 在它上面套了一个图形化界面,让我们不用手写 JSON 配置文件,在浏览器里点几下就能配好节点。

一键安装脚本

在 SSH 里执行:

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

安装过程中会提示设置:

  • 用户名:自定义,记下来
  • 密码:自定义,记下来
  • 面板端口:默认 54321,可以不改
  • 访问路径:会生成一个随机路径,记下来

安装完成后,面板地址格式为:https://你的IP:54321/随机路径

:white_check_mark: 验证安装成功
执行 x-ui status,看到 Active: active (running) 说明面板正在运行。


06 · 申请 SSL 证书

为什么需要 SSL 证书

x-ui 面板通过 HTTPS 访问,需要证书才能加密通信。Reality 协议也依赖 TLS。证书免费申请,会自动续期。

安装时自动引导申请

安装脚本完成后会自动进入 SSL 申请环节,看到以下提示时:

Choose an option (default 2 for IP):

直接回车选默认的 2(为IP地址申请证书),等待申请完成即可。有效期6天,自动续期,无需手动管理。


07 · 配置 VLESS+Reality 节点

Reality 的伪装原理

Reality 在握手时会真正去访问”伪装目标”网站(Target),把它的 TLS 握手行为原封不动地转发给客户端。这样 GFW 看到的流量特征和真正访问那个网站完全一样,极难识别。

关键:伪装目标的选择非常重要,选错了会导致客户端无法连接(见踩坑记录)。

添加入站(Inbound)

在 x-ui 面板 → 入站列表 → 添加入站,按下表填写:

配置项填写内容说明
协议vless下拉选择
端口443标准HTTPS端口,GFW极难封
传输TCP (RAW)下拉选择
安全Reality点击Reality按钮
uTLSchrome伪装成Chrome浏览器的TLS指纹
Targetwww.apple.com:443:warning: 建议不要随便改动,原因见踩坑记录
SNIwww.apple.com与Target域名一致
Flowxtls-rprx-visionReality专用传输模式,必须选

填完后点 生成证书(自动生成公钥私钥),再点 添加 保存。

记录关键参数

入站创建好后,点 分享 或 二维码 按钮,复制 VLESS 链接。链接格式如下:

vless://UUID@服务器IP:443?type=tcp&security=reality&pbk=公钥&fp=chrome&sni=www.apple.com&sid=ShortID&flow=xtls-rprx-vision

08 · 测试节点

下载并运行 v2rayN

  1. 下载:Releases · 2dust/v2rayN · GitHub 最新版 v2rayN-windows-64.zip
  2. 解压,以管理员身份运行 v2rayN.exe
  3. 右键托盘图标 → 从剪贴板导入分享链接
  4. 选中节点,右键 → 设为活动服务器
  5. 底部系统代理选 自动配置系统代理
  6. 路由选 V4-全局(Global)
  7. 开启底部 TUN模式(需要管理员权限才能开)

为什么要开 TUN 模式?
系统代理模式只能代理”听话”的软件(浏览器等)。TUN 模式在系统里创建一个虚拟网卡,强制接管所有流量,不会漏。v2rayN 必须以管理员身份运行才能开启 TUN。

验证是否成功

:cross_mark: 延迟显示 -1 怎么办?
-1ms 表示协议层握手失败,不是 TCP 连不上的问题。最常见原因是后量子加密兼容性问题(见踩坑记录),解决方案是把伪装目标改为 www.apple.com


09 · 转换为 Clash 配置(YAML)

为什么用 Clash

Clash(Mihomo 内核)比 v2rayN 功能更强,支持按规则分流——国内流量直连、国外流量走代理,灵活配置。推荐日常使用 Clash Verge。

下载 Clash Verge

原版 Clash 已停止维护,推荐使用社区续作 Clash Verge Rev

下载地址:Releases · clash-verge-rev/clash-verge-rev · GitHub

  • Windows → clash-verge_x.x.x_x64-setup.exe
  • Mac(M芯片)→ clash-verge_x.x.x_aarch64.dmg
  • Mac(Intel)→ clash-verge_x.x.x_x64.dmg

手写配置文件(最可靠)

转换工具经常出错,最稳妥的方式是直接写配置文件。在 Clash Verge 里新建配置,粘贴以下内容(替换尖括号内容):

proxies:
  - name: "节点名称"
    type: vless
    server: <服务器IP>
    port: 443
    uuid: <你的UUID>
    flow: xtls-rprx-vision
    tls: true
    udp: true
    network: tcp
    reality-opts:
      public-key: <公钥>
      short-id: <Short ID>
    servername: www.apple.com
    client-fingerprint: chrome

proxy-groups:
  - name: "节点选择"
    type: select
    proxies:
      - 节点名称
      - DIRECT

rules:
  - DOMAIN-SUFFIX,cn,DIRECT    # .cn 域名直连
  - GEOIP,CN,DIRECT             # 中国IP直连
  - MATCH,节点选择               # 其余走代理

每个字段的含义

字段含义
servernameSNI,告诉服务器你要访问哪个网站,必须与服务器配置一致
reality-opts.public-key服务器的公钥,用于验证服务器身份
short-id服务器的短ID,用于区分多个节点
client-fingerprintTLS指纹,伪装成的浏览器类型,要与服务器 uTLS 设置一致
flow: xtls-rprx-visionReality协议专用的传输优化模式,必须填
GEOIP,CN,DIRECT所有归属地为中国的IP直连,不走代理

或者如果懒得自己写可以用 https://acl4ssr-sub.github.io/ 进行自动转换,好处是白名单比较全,用起来可能更流畅,坏处就是文件比较臃肿,且可能有各种泄露风险。

10 · 多用户管理

给朋友添加独立账号

在 x-ui 面板 → 入站列表 → 编辑入站 → 展开客户端数量 → 添加客户端

字段说明示例
ID(UUID)自动生成,每人独立的”钥匙”自动生成即可
总流量流量上限,单位 GB20GB → 填 20 即可
到期时间账号过期时间可选填
评论备注,方便区分填朋友名字

添加后在分享页面会看到每个 UUID 对应的独立 VLESS 链接,把对应的发给对方即可。

为什么要用独立 UUID 而不是共用?
独立 UUID 的好处是可以单独限速、看各人流量消耗、随时踢人而不影响其他人。不想精细管理的话,直接共用同一个 UUID 也完全没问题。


!! · 关键踩坑记录

:warning: 这一节是本次真实部署中踩到的坑,全部搞清楚可以让你少走很多弯路。


坑 1:后量子加密兼容性问题(最大的坑)

现象:节点能 ping 通、TCP 能建立连接,但实际代理失败,v2rayN 延迟显示 -1ms,无法翻墙。

完整失败原理链:

1. Reality握手时,xray服务端真实访问伪装目标(如 onedrive.live.com)
2. 微软服务器支持新的后量子密钥交换算法:X25519MLKEM768
3. xray 26.x 版本看到对方支持,自动切换到这个新算法
4. v2rayN、Clash/Mihomo 客户端内核尚未实现这个算法
5. 服务端和客户端"说的不是同一种语言" → 握手失败 → 连接断开

为什么 ping 通但代理失败?
ping 用的是 ICMP 协议,TCP 握手只是建立连接,而 VLESS+Reality 的握手失败发生在 TCP 连接建立之后的协议层。所以表现为 TCP 延迟正常(6ms)但实际代理失败(-1ms)。这两个延迟是不同层面的,非常容易误判。

不同伪装目标的兼容性对比:

伪装目标是否支持后量子能否正常使用
onedrive.live.com✗ 支持(微软):cross_mark: 客户端握手失败
outlook.com✗ 支持(微软):cross_mark: 客户端握手失败
www.google.com✗ 支持(Google):cross_mark: 客户端握手失败
www.apple.com✓ 暂不支持:white_check_mark: 正常使用

解决方案:把伪装目标改为苹果官网。

x-ui 面板 → 入站列表 → 编辑入站 → 修改 Target 和 SNI:

  • Target:www.apple.com:443
  • SNI:www.apple.com

点更新保存,问题解决。本次部署最终使用 xray 26.2.6,未做任何版本降级,仅靠更换伪装目标解决问题。


坑 2:x-ui 有自己独立的 xray,不是系统的那个

x-ui 有自己内置的 xray 二进制文件:

/usr/local/x-ui/bin/xray-linux-amd64   ← x-ui 实际使用这个
/usr/local/bin/xray                      ← 系统安装的,x-ui 不用这个

如果要替换 x-ui 用的 xray 版本,必须覆盖前者,且要先停止服务再替换:

x-ui stop
cp /usr/local/bin/xray /usr/local/x-ui/bin/xray-linux-amd64
x-ui start

坑 3:普通 VPS 的 IP 可能被 GFW 针对 TCP 流量

ping 通了不代表 TCP 没被封。GFW 可以选择性地对某个 IP 的 TCP 流量进行封锁,而 ICMP(ping)放行。

验证方法:在服务器上用 tcpdump 抓包,同时在客户端发起连接,看包有没有到达:

# 在服务器上执行
tcpdump -i eth0 port 443 -c 20

如果客户端发起连接但服务器一个包都没收到,说明 TCP 流量在中国侧就被丢弃了,需要换 IP,而不是折腾配置。


常用命令速查

# SSH连接服务器
ssh root@服务器IP

# 启动/停止/重启 x-ui
x-ui start
x-ui stop
x-ui restart

# 查看 xray 是否在监听端口
ss -tlnp | grep xray

# 抓包验证流量是否到达服务器
tcpdump -i eth0 port 443 -c 20

# 查看 x-ui 用的 xray 版本
/usr/local/x-ui/bin/xray-linux-amd64 version

# 进入 x-ui 管理菜单
x-ui

推荐机场:https://cy.macfun.org/ 注册有免费赠送流量~

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容