vault backup: 2026-06-07 13:24:09
This commit is contained in:
297
07-Other/AI/科学上网&CodeX/未命名.md
Normal file
297
07-Other/AI/科学上网&CodeX/未命名.md
Normal 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.yml(network_mode: host)
|
||||
7. 生成 REALITY x25519 密钥对 + UUID
|
||||
8. 生成 config.json(含 WARP 出站 + OpenAI 分流规则)
|
||||
9. docker compose up -d 启动 xray
|
||||
10. 输出 VLESS 链接 + 二维码 + 维护命令
|
||||
```
|
||||
|
||||
### 历史 Bug 记录
|
||||
|
||||
**Bug:privateKey 始终为空(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.yml(host 网络模式)
|
||||
|
||||
```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.70(Cloudflare)
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user