烹小鲜也
← 回到 Notes

在 AWS Ubuntu 上搭 VLESS-Reality(替代 Shadowsocks)

当 Shadowsocks 被精准识别后,换上 Xray 的 VLESS-XTLS-Reality——伪装成正常 HTTPS 流量,目前抗封锁的天花板。

上一篇记的是 Shadowsocks,跑了一段时间后开始频繁被墙。这篇换协议重搭,顺手把"为什么要换"也写清楚。

为什么从 Shadowsocks 换到 VLESS-Reality

Shadowsocks 本身没问题,问题在于它的流量特征已经被精准识别了——加密后的流量看起来是一团"无特征的随机字节",而正常的互联网流量并不长这样,主动探测加机器学习能把它挑出来。一旦被识别,轻则限速、重则直接封端口甚至封 IP。

Xray 的 VLESS-XTLS-Reality 走的是另一条路:它不追求"看起来像随机数据",而是直接伪装成访问某个真实大网站的 HTTPS 流量。审查系统看到的就是一次普普通通的 TLS 握手,连证书都是借用真实网站的,没有任何可供识别的把柄。

ShadowsocksVLESS-Reality
伪装思路加密成随机流量伪装成真实 HTTPS 网站
抗主动探测弱,特征已被识别强,借用真站 TLS 指纹
需要域名/证书不需要不需要(Reality 免域名)
端口任意非默认端口必须 443
配置复杂度略高(需生成密钥)

代价是配置稍微复杂一点(要生成一对密钥),但照着下面一步步做,大概 10 分钟能搞定。整个过程纯手动、不用第三方一键脚本,最干净。

第一步:安全组开放 443 端口

Reality 的核心是伪装成正常 HTTPS 网页流量,所以必须用 443 端口——这是全球 HTTPS 的标准端口,换成别的端口就失去伪装意义了。

到 AWS EC2 控制台找到实例对应的安全组,编辑入站规则(Inbound rules),加一条:

  • 类型:自定义 TCPHTTPS
  • 端口:443
  • 来源:0.0.0.0/0

第二步:装 Xray 官方内核

SSH 进 Ubuntu 服务器,执行 Xray 官方安装命令(比第三方一键脚本更安全、纯净):

# 切换到 root
sudo -i

# 官方安装脚本
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

如果提示 curl: command not found,先 apt update && apt install curl -y

第三步:生成密码和"伪装密钥"

Reality 用非对称加密,需要生成三个字符串,先复制保存到记事本,下一步马上用

1. 生成 UUID(相当于密码):

xray uuid

会得到类似 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的一串,复制保存。

2. 生成 Reality 密钥对(公钥 + 私钥):

xray x25519

输出两行:Private key(私钥,放服务器端)和 Public key(公钥,放手机客户端),都保存好。

第四步:配置 Xray 服务端

把刚生成的参数填进配置文件。伪装目标网站这里用苹果的 iTunes 域名(itunes.apple.com)——全球不被封、特征极正常。

nano /usr/local/etc/xray/config.json

清空后粘贴以下内容。⚠️ 务必把 你的UUID你的私钥 换成上一步生成的真实值:

{
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "在这里填你的UUID",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "dest": "itunes.apple.com:443",
          "serverNames": [
            "itunes.apple.com"
          ],
          "privateKey": "在这里填你的私钥(Private key)",
          "shortIds": [
            ""
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "blocked"
    }
  ]
}

Ctrl+O 保存、Enter 确认、Ctrl+X 退出。

第五步:启动 + 检查

# 重启 Xray
systemctl restart xray

# 看运行状态
systemctl status xray

看到绿色 active (running) 就成功了。这时如果有人在浏览器里访问 https://你的AWS_IP,只会看到报错或被引流到苹果官网,完全看不出这是个代理服务器。

第六步:Shadowrocket 客户端配置

Reality 配置项比 Shadowsocks 多,严格对照填:

字段
类型VLESS
地址AWS 公网 IP
端口443
UUID第三步生成的 UUID
流控 (Flow)xtls-rprx-vision(很重要,提速 + 防探测)

下滑到 TLS 选项卡:

  • 开启 TLS
  • 允许不安全 (Allow Insecure): 关闭
  • ALPN: h2,http/1.1
  • SNI / 伪装域名: itunes.apple.com

继续下滑到 REALITY 选项卡:

  • 开启 REALITY
  • 公钥 (Public Key): 第三步生成的 Public key
  • Short ID: 留空
  • Spider X: 留空

右上角点完成,回首页打开顶部连接开关即可。之前开的 BBR 提速依然有效,不用重设。

笔记里的 UUID、密钥、IP 全是占位符。真实的密码和私钥自己保存在本地,永远不要 commit 到任何公开仓库