白泽图

  • 文章
    • Unity渲染
    • Unity项目开发
    • 工具
    • 数学
    • 算法
    • 网站搭建
    • 网络&操作系统
蒋程个人博客
互联网技术经验总结&分享
  1. 首页
  2. 网络&操作系统
  3. 正文

手记 | 从 VMess+WS+TLS 到 VLESS+Reality 的代理升级记录

2026-07-18 62点热度 0人点赞 0条评论

之前一直用 VMess + WebSocket + TLS 的代理方案,用了很久,但速度始终不太理想。最近升级到 VLESS + Reality,提升非常明显,记录一下整个过程的思路和踩的坑。

原来的方案:VMess+WS+TLS

架构如下:

客户端 → TLS握手 → nginx(443) → WS转发 → v2ray(VMess解密) → 目标

这套方案有三个瓶颈:

1. 双层加密,CPU 开销大
TLS 负责传输层加密(伪装成 HTTPS 流量),VMess 再做一层应用层加密。实际上 TLS 本身已经足够安全了,VMess 的加密完全是多余的。每个数据包都要解两次,服务器 CPU 负担重,延迟也更高。

2. nginx 中转多一跳
v2ray 不能直接暴露在公网,前面挡了一层 nginx:nginx 终结 TLS 连接,把请求转成 WebSocket 再交给 v2ray。数据流多经过一层转发,每次请求都多一次延迟。

3. 无连接复用,重复握手开销大
浏览器打开一个页面可能同时发起几十个请求,每个请求都要重新走一遍完整流程:TCP 连接 → TLS 握手(2~3 个 RTT)→ WebSocket 升级 → VMess 认证。光握手就要好几秒,页面加载自然慢。

Reality 是什么

Reality 是 v2ray 5.x 引入的传输层协议,用来替代 TLS。它不做真正的证书加密,而是借用别人网站的 TLS 证书来伪装——你的连接在墙看来,是你在访问 www.microsoft.com 的标准 HTTPS 请求,完全认不出来是代理。

与 TLS 的关键区别:不需要购买域名证书、不需要配置 nginx、不需要续期证书。

新方案:VLESS+Reality

新架构:

客户端 → Reality → v2ray(8443) → 目标

相比旧方案的优势:

- 去掉 nginx,v2ray 直接监听 8443 端口,少一跳转发
- 去掉 TLS,不需要证书、不配 nginx、不用续期
- 单层加密,Reality 同时做传输安全和流量混淆,一次搞定
- 连接复用(mux),多个请求共享一条 TCP 连接,不再重复握手

实际体验:打开 GitHub 从原来的等半天变成了秒开。

部署过程踩的坑

坑 1:安全组没放行端口
Reality 配置在 8443 端口,但腾讯云安全组默认只开放了 80/443/8080。8443 在外面连不上。一开始各种怀疑配置写错了,最后发现是云平台层面拦了——在控制台加一条入站规则就好。检查端口是否开放可以用:

telnet 服务器IP 8443
# 或者在服务器上
ss -tlnp | grep 8443

坑 2:客户端 flow 参数不兼容
Clash 客户端(verge-mihomo)配置 Reality 节点时,加 flow: xtls-rprx-vision 会导致连接超时。去掉后正常。不同版本的 Clash 内核对 flow 参数的支持不一样,实测这个版本加了反而连不上。

坑 3:Clash Verge 配置导入方式
手动编辑 profiles 目录下的 .yml 文件不会自动更新到 GUI 列表里。正确的做法是把文件拖拽到 Clash Verge 窗口,或者通过 导入 功能从本地选择文件。

坑 4:mux 也不是都能开
配置里加了 mux: true 也会导致连不上,和当前 verge-mihomo 版本不兼容,去掉即可。

最终服务端配置

v2ray config.json 里同时保留两个 inbound:

// 旧:VMess+WS 走 nginx 转发(兼容旧客户端)
"inbounds": [
  {
    "port": 10000,
    "listen": "127.0.0.1",
    "protocol": "vmess",
    "settings": { ... },
    "streamSettings": {
      "network": "ws",
      "wsSettings": { "path": "/x7k2m9p4" }
    }
  },
  // 新:VLESS+Reality 直连
  {
    "port": 8443,
    "listen": "::",
    "protocol": "vless",
    "settings": { ... },
    "streamSettings": {
      "network": "tcp",
      "security": "reality",
      "realitySettings": {
        "dest": "www.microsoft.com:443",
        "serverNames": ["www.microsoft.com"],
        "privateKey": "qKyT4OFBhPqzGj163lCjrDf2o2p3dgKSMqq3WxvsSk8",
        "shortIds": ["6ba85179", "abcdef12"]
      }
    }
  }
]

客户端配置注意点:

# Clash 配置(verge-mihomo)
proxies:
  - name: "bzetu-reality"
    type: vless
    server: 43.135.136.107
    port: 8443
    uuid: ********-****-****-****-************
    network: tcp
    tls: true
    udp: true
    reality-opts:
      public-key: "SLq73OED7l9-nGPtt3pXMRVBqVTF30C5rBl3dfhjUFE"
      short-id: "6ba85179"
    # flow: xtls-rprx-vision   # ⚠️ 不要加,否则连不上
    # mux: true                # ⚠️ 也不要加

总结

从 VMess+WS+TLS 升级到 VLESS+Reality,去掉了 nginx 中转和 TLS 证书依赖,减少了加密层数,配合连接复用,代理速度提升非常明显。配置上也不算复杂,主要注意版本兼容性和防火墙放行就好。

标签: 暂无
最后更新:2026-07-18

蒋程

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

您需要 登录 之后才可以评论
目录Toggle Table of ContentToggle
  • 原来的方案:VMess+WS+TLS
  • Reality 是什么
  • 新方案:VLESS+Reality
  • 部署过程踩的坑
  • 最终服务端配置
  • 总结

COPYRIGHT © 2023 白泽图. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

登录
注册|忘记密码?