完整部署教程 · Server + Client

自建跳板机 · 科学上网
从零部署全教程

使用 VLESS + Reality + XTLS-Vision 协议,在自己的 VPS 上搭建代理服务,国内直连,国外走日本出口,流量完全伪装。

VLESS Reality XTLS-Vision Xray-core Clash Verge Rev
✦ 流量伪装复用真实域名 TLS 握手
✦ 强加密TLS 1.3 全程加密
✦ 完整流量XTLS-Vision 内层透传
✦ 指纹伪装模拟 Chrome TLS 指纹

📋 目录

00

原理与架构

搞清楚这套方案是怎么工作的

流量走向

  你的电脑(Windows)
       │
       ├─── 访问 百度 / 淘宝 / 微信 ────────────────→  直接连接(不走代理)
       │
       └─── 访问 Google / YouTube / Twitter ──→  日本 VPS  ──→  目标网站
                   ↑                                ↑
            Clash Verge Rev               Xray-core 服务端
            (客户端,做分流)            (代理出口,做转发)
    

为什么选 VLESS + Reality?

要求传统方案(VMess/SS)本方案(VLESS + Reality)
流量伪装特征明显,容易被识别复用真实域名的 TLS 证书,外部看起来是正常 HTTPS 访问
加密强度自定义加密,强度参差不齐TLS 1.3,业界最高标准
完整流量二次加密导致特征叠加XTLS-Vision 内层 TLS 透传,无二次损耗
指纹伪装uTLS 模拟真实浏览器(Chrome/Firefox)的 TLS ClientHello

Reality 伪装原理

  普通审查设备看到的流量:
  ┌────────────────────────────────────────────────────────┐
  │  Client Hello  →  SNI: blog.pophcc.com                 │
  │  Server Hello  →  使用 blog.pophcc.com 的真实 TLS 证书 │
  │  → 判断:正常的 HTTPS 访问,放行                        │
  └────────────────────────────────────────────────────────┘

  实际发生的事:
  ┌────────────────────────────────────────────────────────┐
  │  客户端在 TLS 握手中携带了 shortId(隐藏标识符)         │
  │  服务端验证通过 → 建立 VLESS 代理隧道                   │
  │  没有 shortId 的普通访问 → 正常回落到真实网站            │
  └────────────────────────────────────────────────────────┘
    

01

准备工作

开始之前需要准备好这些东西

服务端(VPS)要求

项目要求备注
位置境外 VPS(日本、香港、新加坡等)国内 VPS 无效
系统Ubuntu 20.04 / 22.04 / 24.04Debian 也可以
配置最低 1核 512MB 内存Xray 占用极少
权限root 或 sudo 权限需要安装软件
开放端口至少能开放一个自定义 TCP 端口本教程用 8443

伪装域名要求

Reality 需要借用一个真实域名的 TLS 证书做伪装。要求:

ℹ️ 最简单的方法:如果你的 VPS 上已经跑了一个 HTTPS 网站,直接用自己的域名,不需要借用别人的。这样安全性更高,本教程也是这么做的。

⚠️ 如果没有自己的域名,可以借用境外知名网站,例如 www.lovelive-anime.jp(日本动画官网,TLS 1.3 + H2)。但不建议用国内域名。

客户端(Windows 电脑)要求

项目要求
系统Windows 10 或 Windows 11(64位)
网络能正常上国内网即可

02

服务端 · 安装 Xray

SSH 连接到你的 VPS,执行以下命令

ℹ️ 以下命令全部在 VPS 的 SSH 终端中执行,不是在 Windows 电脑上。

一键安装 Xray

Xray 官方提供了一键安装脚本,会自动安装最新版并注册为系统服务:

BASH · 在 VPS 上执行
# 下载并执行官方安装脚本
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

安装过程大约 1 分钟,看到以下输出表示成功:

输出(成功示例)
info: Xray v26.x.x is installed.
info: Enable and start the Xray service

验证安装

BASH
# 查看版本
xray --version

# 查看服务状态(应显示 active (running))
systemctl status xray

安装后 Xray 的相关路径:

路径说明
/usr/local/bin/xray可执行文件
/usr/local/etc/xray/config.json主配置文件(我们主要编辑这个)
/var/log/xray/日志目录

03

服务端 · 生成密钥

生成 Reality 所需的密钥对和用户 ID

Reality 协议需要三个关键参数,全部通过 Xray 命令生成,不要自己随便填写

第一步:生成 Reality 密钥对

BASH
xray x25519

输出示例(你的结果会不同,请保存好,后面要用):

输出
PrivateKey: wI8PaoQfFMzFMqQangwiykCNfwv-UpM7ZfBn1KSnN1o   ← 服务端用,私钥,不要泄露
Password (PublicKey): WpLWSo__hEm_zfo6U0OMC3wewmL40v_6FBM8Tz3hTRc  ← 客户端用,公钥,可以公开

第二步:生成用户 UUID

BASH
xray uuid

输出示例:

输出
b67b4f5d-8e5c-4c6f-997b-b2377909dac1   ← 用户 ID,服务端和客户端都要填

第三步:生成 shortId

BASH
openssl rand -hex 8

输出示例:

输出
7594d8ff205b2bdb   ← shortId,16位十六进制,服务端和客户端都要填

⚠️ 把上面三步的结果都记下来,接下来写配置文件时会用到。不同机器生成的值不同,请用自己生成的,不要复制本教程中的示例值。

参数汇总表(填入你自己生成的值)

参数名示例值用途
PrivateKeywI8PaoQ...服务端配置专用,绝对保密
PublicKeyWpLWSo...客户端配置填写
UUIDb67b4f5d-...服务端和客户端都要填,必须一致
shortId7594d8ff205b2bdb服务端和客户端都要填,必须一致

04

服务端 · 写配置文件

编辑 /usr/local/etc/xray/config.json

打开配置文件

BASH
# 用 nano 编辑器打开(方向键移动,Ctrl+O 保存,Ctrl+X 退出)
nano /usr/local/etc/xray/config.json

# 或者用 vim
vim /usr/local/etc/xray/config.json

配置文件内容

删除原有内容,粘贴以下配置,然后将 紫色标注 的部分替换为你自己生成的值:

JSON · /usr/local/etc/xray/config.json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 8443,                    // ← 监听端口,可改为其他端口(1024-65535)
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "YOUR-UUID-HERE",          // ← 替换为你的 UUID
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "你的伪装域名:443",       // ← 替换为你的伪装域名,如 blog.example.com:443
          "xver": 0,
          "serverNames": [
            "你的伪装域名"              // ← 替换为你的伪装域名,如 blog.example.com
          ],
          "privateKey": "YOUR-PRIVATE-KEY",  // ← 替换为 xray x25519 生成的 PrivateKey
          "shortIds": [
            "YOUR-SHORT-ID",           // ← 替换为 openssl rand -hex 8 生成的值
            ""
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls", "quic"]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ]
}

⚠️ JSON 格式要求严格,注意:
· 不能有多余的逗号(最后一项后面不加逗号)
· 所有引号必须是英文双引号 ",不能是中文引号
· 上面配置中的 // 注释 是说明文字,实际写配置时请删掉注释行

保存后验证配置格式

BASH
# 测试配置文件语法是否正确
xray run -test -config /usr/local/etc/xray/config.json

# 看到 "Configuration OK." 表示格式正确

重启 Xray 使配置生效

BASH
systemctl restart xray

# 确认运行状态(应显示 active (running))
systemctl status xray

# 确认端口已在监听
ss -tlnp | grep 8443

看到以下输出表示 Xray 已正常监听 8443 端口:

输出
LISTEN  0  4096  *:8443  *:*  users:(("xray",...))  ← 看到这行就对了

05

服务端 · 开放防火墙端口

让客户端能连接到 8443 端口

如果使用 UFW(Ubuntu 默认)

BASH
# 放行 8443 端口(如果你改了端口,替换 8443 为你的端口)
ufw allow 8443/tcp

# 确认放行
ufw status | grep 8443

如果使用 iptables

BASH
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables-save > /etc/iptables/rules.v4

ℹ️ 部分 VPS 厂商(如腾讯云、阿里云)还需要在控制面板的安全组里额外放行端口,SSH 进去改防火墙还不够。具体操作在各厂商控制面板的"安全组"或"防火墙"选项里。

测试端口是否可达

在你的 Windows 电脑上,打开 PowerShell,执行:

PowerShell · Windows 本地执行
# 替换 your.vps.ip 为你 VPS 的实际 IP
Test-NetConnection -ComputerName your.vps.ip -Port 8443

看到 TcpTestSucceeded : True = 端口可达 ✅


06

客户端 · 安装 Clash Verge Rev

Windows 电脑上的操作

ℹ️ 必须使用 Clash Verge Rev(内核为 Mihomo),普通 Clash for Windows 不支持 Reality 协议。

下载安装包

前往官方 GitHub 下载,或点击以下链接:

👉 https://github.com/clash-verge-rev/clash-verge-rev/releases/latest

在 Assets 列表中下载 Clash.Verge_x.x.x_x64-setup.exe(64位 Windows)

安装步骤

  1. 双击 .exe 安装包
  2. 弹出"用户账户控制"→ 点击
  3. 点击 Install,等待进度条完成
  4. 点击 Finish,程序自动启动
  5. 任务栏右下角出现 🐱 猫咪图标 = 安装成功

07

客户端 · 写配置文件

创建 Clash 配置文件并导入

配置文件内容

新建一个文本文件,命名为 config.yaml,内容如下,将 紫色标注 部分替换为你自己的值:

YAML · config.yaml(客户端配置文件)
mixed-port: 7890
allow-lan: false
mode: rule
log-level: warning
ipv6: false

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://dns.alidns.com/dns-query    # 国内 DNS,解析国内域名
    - https://doh.pub/dns-query
  fallback:
    - https://1.1.1.1/dns-query           # 境外 DNS,解析国外域名
    - https://8.8.8.8/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

proxies:
  - name: Japan-VPS                        # 节点名称,可以改
    type: vless
    server: YOUR.VPS.IP.ADDRESS           # ← 替换为你 VPS 的 IP 地址
    port: 8443                             # ← 和服务端 port 一致
    uuid: YOUR-UUID-HERE                  # ← 替换为你生成的 UUID
    flow: xtls-rprx-vision
    tls: true
    udp: true
    network: tcp
    reality-opts:
      public-key: YOUR-PUBLIC-KEY         # ← 替换为 xray x25519 生成的 PublicKey
      short-id: YOUR-SHORT-ID            # ← 替换为 openssl rand -hex 8 生成的值
    servername: 你的伪装域名               # ← 替换为伪装域名,如 blog.example.com
    client-fingerprint: chrome           # 指纹伪装为 Chrome,也可填 firefox / safari

proxy-groups:
  - name: Proxy
    type: select
    proxies:
      - Japan-VPS
      - DIRECT

rules:
  - GEOSITE,private,DIRECT              # 局域网直连
  - GEOIP,private,DIRECT,no-resolve
  - GEOSITE,cn,DIRECT                  # 国内域名直连
  - GEOIP,cn,DIRECT,no-resolve         # 国内 IP 直连
  - MATCH,Proxy                         # 其余全部走代理

导入配置文件

  1. 打开 Clash Verge Rev 主界面
  2. 点击左侧 "配置"
  3. 点击右上角 "导入"
  4. 选择 "本地文件",找到刚才保存的 config.yaml
  5. 点击导入后的条目右侧 "启用"

开启系统代理

  1. 点击左侧 "设置"
  2. 找到 "系统代理",打开开关(变蓝)
  3. 代理模式保持 "规则"

08

验证与测试

确认代理正常工作

测试节点延迟

在 Clash Verge Rev 的 "代理" 页面,点击 Japan-VPS 旁边的 ⚡ 图标测速。显示毫秒数 = 正常,显示超时 = 检查配置。

测试代理 IP

打开浏览器,访问 https://ip.sb,应显示你 VPS 的日本 IP。

测试国内直连

访问 https://www.baidu.com,速度和平时一样 = 国内流量正常直连。

服务端验证命令

BASH · 在 VPS 上执行
# 查看 Xray 实时日志(有连接时会有输出)
journalctl -u xray -f

# 查看当前连接数
ss -tnp | grep xray | wc -l

09

常见问题

遇到问题先看这里

配置语法检查失败(Configuration FAILED)

检查 config.json 中是否有:多余的逗号、中文引号、漏掉的引号或括号。建议把内容粘贴到 jsonlint.com 在线验证。

Xray 启动失败

BASH
# 查看详细错误信息
journalctl -u xray -n 50 --no-pager

客户端节点显示"超时"

按顺序排查:

  1. VPS 防火墙是否放行了 8443 端口(ufw status
  2. VPS 厂商控制台安全组是否放行了 8443 端口
  3. Xray 是否正在运行(systemctl status xray
  4. 配置文件中的 UUID、PublicKey、shortId 是否和服务端完全一致
  5. 伪装域名填写是否正确(不加 https://,不加端口号)

游戏 / Steam 不走代理

在 Clash Verge Rev 设置中开启 TUN 模式,可以接管系统全部流量,包括不支持系统代理的程序。

如何升级 Xray 到最新版

BASH
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
systemctl restart xray

如何添加更多用户

在 config.json 的 clients 数组中添加新条目:

JSON · 在 clients 数组中追加
"clients": [
  {
    "id": "第一个用户的UUID",
    "flow": "xtls-rprx-vision"
  },
  {
    "id": "第二个用户的UUID",  // xray uuid 再生成一个
    "flow": "xtls-rprx-vision"
  }
]

✅ 部署完成后的参数清单(按需填入)

VPS IP your.vps.ip 监听端口 8443(可自定义) 协议 VLESS + Reality + XTLS-Vision UUID 由 xray uuid 生成 PrivateKey 由 xray x25519 生成(服务端专用) PublicKey 由 xray x25519 生成(客户端填写) shortId 由 openssl rand -hex 8 生成 伪装域名 你的 HTTPS 域名(或借用境外站点) TLS 指纹 chrome(也可填 firefox / safari)