深度包检测(DPI)让网络可以越过地址和端口,判断你流量的形态。传统 VPN 协议有可识别的握手特征,因此审查者无需解密任何字节就能封锁它们。在你自己的 VPS 上建立私有端点,可避开共享黑名单;使用模仿普通 HTTPS 的协议,则可避开指纹识别。本指南设置的就是这样一种协议:Xray 上的 VLESS 与 REALITY。
DPI 如何识别 VPN
审查者依靠三种信号:固定的握手模式(OpenVPN 和 WireGuard 都有)、商业 VPN 服务商的已知 IP 段,以及主动探测,即审查者连接你的服务器并检查它如何响应。一个协议必须同时扛住这三种手段才能持久。
- 握手模式:通过将流量包装在真实的 TLS 会话中来避免。
- 共享 IP 段:通过使用仅你自己使用的服务器来避免。
- 主动探测:通过让服务器对没有密钥的任何人表现得像真实网站来避免。
为什么选 REALITY
REALITY 借用真实热门网站的 TLS 握手。不知道你密钥的探测请求会被直接转发到那个网站,看到的是正常的证书和页面。知道密钥的客户端则获得代理服务。你没有自己的证书可被标记,也无需注册域名。
步骤 1:准备服务器
使用位于到你的用户路由良好的地点的全新 Ubuntu VPS,并先应用基础加固。然后用官方脚本安装 Xray。
sudo apt update && sudo apt -y upgrade
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
xray x25519
最后一条命令会输出一个私钥和一个公钥。私钥留在服务器上,公钥交给客户端。用 xray uuid 生成用户 ID。
步骤 2:编写 Xray 配置
选择一个支持 TLS 1.3 和 HTTP/2、且你的服务器可以访问的伪装网站。把它的主机名同时填入 dest 和 serverNames。
{
"inbounds": [{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{ "id": "YOUR-UUID", "flow": "xtls-rprx-vision" }],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "example.org:443",
"serverNames": ["example.org"],
"privateKey": "YOUR-PRIVATE-KEY",
"shortIds": ["a1b2c3d4"]
}
}
}],
"outbounds": [{ "protocol": "freedom" }]
}
将其保存为 /usr/local/etc/xray/config.json,然后运行 sudo systemctl restart xray 并检查 systemctl status xray。
步骤 3:开放防火墙并连接
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable
在客户端上,导入服务器地址、端口 443、UUID、公钥、short ID 和相同的服务器名称。v2rayN、Nekoray、Streisand 和 Hiddify 等客户端支持 REALITY。将 flow 设置为 xtls-rprx-vision 以与服务器一致。
保持其正常工作
- 每个小型用户群使用一台 VPS。繁忙的端点更容易被分析画像。
- 如果伪装网站无法从服务器访问,连接就会失败。选一个稳定的网站,必要时更换。
- 保持 Xray 更新;协议修复经常发布。
- 不要在同一 IP 的 443 端口上运行其他任何东西。
没有任何工具能保证在所有审查下都能访问。请从你实际使用的网络进行测试,并保留第二种协议作为后备。想要更简单的日常 VPN,请参阅你的 VPS 上的 WireGuard;两种经典方案的选择请阅读 WireGuard 还是 OpenVPN。