本文记录了在 VPS 上从零搭建 3x-ui 面板,并配置 WARP 分流 Google AI(Gemini)流量以及使用 UFW 进行系统防火墙加固的完整流程。
3x-ui + Cloudflare WARP + Google AI 分流配置
本文记录一套基于 3x-ui + Cloudflare WARP 的 VPS 配置方案。
主要目标:
- 安装并固定使用 MHSanaei 版 3x-ui v3.4.2
- 安装 Cloudflare WARP,并以 Socks5 模式提供代理
- 通过 3x-ui / Xray 路由规则,让 Gemini、Google AI Studio 等 Google AI 服务通过 WARP 出口
- 其他流量保持直连
- 使用 UFW 配置 VPS 防火墙,降低服务器暴露面
注意: 本文中的端口号均以示例配置为准。如果你实际使用了不同的 SSH、面板或 WARP 端口,需要同步修改相关配置。
1. 安装 3x-ui 面板
这里使用 MHSanaei 版 3x-ui,并固定安装在 v3.4.2 版本。
固定版本的好处是可以避免后续脚本更新导致配置或功能发生变化,方便长期维护。
执行以下命令:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.2安装完成后,根据安装脚本提示访问 3x-ui 管理面板。
建议首次进入面板后立即修改默认的管理账号、密码以及面板端口,避免使用默认配置长期暴露在公网。
2. 安装 Cloudflare WARP
为了让部分 Google 服务通过 WARP 出口访问,可以使用 fscarmen/warp 提供的脚本安装 WARP。
下载并运行安装脚本:
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh
chmod +x menu.sh
bash menu.sh2.1 WARP 模式选择
如果后续准备让 Xray 通过 WARP 进行分流,通常可以选择:
WARP 代理模式(Socks5)
本文以以下参数为例:
协议:Socks5地址:127.0.0.1端口:40000也就是说,WARP 的 Socks5 代理监听在:
127.0.0.1:40000可以先确认 WARP 的代理端口是否正常监听:
ss -lntp | grep 40000如果能够看到 127.0.0.1:40000 处于监听状态,说明 Socks5 服务已经启动。
注意: 如果 WARP 实际使用的 Socks5 端口不是
40000,后面的 Xray Outbound 配置也必须使用实际端口。
3. 配置 Xray 分流
WARP 配置完成后,下一步是在 3x-ui 中增加一个 Socks5 出站,让 Xray 可以将指定流量转发给 WARP。
进入:
3x-ui → 设置 → Xray 配置3.1 新增 WARP 出站
在 Outbound(出站)配置中新增一个 Socks5 出站。
配置如下:
| 参数 | 配置 |
|---|---|
| Tag | warp |
| Protocol | socks |
| Address | 127.0.0.1 |
| Port | 40000 |
核心配置可以理解为:
{ "protocol": "socks", "settings": { "servers": [ { "address": "127.0.0.1", "port": 40000 } ] }, "tag": "warp"}其中:
127.0.0.1表示 WARP Socks5 运行在本机40000是 WARP Socks5 监听端口warp是这个出站的 Tag,后面的路由规则会引用它
3.2 配置路由规则
接下来配置 Routing,让指定的 Google / Gemini 流量通过 warp 出站。
以下规则保留了原有的分流逻辑:
api入站流量 →api- 私有 IP →
blocked - BitTorrent →
blocked - YouTube →
direct - 指定 Google / Gemini 域名 →
warp - Google IP →
warp
配置如下:
[ { "type": "field", "inboundTag": [ "api" ], "outboundTag": "api" }, { "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" }, { "type": "field", "protocol": [ "bittorrent" ], "outboundTag": "blocked" }, { "type": "field", "domain": [ "geosite:youtube" ], "outboundTag": "direct" }, { "type": "field", "domain": [ "gemini.google.com", "aistudio.google.com", "makersuite.google.com", "ai.google.dev", "labs.google", "generativelanguage.googleapis.com", "aiplatform.googleapis.com", "alkalimakersuite-pa.clients6.google.com", "google.com", "www.google.com", "accounts.google.com", "ogs.google.com", "clients.google.com", "clients1.google.com", "clients2.google.com", "clients3.google.com", "clients4.google.com", "clients5.google.com", "clients6.google.com", "oauth2.googleapis.com", "www.googleapis.com", "googleapis.com", "gstatic.com", "gvt1.com", "gvt2.com", "gvt3.com" ], "outboundTag": "warp" }, { "type": "field", "ip": [ "geoip:google" ], "outboundTag": "warp" }]3.3 分流逻辑
这套规则的核心是:
客户端请求 │ ├── 私有 IP ──────────→ blocked │ ├── BT 流量 ──────────→ blocked │ ├── YouTube ──────────→ direct │ ├── Google / Gemini ──→ warp │ └── 其他流量 ─────────→ 默认出站因此不需要让所有 VPS 流量都经过 WARP,只针对指定的 Google 服务进行分流。
注意: Xray 的路由规则是有顺序的。前面的规则会优先匹配,因此如果后续增加新的规则,需要注意规则之间的匹配关系,避免出现流量被前面的规则提前截获的情况。
4. UFW 防火墙配置
完成 3x-ui 和 WARP 配置后,可以使用 UFW 对 VPS 的入站连接进行限制。
这里采用:
- 默认拒绝入站
- 默认允许出站
也就是说,只有明确放行的端口才能从公网访问。
⚠️ 最重要:配置 UFW 前,务必先确认 SSH 端口已经放行。
否则执行
ufw enable后可能直接导致 SSH 连接中断。
4.1 安装 UFW
首先更新系统并安装 UFW:
apt update && apt upgrade -y
apt install ufw -y设置默认策略:
ufw default deny incoming
ufw default allow outgoing含义如下:
| 类型 | 默认策略 |
|---|---|
| 入站连接 | 拒绝 |
| 出站连接 | 允许 |
4.2 放行 SSH 端口
如果 SSH 使用默认的 22 端口:
ufw allow 22/tcp如果你修改过 SSH 端口,例如使用 22222,则应该放行实际使用的端口:
ufw allow 22222/tcp不要在没有确认新 SSH 连接可以正常使用之前关闭当前 SSH 会话。
建议先打开一个新的终端窗口测试 SSH 登录,确认没有问题后再继续。
4.3 放行 3x-ui 面板端口
假设 3x-ui 面板使用 9850 端口:
ufw allow 9850/tcp如果你修改了面板端口,需要替换成实际端口。
4.4 放行节点端口
根据实际节点配置放行相应端口。
例如:
ufw allow 443/udp
ufw allow 80/tcp
ufw allow 22464/tcp如果需要开放一个连续的 TCP 端口范围,例如 10000-20000:
ufw allow 10000:20000/tcp不需要使用的端口不要开放。端口开放得越多,服务器公网暴露面也越大。
4.5 启用 UFW
确认 SSH、面板以及节点端口全部放行后,再启用防火墙:
ufw enable查看当前防火墙状态:
ufw status如果需要查看更加详细的信息:
ufw status verbose5. 配置完成后的检查
完成以上配置后,建议依次检查三个部分。
5.1 检查 WARP Socks5
确认 40000 端口正在监听:
ss -lntp | grep 40000如果没有监听,需要回到 WARP 脚本检查 Socks5 模式是否正常启动。
5.2 检查 Xray 配置
在 3x-ui 中保存 Xray 配置并重启相关服务。
如果 Xray 无法启动,优先检查:
- JSON 格式是否正确
warp出站 Tag 是否与路由规则中的outboundTag完全一致- WARP Socks5 地址和端口是否正确
- 路由规则是否存在语法错误
可以通过 3x-ui 的日志功能查看 Xray 的启动日志。
5.3 检查 UFW
查看当前规则:
ufw status numbered确认至少包含实际使用的:
- SSH 端口
- 3x-ui 面板端口
- 节点端口
- 其他确实需要公网访问的服务端口
6. 常见问题
6.1 开启 UFW 后 SSH 断开
最常见的原因是 SSH 端口没有提前放行。
例如 SSH 使用 22 端口:
ufw allow 22/tcp如果 SSH 使用其他端口,则必须放行对应端口。
如果已经失去 SSH 连接,需要通过 VPS 服务商提供的 Web Console / VNC / Serial Console 等带外管理方式进入服务器,再检查 UFW 规则。
6.2 WARP 已安装,但 Google AI 仍然无法访问
首先检查 WARP Socks5 是否正常:
ss -lntp | grep 40000然后检查 3x-ui 中的 Outbound:
Address: 127.0.0.1Port: 40000Tag: warp同时确认路由规则中的:
"outboundTag": "warp"与 Outbound 的 Tag 完全一致。
6.3 修改了 WARP Socks5 端口
如果 WARP 从:
127.0.0.1:40000改成了其他端口,例如:
127.0.0.1:50000那么 3x-ui 的 Socks5 Outbound 也必须同步修改:
{ "address": "127.0.0.1", "port": 50000}否则 Xray 会连接到错误的端口。
6.4 为什么不直接让所有流量走 WARP?
这套配置的目的并不是让 VPS 的所有流量都经过 WARP,而是针对特定服务进行分流。
这样做可以减少不必要的代理链路,同时保留 VPS 原有的直连出口。
整体逻辑可以概括为:
普通流量 ↓VPS 原始出口 ↓Direct
Google / Gemini ↓Xray Routing ↓WARP Socks5 ↓Cloudflare WARP ↓Google / Gemini7. 最终配置检查清单
部署完成后,可以按照下面的清单逐项确认:
- 3x-ui 已安装
- 3x-ui 版本为
v3.4.2 - WARP 已正常安装
- WARP Socks5 监听
127.0.0.1:40000 - Xray 已添加
warpSocks5 Outbound - Google / Gemini 域名规则已添加
-
geoip:google已通过warp出站 - SSH 端口已加入 UFW
- 3x-ui 面板端口已加入 UFW
- 节点实际使用的端口已加入 UFW
- UFW 已启用
- SSH 可以正常重新连接
- Xray 日志没有明显报错
完成以上配置后,服务器就形成了一个比较清晰的 3x-ui + WARP 分流架构:普通流量保持原有出口,而指定的 Google AI 相关流量交由 WARP 出口处理。