高隐蔽代理方案,无需域名和证书,TLS 指纹借用大网站。
架构概述
┌─────────────────────────────────────────────────────────────────────────┐
│ 互联网 │
└─────────────────────────────────────────────────────────────────────────┘
│
┌───────────────┴───────────────┐
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ 端口 443 │ │ 端口 XXXXX │
│ (HTTPS) │ │ (REALITY) │
│ │ │ │
│ ┌─────────┐ │ │ ┌─────────┐ │
│ │ Nginx │ │ │ │ Xray │ │
│ │ │ │ │ │ VLESS │ │
│ │ 你的网站 │ │ │ │ REALITY │ │
│ └─────────┘ │ │ └─────────┘ │
└───────────────┘ └───────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ 正常网站访问 │ │ 代理流量出站 │
│ SSL 证书 │ │ 借用 MS 指纹 │
└───────────────┘ └───────────────┘
特点
| 特性 | 说明 |
|---|---|
| 无需域名 | 直接用服务器 IP |
| 无需证书 | REALITY 借用大网站 TLS 指纹 |
| 高隐蔽性 | GFW 无法区分真假 TLS 流量 |
| 端口独立 | 不影响现有 Nginx 服务 |
| 低延迟 | 原生 TCP,无额外封装 |
环境要求
- CentOS 9 / Rocky Linux 9 / AlmaLinux 9
- 1 核 1G 内存起步
- 开放代理端口(本文示例使用高位端口)
部署步骤
1. 安装 Xray
# 更新系统
sudo dnf update -y
# 安装依赖
sudo dnf install -y curl
# 安装 Xray(官方脚本)
sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
2. 生成密钥
# 生成 UUID
/usr/local/bin/xray uuid
# 输出示例:a3960298-116e-4668-bf7c-83dc8ddc07bc
# 生成 x25519 密钥对(REALITY 用)
/usr/local/bin/xray x25519
# 输出示例:
# Private key: kLYcpM5xh0ftYC8QaYLcUVEuInufUyF_cNwq7ztY9mE
# Public key: 4pc_4hr9FIU4gs3oL-ziP-mp3OOkBLt496QcxLeEy3M
# 生成 Short ID(可选,随机 8 位 hex)
openssl rand -hex 4
# 输出示例:1b2f1c2c
密钥说明:
| 字段 | 用途 | 存放位置 |
|---|---|---|
| UUID | 客户端身份标识 | 服务端 + 客户端 |
| Private Key | 服务端私钥 | 仅服务端 |
| Public Key | 客户端验证用 | 服务端 + 客户端 |
| Short ID | 连接标识(可留空) | 服务端 + 客户端 |
3. 配置 Xray
编辑 /usr/local/etc/xray/config.json:
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"tag": "vless-reality",
"listen": "0.0.0.0",
"port": XXXXX,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "YOUR_UUID",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:443",
"xver": 0,
"serverNames": [
"www.microsoft.com",
"microsoft.com",
"login.live.com"
],
"privateKey": "YOUR_PRIVATE_KEY",
"shortIds": [
"",
"YOUR_SHORT_ID",
"0123456789abcdef"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "dns",
"tag": "dns-out"
}
],
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"protocol": ["bittorrent"],
"outboundTag": "direct"
}
]
}
}
替换以下占位符:
| 占位符 | 替换为 |
|---|---|
XXXXX |
你选择的端口号(如 14789) |
YOUR_UUID |
第 2 步生成的 UUID |
YOUR_PRIVATE_KEY |
第 2 步生成的 Private Key |
YOUR_SHORT_ID |
第 2 步生成的 Short ID(可选) |
4. 配置防火墙
# 方法一:firewalld(CentOS 9 默认)
sudo firewall-cmd --zone=public --add-port=XXXXX/tcp --permanent
sudo firewall-cmd --reload
# 验证
sudo firewall-cmd --list-ports
# 方法二:如果没开防火墙,跳过此步
云服务商安全组:
如果是云服务器(UCloud、阿里云、腾讯云等),还需要在控制台安全组开放端口。
5. 启动服务
# 测试配置
sudo /usr/local/bin/xray run -test -config /usr/local/etc/xray/config.json
# 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now xray
# 查看状态
sudo systemctl status xray
# 查看日志(排查问题用)
sudo journalctl -u xray -f --no-pager
6. 验证服务
# 检查端口监听
netstat -tulnp | grep XXXXX
# 或
ss -tulnp | grep XXXXX
# 检查服务运行
systemctl status xray
客户端配置
参数表
| 字段 | 值 |
|---|---|
| 协议 | VLESS |
| 地址 | 你的服务器 IP |
| 端口 | XXXXX |
| UUID | YOUR_UUID |
| Flow | xtls-rprx-vision ⚠️ 必填 |
| 加密 | none |
| 传输协议 | TCP |
| 安全 | reality |
| SNI | www.microsoft.com |
| Fingerprint | chrome |
| Public Key | YOUR_PUBLIC_KEY |
| Short ID | YOUR_SHORT_ID(或留空) |
分享链接格式
vless://YOUR_UUID@YOUR_IP:XXXXX?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR_PUBLIC_KEY&sid=YOUR_SHORT_ID&type=tcp#REALITY
支持的客户端
| 平台 | 推荐客户端 |
|---|---|
| Windows | v2rayN, Clash Verge |
| macOS | V2rayU, Clash Verge |
| iOS | Shadowrocket, Quantumult X |
| Android | v2rayNG, Clash for Android |
隐蔽原理
┌─────────────────────────────────────────────────────────────────┐
│ REALITY 如何工作 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 客户端发起 TLS 握手 │
│ ┌─────────┐ ClientHello ┌─────────┐ │
│ │ 客户端 │ ──────────────────→│ 服务器 │ │
│ │ │ SNI: microsoft │ │ │
│ └─────────┘ └─────────┘ │
│ │
│ 2. 服务器返回"偷来"的证书 │
│ ┌─────────┐ ServerHello ┌─────────┐ │
│ │ 客户端 │ ←─────────────────│ 服务器 │ │
│ │ │ 微软的证书 │ (偷梁换柱)│ │
│ └─────────┘ └─────────┘ │
│ │
│ 3. 建立"假"的 TLS 连接,传输"真"的代理数据 │
│ ┌─────────┐ 加密数据 ┌─────────┐ │
│ │ 客户端 │ ←───────────────→ │ 服务器 │ │
│ │ │ (GFW看不懂) │ │ │
│ └─────────┘ └─────────┘ │
│ │
│ GFW: "这人在访问 Microsoft,放行" 🤷 │
│ │
└─────────────────────────────────────────────────────────────────┘
伪装目标选择
可以更换 dest 和 serverNames 来伪装成其他大网站:
// 伪装成 Apple
"dest": "www.apple.com:443",
"serverNames": ["www.apple.com", "apple.com"]
// 伪装成 Cloudflare
"dest": "www.cloudflare.com:443",
"serverNames": ["www.cloudflare.com"]
// 伪装成 Amazon
"dest": "www.amazon.com:443",
"serverNames": ["www.amazon.com"]
要求: 目标网站必须支持 TLS 1.3 和 HTTP/2。
日常维护
# 查看服务状态
sudo systemctl status xray
# 重启服务
sudo systemctl restart xray
# 查看日志
sudo journalctl -u xray -f
# 更新 Xray
sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
sudo systemctl restart xray
常见问题
Q: 连接超时?
- 检查防火墙是否开放端口
- 检查云服务商安全组
- 检查 Xray 服务是否运行
Q: 连上但无法上网?
- 确认 Flow 设为
xtls-rprx-vision(最常见原因) - 检查 Public Key 是否正确(不是 Private Key)
- 检查 SNI 是否设为
www.microsoft.com
Q: 速度慢?
- 确认服务器带宽
- 尝试更换伪装目标
- 检查服务器负载
安全建议
- 定期更新 Xray — 获取最新安全修复
- UUID 保密 — 不要分享给他人
- Private Key 保密 — 只保存在服务端
- 监控日志 — 定期检查异常连接
- 限制连接数 — 必要时在防火墙限制