最近发现一些境外的图层网站还有例如reddit等网站屏蔽了很多vps的ip地址,导致即使通过vps代理也无法访问这些网站。研究了一下,发现运行v2ray的vps使用warp可以隐藏vps的真实ip。

简单来说访问网络的数据路径变更为:

境内v2ray客户端 → Cloudflare CDN 集群 → 境外VPS → Cloudflare WARP 集群→ reddit等网站

这样vps出口ip就变成了Cloudflare池子里面的ip了,实际测试可以访问reddit等网站。不得不说Cloudflare真是赛博大善人!

具体配置如下:

1.安装warp

根据 https://pkg.cloudflareclient.com/ 网站上的安装指南安装warp,我的vps是ubuntu,安装步骤如下:

# Add cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg


# Add this repo to your apt repositories
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list


# Install
sudo apt-get update && sudo apt-get install cloudflare-warp

# 启动 WARP 服务
sudo systemctl start warp-svc
sudo systemctl enable warp-svc

2.设置warp

1)注册warp

sudo warp-cli registration new

2)设置warp为代理模式

sudo warp-cli mode proxy

注意,如果跳过这步,直接运行:sudo warp-cli connect 的话会直接导致vps的ssh断连,因为所有出口都经过warp,且没有任何配置,这时候需要通过vps供应商的管理界面把warp断掉才行。

3)启动warp

sudo warp-cli connect

4)检测warp运行情况

#检查监听端口
ss -ltnp | grep 40000

# 测试 SOCKS5 代理是否能访问 Google
curl --socks5 127.0.0.1:40000 https://www.google.com -v

# 或者测试 Cloudflare 是否通
curl --socks5 127.0.0.1:40000 https://www.cloudflare.com/cdn-cgi/trace

如果有返回结果就ok了。

5)把warp-proxy注册为系统服务

a.创建 systemd 服务文件

sudo vi /etc/systemd/system/warp-proxy.service

b.编辑warp-proxy.service

[Unit]
Description=Cloudflare WARP Proxy Mode
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/warp-cli mode proxy
ExecStartPost=/usr/bin/warp-cli connect
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

c.重新加载 systemd 并启用服务

sudo systemctl daemon-reload
sudo systemctl enable warp-proxy.service
sudo systemctl start warp-proxy.service

d.重启vps后,检查状态

warp-cli status

显示 connected 就ok了

3.配置v2ray服务端,修改v2ray的配置文件为:

{
  "inbounds": [
    {
      "port": 23456,
      "listen": "127.0.0.1",
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "********hidden-uuid************"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/mypath"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 40000
          }
        ]
      },
      "tag": "warp"
    },
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ],
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": [
          "geosite:netflix",
          "geosite:youtube"
        ]
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
            "127.0.0.1", 
            "::1",
            "8.8.8.8",
            "8.8.4.4",
            "1.1.1.1"
        ]
      },
      {
        "type": "field",
        "outboundTag": "warp",
        "network": "tcp,udp"
      }
    ]
  }
}

最后重启v2ray服务即可,客户端不用做任何改动。

这个配置文件的含义是,除了Netflix和YouTube网站、本机、还有几个dns的ip走直连外,其他流量都经过warp。当然也可以根据需求使用其他配置。

免费版 Warp 在高并发/大流量下会出现限速,一般稳定在 10~50Mbps 左右,而且网络延迟也会增加一些,所以只要网站不限制vps ip访问(或者没有强隐私需求,有的网站会抓取访问的ip作别的用途),没有必要通过Warp。

参考:

1.https://pkg.cloudflareclient.com/

2.chatgpt