vault backup: 2026-06-07 13:24:09

This commit is contained in:
2026-06-07 13:24:09 +08:00
parent 7344fe3bf1
commit b483e3397a

View File

@@ -0,0 +1,297 @@
---
tags:
- networking
- vps
- xray
- reality
- cloudflare
- warp
- openai
created: 2026-06-07
---
# 科学上网XRay REALITY + Cloudflare WARP 部署方案
## 一、整体架构
```
本机 (v2rayN)
│ VLESS + REALITY over TCP
VPS :50000 (teddysun/xray Docker · host network)
├── OpenAI / ChatGPT 域名
│ ▼
│ 127.0.0.1:40000 (Cloudflare WARP · proxy 模式 · SOCKS5)
│ ▼
│ Cloudflare 清洁 IP → ChatGPT / OpenAI
└── 其他流量 → 直连出站 (freedom)
├── geoip:cn → blackhole阻断
```
**关键设计原则:**
- XRay 以 `network_mode: host` 运行,直接访问宿主机 127.0.0.1:40000
- WARP 只接管 OpenAI 相关域名,其余流量直连,不影响速度
- REALITY 伪装为真实 TLS 网站,无需证书,极难被检测
---
## 二、REALITY 协议原理
REALITY 是 Xray-core 独有的传输层安全协议,基于 TLS 1.3。
| 特性 | 说明 |
|------|------|
| **无需证书** | 借用真实网站(如 lovelive-anime.jp的 TLS 握手 |
| **防主动探测** | 没有 privateKey 的探测者只会得到真实网站的响应 |
| **x25519 密钥对** | privateKey 存服务端publicKey 给客户端 |
| **shortId** | 额外身份验证8字节随机 hex |
| **flow** | `xtls-rprx-vision` — 支持 TLS-in-TLS 的视觉流控 |
### 握手流程
```
客户端 ──── ClientHello (SNI=lovelive-anime.jp) ────► 服务端
[含 shortId + publicKey 派生的随机数]
服务端识别到合法客户端 → 建立加密隧道
服务端识别到未知探测者 → 转发到 lovelive-anime.jp:443真实证书
```
---
## 三、一键部署脚本
**脚本位置:** `/home/ubuntu/Reality_Docker_Install_AIModify.sh`
### 脚本功能流程
```
1. 获取公网 IP可选输入自定义域名
2. 询问端口(默认 50000
3. 检测并安装 Docker / docker-compose / qrencode
4. 安装 Cloudflare WARP官方包apt 安装)
5. 注册 WARP 账户 → proxy 模式 → 连接
6. 生成 docker-compose.ymlnetwork_mode: host
7. 生成 REALITY x25519 密钥对 + UUID
8. 生成 config.json含 WARP 出站 + OpenAI 分流规则)
9. docker compose up -d 启动 xray
10. 输出 VLESS 链接 + 二维码 + 维护命令
```
### 历史 Bug 记录
**BugprivateKey 始终为空2026-06-07 修复)**
```bash
# 错误写法($3 越界PrivateKey 行只有两个字段)
privateKey=$(echo "$output" | awk 'NR==2 {print $3}')
# 正确写法
privateKey=$(echo "$output" | grep "^PrivateKey:" | awk '{print $2}')
```
`xray x25519` 输出格式:
```
PrivateKey: <key> ← 2个字段应取 $2
Password (PublicKey): <key> ← 3个字段取 $3 正确
```
---
## 四、Cloudflare WARP 配置
### 安装方式Ubuntu 22.04 / 24.04
```bash
# 添加 GPG 密钥
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg \
| gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
# 添加仓库noble = Ubuntu 24.04
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] \
https://pkg.cloudflareclient.com/ noble main" \
| tee /etc/apt/sources.list.d/cloudflare-client.list
apt update && apt install -y cloudflare-warp
```
### 初始化配置
```bash
systemctl enable --now warp-svc # 启动守护进程
warp-cli --accept-tos registration new # 注册免费账户
warp-cli --accept-tos mode proxy # 切换为 SOCKS5 proxy 模式
warp-cli --accept-tos connect # 连接
```
### WARP 工作模式对比
| 模式 | 说明 | 本方案选用 |
|------|------|-----------|
| `warp` | 全局 WireGuard替换默认路由 | ❌ 会断 SSH |
| `proxy` | SOCKS5 on 127.0.0.1:40000 | ✅ 安全,按需使用 |
| `tunnel` | 仅 DNS 保护 | ❌ 不转发流量 |
### 常用维护命令
```bash
warp-cli --accept-tos status # 查看状态
warp-cli --accept-tos disconnect # 断开
warp-cli --accept-tos connect # 重连
curl --socks5 127.0.0.1:40000 ipinfo.io # 验证出口 IP
```
---
## 五、OpenAI / ChatGPT 分流逻辑
### XRay 路由规则config.json
```json
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": [
"geosite:openai",
"domain:openai.com",
"domain:chatgpt.com",
"domain:oaistatic.com",
"domain:oaiusercontent.com",
"domain:ai.com",
"domain:sora.com"
],
"outboundTag": "warp"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "block"
}
]
}
```
### WARP 出站配置
```json
{
"protocol": "socks",
"tag": "warp",
"settings": {
"servers": [{"address": "127.0.0.1", "port": 40000}]
}
}
```
### docker-compose.ymlhost 网络模式)
```yaml
services:
xray:
container_name: xray
image: teddysun/xray
network_mode: host # 关键:容器共享宿主机网络,可访问 127.0.0.1:40000
volumes:
- /root/xray/config:/etc/xray/
restart: always
```
> **为什么必须用 `network_mode: host`**
> Docker bridge 网络下,容器内的 127.0.0.1 指向容器自身,无法访问宿主机上运行的 WARP SOCKS5 代理。
> host 模式下容器与宿主机共享网络命名空间127.0.0.1 即宿主机本地地址。
### 规则匹配优先级
```
OpenAI 域名规则第1条→ warp 出站 → WARP SOCKS5 → Cloudflare IP → OpenAI
CN IP 规则第2条 → block 出站 → 丢弃
其余流量(默认) → direct 出站 → 直连
```
---
## 六、v2rayN 客户端配置
### 节点参数
| 参数 | 值 |
|------|----|
| 协议 | VLESS |
| 地址 | VPS 公网 IP 或域名 |
| 端口 | 50000可自定义 |
| UUID | 部署时自动生成 |
| Flow | `xtls-rprx-vision` |
| 传输 | TCP |
| 安全 | reality |
| SNI | `www.lovelive-anime.jp` |
| Fingerprint | `chrome` |
| PublicKey | 部署时自动生成(输出在终端) |
| ShortId | 部署时自动生成 |
### 常见报错
**`REALITY: received real certificate (potential MITM or redirection)`**
原因:客户端 `publicKey` 与服务端 `privateKey` 不匹配。服务端把客户端当陌生人,转发到 lovelive-anime.jp客户端收到真实证书后报错。
解决:更新客户端配置中的 `publicKey` 为服务端当前生成的值。
---
## 七、当前 VPS 配置43.161.194.203
```
协议 : VLESS + REALITY
端口 : 50000
UUID : 7c8bfb9f-c927-44c5-9e79-75bc4312cb6f
SNI : www.lovelive-anime.jp
PublicKey : S6810-8nzf8hPnsmaPPN8elBKm5kQ5X2aHIAHr-fZRY
ShortId : 784799bde6894a7e
WARP IP : 104.28.215.70Cloudflare
```
VLESS 链接:
```
vless://7c8bfb9f-c927-44c5-9e79-75bc4312cb6f@43.161.194.203:50000?headerType=none&type=tcp&encryption=none&fp=chrome&pbk=S6810-8nzf8hPnsmaPPN8elBKm5kQ5X2aHIAHr-fZRY&sid=784799bde6894a7e&spx=%2F&flow=xtls-rprx-vision&security=reality&sni=www.lovelive-anime.jp#xray-reality
```
---
## 八、排查与维护
### 查看实时日志
```bash
# 所有日志
sudo docker logs -f xray
# 只看 warp/openai 相关
sudo docker logs --tail 100 xray 2>&1 | grep -iE "warp|openai|chatgpt|socks"
# 验证 WARP 出口
curl --socks5 127.0.0.1:40000 ipinfo.io
```
### 验证 OpenAI 分流
```bash
# 通过 WARP 代理访问 OpenAI期望返回 HTTP 308 或 200
curl -v -o /dev/null --socks5 127.0.0.1:40000 https://chat.openai.com 2>&1 | grep "< HTTP"
```
### 服务重启
```bash
cd /root/xray
sudo docker compose restart # 重启 xray
sudo warp-cli --accept-tos connect # 重连 WARP
```
### 重新部署(全新生成密钥)
```bash
sudo bash /home/ubuntu/Reality_Docker_Install_AIModify.sh
```