Files
BlueRoseNote/07-Other/AI/科学上网&CodeX/未命名.md

7.6 KiB
Raw Blame History

tags, created
tags created
networking
vps
xray
reality
cloudflare
warp
openai
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 修复)

# 错误写法($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

# 添加 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

初始化配置

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 保护 不转发流量

常用维护命令

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

"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 出站配置

{
  "protocol": "socks",
  "tag": "warp",
  "settings": {
    "servers": [{"address": "127.0.0.1", "port": 40000}]
  }
}

docker-compose.ymlhost 网络模式)

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

八、排查与维护

查看实时日志

# 所有日志
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 分流

# 通过 WARP 代理访问 OpenAI期望返回 HTTP 308 或 200
curl -v -o /dev/null --socks5 127.0.0.1:40000 https://chat.openai.com 2>&1 | grep "< HTTP"

服务重启

cd /root/xray
sudo docker compose restart          # 重启 xray
sudo warp-cli --accept-tos connect   # 重连 WARP

重新部署(全新生成密钥)

sudo bash /home/ubuntu/Reality_Docker_Install_AIModify.sh