V2Ray + Cloudflare WARP

Posted on Apr 5, 2023

🧱

有一阵子访问 OpenAI(现在更像 CloseAI) 的一些域名经常遇到 CloudflareAccess Denied,一开始尝试更换机房 IP 来代理,可几乎没有一个不在黑名单。侥幸通过先走代理,在登录最后一步切换为直连绕过了数次,直到国内终于彻底被墙了。

打不过就加入它:流量出站转向 Cloudflare 网络。

  1. 在 VPS 上安装 WARP,以 Debian/Ubuntu 为例:
sudo apt install cloudflare-warp
  1. 以本地代理模式运行 WARP
warp-cli register
warp-cli set-mode proxy
warp-cli connect
warp-cli enable-always-on
  1. 测试代理模式
curl ifconfig.me

留意前后标准输出的区别。

export ALL_PROXY=socks5://127.0.0.1:40000
curl ifconfig.me
  1. 配置 V2Ray

设置路由规则,非国内域名走 WARP 代理。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "outboundTag": "reject",
        "ip": [
          "geoip:private"
        ]
      },
      {
        "type": "field",
        "outboundTag": "proxy",
        "domain": [
          "geosite:geolocation-!cn"
        ]
      },
      {
        "type": "field",
        "outboundTag": "default",
        "network": "udp,tcp"
      }
    ]
  }
}

其中 WARP 代理的出站标签是 proxy,使用 WARP 本地代理模式地址和端口。

{
  "outbounds": [
    {
      "tag": "reject",
      "protocol": "blackhole"
    },
    {
      "tag": "proxy",
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 40000
          }
        ]
      }
    },
    {
      "tag": "default",
      "protocol": "freedom"
    }
  ]
}

由于在 V2Ray Server 与目标(例如 chat.openai.com)之间插入一层 Cloudflare WARP,因此向目标隐藏了 V2Ray Server 的真实地址。

😅

运行一段时间后 VPS 经常罢工,连 SSH 都连不通,登录 Web 控制台才知道是 Memory 和 Swap 负载过高,好不容易连上后确定了凶手就是 Cloudflare WARP 客户端一个进程 warp-svc,不少网友说它容易内存泄漏,也没找到源代码,把我给气得直接使用 crontab 每分钟检查它消耗内存百分比是否超过指定阈值,若是则杀死它(反正会自动重启)。

*/1 * * * * kill -9 $(ps -C warp-svc --no-headers -o "pid,\%mem" | awk '{ if ($2 > 40) print $1 }')

注意命令中的百分比符号 % 除非用反斜杠 \ 转义,否则将被 crontab 改变为换行符。

🤖️

“总的来说,Cloudflare WARP 的本质是一个基于 WireGuard 协议的 VPN 服务,它通过加密和隧道技术来保护用户的隐私和安全,同时通过优化路由、缓存加速等技术来提高用户的网络性能和体验。”

本文首发于 https://h2cone.github.io/

🔍