用 Cloudflare WARP 与 3X-UI 修正 Google 和 X 的 IP 地区识别

有些 VPS 的出口 IP 会被 Google、Gemini 或 X 识别为不符合预期的地区。例如,VPS 实际位于美国,Google 却把它识别为中国,或者 X 把西雅图 IP 识别成印度。本文采用一个比较轻量的方案:让 Cloudflare WARP 只提供本机 SOCKS5 代理,再由 3X-UI / Xray 按域名把指定请求转发到这个代理。
这套方案不需要额外安装 redsocks 或修改全局 iptables,也不会让 WARP 接管 VPS 上的全部流量。
WARP 的出口地区和 IP 由 Cloudflare 分配,不能保证固定为某个国家或城市。本文的目标是改变特定服务看到的出口网络,不是提供固定地区 IP。请确认你的使用场景符合 Cloudflare、目标服务和 VPS 服务商的条款。
一、工作原理
整个请求链路如下:
客户端请求 | v3X-UI / Xray 路由规则 | geosite:google, geosite:twitter v本机 SOCKS5 出站(127.0.0.1:40000) | vCloudflare WARP | vGoogle、Gemini 或 X只有匹配路由规则的域名会使用 warp 出站,其他流量仍然按照原来的 direct、DNS 或其他出站处理。
二、安装 Cloudflare WARP
以下命令适用于 Debian / Ubuntu 系统,并且默认使用 root 权限。若当前用户不是 root,请在命令前加 sudo。
1. 更新软件包并安装依赖
apt updateapt install -y curl gnupg lsb-release ca-certificates2. 下载并保存 Cloudflare GPG 公钥
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg3. 添加 Cloudflare APT 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/cloudflare-client.list4. 安装 WARP 客户端
apt updateapt install -y cloudflare-warp5. 创建状态目录并接受服务条款
mkdir -p /var/lib/cloudflare-warpecho '{"accepted":true}' > /var/lib/cloudflare-warp/accepted-tos.json6. 启用 WARP 服务
systemctl enable --now warp-svc可以先确认服务已经启动:
systemctl status warp-svc --no-pager三、注册设备并启用本地 SOCKS5 代理
1. 注册 WARP 设备
不同版本的 warp-cli 命令名称可能略有差异,下面的写法优先使用新命令,旧版本则回退到 register:
warp-cli --accept-tos registration new || warp-cli --accept-tos register2. 切换到代理模式
代理模式只启动本地代理,不接管系统的全部流量:
warp-cli --accept-tos mode proxy3. 设置 SOCKS5 监听端口
这里使用 40000 作为示例端口,可以替换成其他未占用端口。后续 3X-UI 出站中的端口必须保持一致。
warp-cli --accept-tos proxy port 400004. 连接 WARP
warp-cli --accept-tos connect检查连接状态:
warp-cli --accept-tos status四、先单独测试 WARP 出口
在接入 3X-UI 之前,先确认 SOCKS5 代理本身可以工作:
curl -x socks5://127.0.0.1:40000 https://ifconfig.co如果命令返回的 IP 与 VPS 原来的公网 IP 不同,说明 WARP 代理已经建立。可以同时执行下面两条命令进行对比:
# VPS 直连出口curl https://ifconfig.co
# 经过 WARP 的出口curl -x socks5://127.0.0.1:40000 https://ifconfig.co如果 curl 无法连接 127.0.0.1:40000,先检查 warp-svc 状态、代理模式和端口配置。3X-UI 只能使用已经正常工作的本地 SOCKS5 代理。
五、在 3X-UI 中添加 WARP 出站
进入 3X-UI 的 出站 页面,添加一个新的出站,填写以下内容:
| 字段 | 值 |
|---|---|
| 协议 | socks |
| 标签 | warp |
| 地址 | 127.0.0.1 |
| 端口 | 40000 |
| 用户名 | 留空 |
| 密码 | 留空 |
| Sockopt | 保持默认关闭 |
| Mux | 保持默认关闭 |

保存出站后,确认列表中出现 warp 标签,并且地址显示为 127.0.0.1:40000。

WARP 只监听 127.0.0.1,因此这个代理不会直接暴露到公网。3X-UI 和 Xray 运行在同一台 VPS 上时,使用回环地址即可访问。
六、添加 Google 和 X 的路由规则
进入 3X-UI 的 路由 页面,切换到 路由规则,新增一条规则。
1. 规则字段
最关键的字段如下:
| 字段 | 值 |
|---|---|
| 域名 | geosite:google,geosite:twitter |
| 出站标签 | warp |
| IP、端口、协议 | 留空,除非你有额外分流要求 |
如果只需要解决 Google / Gemini,就填写:
geosite:google如果还需要解决 X,再使用英文逗号追加:
geosite:google,geosite:twitter
确认出站标签选择的是上一节创建的 warp,不要误选 direct 或其他出站。
2. 保存并重启 Xray
保存路由规则后,回到系统状态页面,重启 Xray,使新路由配置生效。

七、验证实际效果
重启 Xray 后,可以在客户端重新打开目标服务。如果路由规则匹配成功,Google / Gemini 或 X 的出口就会经过 WARP。
Google / Gemini
下面是路由调整前后的示例对比:


X
X 的趋势和内容地区也可以用同样方式对比:


八、排错顺序
WARP 端口无法连接
systemctl status warp-svc --no-pagerwarp-cli --accept-tos statusss -lntp | grep 40000确认 WARP 处于连接状态,并且本机确实有程序监听 127.0.0.1:40000。
直连测试成功,但 3X-UI 不生效
按下面顺序检查:
- 3X-UI 出站协议是否为
socks。 - 地址是否为
127.0.0.1,端口是否与 WARP 代理端口一致。 - 路由规则的域名是否写成
geosite:google或geosite:twitter。 - 路由规则的出站标签是否选择
warp。 - 保存路由后是否重启了 Xray。
- Xray 使用的 geodata 是否包含对应的
google和twitter条目。
只想让 Google 走 WARP
不要添加 geosite:twitter,只保留:
geosite:google这样 X 和其他域名仍会按照原有规则处理。
九、停止或恢复 WARP
暂时停止 WARP 连接:
warp-cli --accept-tos disconnect重新连接:
warp-cli --accept-tos connect如果不再需要 WARP 服务,可以停止并取消开机启动:
systemctl disable --now warp-svc不要在没有删除 3X-UI warp 出站和相关路由的情况下直接卸载 WARP,否则 Xray 可能继续尝试连接一个不存在的本地代理。
参考资料
- 原帖:谷歌送中/推特送印度 解决方案
- 相关脚本说明:WARP 一键安装 + Google 解锁
- 延伸阅读:一键开启 WARP,解决 Google 全家桶 IP 定位问题
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!







