Xray Reality 自建教程

Vless + Reality 协议 + Vision 流控

在常规的 TLS in TLS 代理中, 数据虽然被多层加密, 但每一层都会引入额外的包头。这种 “套娃加密” 带来的数据增量虽小, 却可能形成某些统计特征, 从而被防火墙识别。

为了解决这一问题, XTLS 曾尝试通过减少额外加密来改善特征。而在 Xray 1.8.0 中推出的 Vision 流控, 则让绝大多数数据包保持原始特征, 几乎无可区分, 从而显著提升了隐蔽性。

然而, 仅靠 TLS 并不能彻底避免端口封禁与指纹识别。为解决这一问题, Xray 在 2023 年 3 月推出了 REALITY 协议, 用来取代传统 TLS 服务。REALITY 能够有效消除服务端的 TLS 指纹, 保持前向保密性, 并且无需域名、证书或 443 端口, 即可伪装成任意目标网站。相比传统 TLS, REALITY 在安全性、便捷性和抗封锁能力上都更进一步。

如果想了解更多详细信息, 请点击 Vision 查看

各协议 2023 年现状

内容来源 各协议 2023 现状

协议 封禁情况 特点与备注
Shadowsocks (SS) 全随机数类流量几乎秒封 IP IPv6 封锁情况不稳定, 有一定几率可用
Trojan / WSS 一般隔天封端口;通过 Cloudflare 等 CDN 转发不封但干扰严重, 稳定性因地区而异 Trojan 和 WSS (WebSocket over TLS) 是常见的流量伪装技术, 但容易被检测到端口。使用 Cloudflare 可以隐藏真实 IP, 但可能面临运营商的干扰, 影响连接稳定性
TLS in TLS 单连接握手特征容易进黑名单 这种 “套娃加密” 在建立连接时, 其 TLS 握手特征容易被网络检测设备识别并加入黑名单。可以通过使用 Vision 实现 强制 padding 或 开启 mux 来缓解, 但需注意避免客户端配置错误导致 “猪队友” (即错误配置的客户端) 暴露特征
REALITY 即使有 TLS 握手特征, 如果 “偷白名单域名”, 通常不会被封 REALITY 协议通过伪装成访问白名单网站的流量, 来规避检测。但部分 IP 段 (如甲骨文云) 由于本身 IP 信誉较低, 即使采用此方法, 也可能连接不稳定或失败
Hysteria / TUIC 封禁与否因配置、地区不同;可能遭遇 QoS 限速 这些新协议的封禁情况 因人而异, 很大程度上取决于具体的配置和用户所在的网络环境。用户可能会遇到运营商的 QoS (Quality of Service) 限速, 导致使用体验差异较大, 稳定性不够

准备工作

搭建最新的 VLESS Reality, 防止 VPS 端口被封, 需要准备以下条件

  1. 一台可用的 VPS
  2. 一个符合条件的目标网站 (用来伪装)
  3. 在服务器上正确配置 Xray

获取 Reality 目标网站的方法

Reality 不需要你自己购买域名和证书, 因为它可以偷别人的域名。但并非所有域名都能用, 目标网站的选择会直接影响速度、连通性和稳定性。

目标网站的标准

目标网站最低标准是支持 TLSv1.3H2 的国外网站, 域名非跳转使用 (有的主域名可能被用于跳转到 www)

目标网站必须满足的条件:

  1. 支持 TLS 1.3 协议
  2. 使用 X25519 签名算法
  3. 支持 HTTP/2 (H2) 协议
  4. 不使用 CDN
    • 如果 Reality 目标网站使用 CDN, 数据将转发到 CDN 节点, 使你的 Reality 节点成为别人的反向代理加速节点
  5. 国外网站, 在中国境内不依赖任何代理可以可直连访问

加分项:

  1. IP 相近: 延迟更低, 流量特征更自然
  2. 支持 OCSP Stapling
  3. 合理的服务端配置
    • 禁止回国流量
    • TCP/80 与 UDP/443 也进行转发 (Reality 对外表现为端口转发)
    • 目标 IP 选用较冷门的更佳

⚠️ 注意: 大家代理出现问题, 第一个需要检查的是目标网站是否存在问题

方式 推荐等级 特点 风险 适用场景
偷自己的域名 ⭐⭐⭐⭐⭐ 自己控制域名和服务器, TLS 指纹完全可控, 最稳定 几乎无风险 有自己域名和网站时首选
偷邻居的域名 ⭐⭐⭐⭐ 同 ASN 下的域名, 速度和延迟几乎不受影响 有一定被识别风险 无自己域名时的次优选择
偷服务器所在地的大学/图书馆/旅游局等域名 ⭐⭐⭐ 本地公共机构域名, 可信度高 若网站被重点检测风险较大 特殊地区/无邻居可用时
偷测试站点测试出来的域名 ⭐⭐ 随机找到的 HTTPS 站点, 可临时使用 不稳定, 易失效 临时调试、过渡使用
偷大厂域名 各类互联网大厂 (如 Google、AWS、微软) 高风险, 极易被识别和封锁 不推荐

偷自己的域名

如果你拥有自己的域名, 可以在服务器上部署一个 HTTPS 网站, 并将域名解析到这台服务器。这种方式是最佳选择, 速度、稳定性和可控性都最高。

例如: 你的服务器在美国, 部署了你自己的网站 https://aaa.example.com, 那么直接使用 aaa.example.com 作为 Reality 的目标域名, 就是最佳选择。

偷邻居的域名

这种方法主要是利用 FOFAShodan 搜索, 找到与你的服务器处于同一 ASN 的网站, 几乎不影响速度。由于 ASN 相同, 延迟和速度几乎不受影响。

操作步骤

  1. 使用 ASN 查询工具, 输入你的服务器 IP, 获取对应的 ASN

  2. 在 FOFA 输入以下搜索语句, 将 ASN 替换为查询到的值

    搜索 ASN 为 16509、位于美国、端口为 443、证书不是 Let’s Encrypt 或 ZeroSSL 颁发的、且请求成功 (状态码 200) 的网站

    注: country 字段为国家/地区的两位代码, 可在 ISO 3166-1 列表查找

    asn=="16509" && country=="US" && port=="443" && cert!="Let's Encrypt" && cert.issuer!="ZeroSSL" && status_code="200"
    
  3. 在搜索结果中, 找到有域名的网站, 并按照上面的 5 个条件逐一核对, 全都符合即可将此网站域名记录下来, 以供后续使用。

偷服务器所在地大学、图书馆、旅游局的域名

假设你的 VPS 在美国, 可以按照以下思路去找

  1. 搜索美国比较有名的大学官网, 检查是否符合上述 5 个条件
  2. 搜索美国的图书馆官网
  3. 搜索美国的旅游局官网

这些网站通常稳定且长期可用

偷测试过的域名

可以利用第三方 SSL 测试平台的公开榜单来寻找域名。这种方法操作最简单, 但缺点是无法控制服务器位置, 速度和延迟大概率不理想。

在这些平台找到 A+ 评级 的网站, 然后按照前面提到的 5 个条件逐一核对, 全部符合即可将该域名记录下来备用。

偷大厂的网站

有时可以使用苹果、微软等大厂的域名, 但并不适合所有人, 具体效果要看 IP 和地区。

⚠️ 注意: 根据长期反馈, REALITY 出现问题往往有两个原因

  1. IP 太黑 (例如甲骨文的 IP 段)
  2. 目标域名选择不当 (如微软、苹果等大厂域名并不适合所有情况)
# Apple
gateway.icloud.com
itunes.apple.com
swdist.apple.com
swcdn.apple.com
updates.cdn-apple.com
mensura.cdn-apple.com
osxapps.itunes.apple.com
aod.itunes.apple.com
www.icloud.com

# Mozilla
download-installer.cdn.mozilla.net
addons.mozilla.org

# CDN / 云服务商
s0.awsstatic.com
d1.awsstatic.com
cdn-dynmedia-1.microsoft.com

# Amazon
images-na.ssl-images-amazon.com
m.media-amazon.com

# Google
dl.google.com
www.google-analytics.com

# Airbnb
www.airbnb.co.uk
www.airbnb.ca
www.airbnb.com.sg
www.airbnb.com.au
www.airbnb.co.in

# 游戏 / 动漫
player.live-video.net           # Amazon 直播
one-piece.com                   # 海贼王官网
lol.secure.dyn.riotcdn.net      # 英雄联盟
www.lovelive-anime.jp           # LoveLive 动漫

# 大厂 / 科技公司
www.microsoft.com
software.download.prss.microsoft.com
www.tesla.com
www.swift.com
www.nvidia.com
academy.nvidia.com
www.cisco.com
www.samsung.com
www.amd.com
www.sap.com

# 其他
wareval.com

如何检查目标网站

在选择目标域名时, 需要确保其满足 5 个标准。那我怎么检查一个网站域名是否符合这 5 个标准呢?

检查 TLS 1.3 支持

  1. 打开目标网站, 按 F12 打开开发者工具
  2. 切换到 隐私与安全 选项卡
  3. 在「网络连接」信息中, 应显示 TLS 1.3X25519 和 AES_xxx_xxx, 如下图所示

检查 TLS 1.3

检查 HTTP/2 支持

在开发者工具的控制台输入下面内容, 返回值应为 h2

window.chrome.loadTimes()?.npnNegotiatedProtocol

检查 HTTP/2

检查 OCSP Stapling 支持

你可以通过这个网站进行检测: ocsp stapling检测

输入目标网站后, 即可查看其是否支持 OCSP Stapling

检查 OCSP Stapling

💡 这只是一个加分项, 即使不支持, 对 Reality 的使用影响也不大。

检查是否使用 Cloudflare CDN

判断网站是否使用了 Cloudflare CDN, 只需在域名末尾添加 /cdn-cgi/trace 进行访问

例如, 你要检查的域名是 https://codepen.io, 那么可以访问

https://codepen.io/cdn-cgi/trace

如果页面显示 Cloudflare 相关的信息, 就说明该站点正在使用 Cloudflare CDN, 因此不能作为 Reality 的目标域名。

检查 Cloudflare CDN

检查中国境内连通性

  1. 打开 ITDOG 在线 TCP Ping

  2. 输入目标域名并指定端口 443, 然后点击「持续测试」

    TCP Ping 测试

  3. 等待测试结果, 不必等满 100 个包, 大致观察即可

    • 绿色: 网络质量非常好
    • 绿色 / 黄色: 网络质量良好
    • 只有红色: 100% 丢包, 代表这个省份无法访问这个网站 (被墙)
  4. 测试结果中, 只要中国境内没有任何省份出现 100% 丢包、网络质量全是红色情况, 就可以用

    TCP 超时

    TCP 偶尔丢包

💡 建议: 最佳情况是中国所有省份都可连通。但如果某些省份无法访问 (例如上海可访问而江苏不可访问), 而你确定不会在这些地区使用该节点, 那也没问题可以接受。

使用工具批量检测

手动逐个网站检查是否符合条件既繁琐又耗时。为了快速筛选, 可以借助小工具进行批量检测。

例如, 使用 tls-checker, 运行后会自动检查目标站点是否满足 Reality 的各项要求, 并给出结果

./tls-checker www.nvidia.cn:443

符合要求

不满足条件

在服务器上搭建节点

开启 BBR 加速

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

服务端配置

{
  "inbounds": [ // 服务端入站配置
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "", // 必填, 执行 ./xray uuid 生成, 或 1-30 字节的字符串
            "flow": "xtls-rprx-vision" // 选填, 若有, 客户端必须启用 XTLS
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "show": false, // 选填, 若为 true, 输出调试信息
          "target": "example.com:443", // 必填, 格式同 VLESS fallbacks 的 dest
          "xver": 0, // 选填, 格式同 VLESS fallbacks 的 xver
          "serverNames": [ // 必填, 客户端可用的 serverName 列表, 暂不支持 * 通配符
            "example.com",
            "www.example.com"
          ],
          "privateKey": "", // 必填, 执行 ./xray x25519 生成
          "minClientVer": "", // 选填, 客户端 Xray 最低版本, 格式为 x.y.z
          "maxClientVer": "", // 选填, 客户端 Xray 最高版本, 格式为 x.y.z
          "maxTimeDiff": 0, // 选填, 允许的最大时间差, 单位为毫秒
          "shortIds": [ // 必填, 客户端可用的 shortId 列表, 可用于区分不同的客户端
            "", // 若有此项, 客户端 shortId 可为空
            "0123456789abcdef" // 0 到 f, 长度为 2 的倍数, 长度上限为 16
          ],
          "mldsa65Seed": "", // 选填, 执行 ./xray mldsa65 生成, 对证书进行抗量子的额外签名
          // 下列两个 limit 为选填, 可对未通过验证的回落连接限速, bytesPerSec 默认为 0 即不启用
          // 回落限速是一种特征, 不建议启用, 如果您是面板/一键脚本开发者, 务必让这些参数随机化
          "limitFallbackUpload": {
            "afterBytes": 0, // 传输指定字节后开始限速
            "bytesPerSec": 0, // 基准速率 (字节/秒)
            "burstBytesPerSec": 0 // 突发速率 (字节/秒), 大于 bytesPerSec 时生效
          },
          "limitFallbackDownload": {
            "afterBytes": 0, // 传输指定字节后开始限速
            "bytesPerSec": 0, // 基准速率 (字节/秒)
            "burstBytesPerSec": 0 // 突发速率 (字节/秒), 大于 bytesPerSec 时生效
          }
        }
      }
    }
  ]
}

客户端配置

{
  "outbounds": [ // 客户端出站配置
    {
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "", // 服务端的域名或 IP
            "port": 443,
            "users": [
              {
                "id": "", // 与服务端一致
                "flow": "xtls-rprx-vision", // 与服务端一致
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "show": false, // 选填, 若为 true, 输出调试信息
          "fingerprint": "chrome", // 选填, 使用 uTLS 库模拟客户端 TLS 指纹, 默认 chrome
          "serverName": "", // 服务端 serverNames 之一
          "password": "", // 服务端私钥生成的公钥, 对客户端来说就是密码
          "shortId": "", // 服务端 shortIds 之一
          "mldsa65Verify": "", // 选填, 服务端 mldsa65Seed 生成的公钥, 对证书进行抗量子的额外验证
          "spiderX": "" // 爬虫初始路径与参数, 建议每个客户端不同
        }
      }
    }
  ]
}

注意事项

内容来源

如果你特别不想被封, 建议优先选择一个干净的 IP, 并且正确配置和使用 XTLS Vision

不过, 即使这样做, 也无法保证 100% 不会被封。从去年底开始, 很多人的未知流量会导致 IP 秒封, 而 TLS in TLS 流量则常常在隔天被封端口。相比之下, XTLS Vision 并非未知流量, 并且完整处理了 TLS in TLS 的特征, 目前效果显著。但这并不代表它能确保绝对安全。认识到这一点非常重要, 不要因为偶然被封就大惊小怪。

因为除了协议本身, 还有很多角度能封你。以 IP 为例, 你无法保证 IP 真的干净, 无法避免被邻居波及, 无法避免整个 IP 段可能被重点标记。某些地区的 GFW 判定标准不同, 比如某个 IP 只有少量用户访问, 却承载了大量流量, 也可能触发封禁。

因此, 如果你的 XTLS Vision 节点被封, 而没有出现类似去年底那样的大规模被封报告, 建议依次尝试换端口、换 IP、换服务商。


原文

搭建最新的VLESS Vision和VLESS Reality防止VPS端口封禁
无敌的 Xray – Reality 协议!Vless + Reality协议 + Vision流控,是否能够摆平一切顾虑!
Reality自建教程
XTLS/REALITY: THE NEXT FUTURE

最后更新于 2025-09-08