# 服务端 WARP 分流配置附件

这是教程方案二的配置参考：**宿主机上的 sing-box 接收客户端流量，AI / Stripe 经 WARP 容器出站，其余走服务器原生出口。** Windows 的 Clash 客户端仍连接原来的服务器节点。

## 先让 Agent 连上服务器

Windows PowerShell 用自己的密钥、SSH 用户和服务器地址测试登录：

```powershell
ssh -i "$env:USERPROFILE\.ssh\id_ed25519" -o IdentitiesOnly=yes -o IdentityAgent=none root@YOUR_SERVER_IP
```

首次连接核对服务器指纹。能登录后，把此附件及下面的任务交给有终端权限的 Agent：

> 通过我提供的 SSH 密钥登录服务器。先检查系统架构、Docker、sing-box 版本、配置路径、入站标签，以及已有网站/API/容器、默认路由和 DNS；保存健康基线及 sing-box 完整配置备份。参考本附件部署独立 WARP 容器，SOCKS 仅绑定宿主机 127.0.0.1:24880，不设置 host network，不接管宿主机网络。先验证 warp=on、loc=US。把 AI、Stripe 和 onelink 补充规则合并到现有 sing-box，规则限定原有代理入站，保留其凭据、证书、DNS、统计及其他路由。命中 TCP 走 WARP，命中 UDP 拒绝，WARP 故障时不回落原生出口。先在临时实例验证命中/未命中、UDP、长连接和故障场景，再 check 并重载代理。不要重启 Docker、Nginx 或业务服务；完成后对比原业务健康、默认路由和 DNS，留下回滚命令。若实际程序是 Mihomo 或 sing-box 版本不同，按现有版本官方格式适配，不能直接覆写配置。

## 容器

`compose.yaml` 的 `build: ./warp` 使用本附件 Dockerfile：Ubuntu 24.04 + Cloudflare 官方 APT 客户端。没有需要填写的私有凭据。

在服务器独立目录放好附件，检查本机 24880 端口未占用，确认 `/dev/net/tun` 存在后执行：

```bash
docker compose config -q
docker compose up -d --build warp
curl --socks5-hostname 127.0.0.1:24880 https://www.cloudflare.com/cdn-cgi/trace
```

输出应有 `warp=on`，美国服务器应检查 `loc=US`。WARP 没有固定选择美国的开关；每次重连后仍需验证。此示例是 TCP SOCKS，不要在 Mihomo 配置中写 `udp: true`。

## 规则与 sing-box

`rules/ai.json`、`stripe.json` 是 MetaCubeX `sing` 分支的固定快照；`stripe-extra.json` 仅补 `onelink.com`。让 Agent 把它们放到 `/var/lib/sing-box/warp-rules/`，服务账号需要有读取权限。`.mrs` 是 Mihomo 格式，不能直接拿给 sing-box。

`sing-box-route.fragment.json` 是**合并片段**，参考已验证的 sing-box 1.14.0 配置。把 `YOUR_PROXY_INBOUND_TAG` 换成现有代理入站标签，多个标签都要列上；合并 `outbounds` / `route`，保留已有设置。它不含入站协议及密钥，不能直接替换整份服务端配置。

若服务器上的 sing-box 也接管其他系统流量，Agent 必须保留其原有兜底路由；此片段的 `final: direct` 仅适合原本其余流量直出的代理实例。宿主机没有被 sing-box 接管时，网站/API 的出站不经过这些规则。

合并后的检查路径应以服务实际启动参数为准，例如：

```bash
sing-box check -c /etc/sing-box/config.json
```

规则快照来源（2026-09-30）：

| 文件 | 来源 / SHA-256 |
| --- | --- |
| ai.json | [MetaCubeX AI JSON](https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/0a9e013b5bb8971992bc09ebfe1b889cd74d65d0/geo/geosite/category-ai-chat-!cn.json)；`150a50fdc366ca9c505b28637184daec82ecf6524e66a2eea72d13e42d5d6875` |
| stripe.json | [MetaCubeX Stripe JSON](https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/0a9e013b5bb8971992bc09ebfe1b889cd74d65d0/geo/geosite/stripe.json)；`644f526d1fdee6f4583981434d5c5d934abce6899e6fbf45138346f9e6192c49` |

更新规则时先比较差异和关键域名覆盖，再测试、替换；不直接追随未核对的每日更新。规则覆盖不到所有新 AI、第三方登录或验证码，裸 IP / ECH 也可能没有可识别的域名。

## 客户端验收

Clash 选这个服务器节点后打开 [Claude trace](https://claude.ai/cdn-cgi/trace)：`ip` 应是预先测得的 WARP 出口，`loc` 应为 US。再检查 DNS / WebRTC；检测网站也必须走同一条链路。任一项不符合预期，先修好再注册。

本附件做了 Compose、JSON 和 Shell 格式检查；容器结构及路由源自本人的实测部署，没有在读者的服务器上执行。

来源：[Cloudflare 官方软件源](https://pkg.cloudflareclient.com/)、[Linux WARP](https://developers.cloudflare.com/warp-client/get-started/linux/)、[WARP 本地代理模式](https://developers.cloudflare.com/warp-client/warp-modes/)、[sing-box SOCKS 出站](https://sing-box.sagernet.org/configuration/outbound/socks/)、[sing-box 路由动作](https://sing-box.sagernet.org/configuration/route/rule_action/)。
