0. 前言
以OpenAI为代表的提供大语言模型服务的网站,屏蔽了中国地区和常见数据中心的IP。
通常可以通过购买VPN服务来绕过OpenAI等对IP的封锁。
如果你通过VPS自行搭建VPN,尤其是使用的VPS服务来自Vultr等知名度较高的云服务提供商时,那么你可能仍然会得到类似Access denied的响应,不论IPv4或是IPv6。
我们可以通过Cloudflare WARP来打破OpenAI、Netflix、谷歌学术等网站对IP的封锁。
下面将从以下几个方面进行说明:
- ChatGPT与Cloudfare WARP
- VPS搭建
- Cloudflare WARP安装
- 代理配置
文末附参考链接。
1. ChatGPT与Cloudflare WARP
ChatGPT、Netflix等,使用了Cloudflare提供的CDN等服务,以达到网络防护、负载均衡和访问加速的目的。在本文情境下,这可以理解为一个反向代理。
Cloudflare,也提供了一款安全上网和反嗅探工具/服务,Cloudflare WARP。这可以理解为一项VPN服务,一个正向代理。
Cloudflare WARP是Cloudflare提供的一项基于WireGuard(一种VPN协议)的网络流量安全及加速服务,能够使用户通过连接到Cloudflare的边缘节点实现隐私保护和链路优化。出于一些原因,以OpenAI为代表这些网站,并不能对通过Cloudflare WARP服务获得的IP地址进行封锁。
因此,可以在VPS上部署Cloudflare WARP服务,即在原有代理的基础上再“增加一跳”,来打破IP封锁。
2. VPS搭建
参考上述链接,选取了Vultr作为VPS,采用了Vmess+WS+TLS+CDN的模式,代理软件为V2Ray。
3. Cloudflare WARP安装
本节进行Cloudflare WARP的安装与配置说明。
3.1 安装
安装GPG key仓库:
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
添加Cloudflare WARP客户端源:
echo "deb [arch=amd64 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
更新源并安装客户端:
sudo apt-get update && sudo apt-get install cloudflare-warp
3.2 配置
注册客户端:
warp-cli register
设置为代理模式,启动本地Socks5代理:
warp-cli set-mode proxy
启用连接:
warp-cli connect
保持连接:
warp-cli enable-always-on
此外,代理模式的默认Socks5端口为40000,可以通过下面的命令修改端口:
warp-cli set-proxy-port <PORT>
3.3 查看状态与配置
可以使用下面的命令查看相关状态与配置:
warp-cli status
warp-cli warp-stats
warp-cli settings
systemctl status warp-svc
到这里,Cloudflare WARP服务本身就基本配置完成了。
4. 代理配置
完成Cloudflare WARP的安装与配置后,还需要配置VPS中的代理软件的出入站规则配置,来绕过IP封锁。也就是说,访问OpenAI、Netflix、谷歌学术等封禁IP的网站时,使这些流量走本地的Socks5:40000代理,从而使用Cloudflare WARP提供的服务。
4.1 配置
以Vultr提供的VPS为例,操作系统为Debian 11 x64,VPS中安装了V2Ray作为代理软件。
V2Ray的配置文件目录通常为/etc/v2ray/config.json或者/usr/local/etc/v2ray/config.json。
入站规则不变
出站规则:
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "block"
},
{
"tag": "cloudflare-warp",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
]
}
}
],
由于V2Ray默认使用第一条出站规则,所以在出站规则的末尾添加一条规则,tag为cloudflare-warp,协议为socks,并指定了本地地址与端口。(也可以将本条规则添加在首部)
路由规则:
"routing": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
...
],
"outboundTag": "block"
},
{
"type": "field",
"domain": [
"openai.com",
"ai.com",
"scholar.google.com",
"netflix.com",
"bing.com"
],
"outboundTag": "cloudflare-warp"
}
]
}
添加了一条路由规则,type为field;outboundTag仍为cloudflare-warp,与上述outbound中的tag相同;domain中指定了OpenAI、谷歌学术、Netflix等站点。
重启V2Ray:
systemctl stop v2ray
systemctl start v2ray
4.2 查看IP信息
root@vultr:~# curl ipinfo.io
{
"ip": "xxx.xxx.xxx.xxx",
"hostname": "xxx.xxx.xxx.xxx.vultrusercontent.com",
"city": "Piscataway",
"region": "New Jersey",
"country": "US",
"loc": "40.4993,-74.3990",
"org": "AS20473 The Constant Company, LLC",
"postal": "08854",
"timezone": "America/New_York",
"readme": "https://ipinfo.io/missingauth"
}
root@vultr:~# curl -x "socks5://127.0.0.1:40000" ipinfo.io
{
"ip": "104.28.215.137",
"city": "Willowbrook",
"region": "New York",
"country": "US",
"loc": "40.6032,-74.1385",
"org": "AS13335 Cloudflare, Inc.",
"postal": "10314",
"timezone": "America/New_York",
"readme": "https://ipinfo.io/missingauth"
}
Done.
参考链接
Cloudflare WARP :
https://blog.cloudflare.com/warp-technical-challenges/
https://developers.cloudflare.com/warp-client/get-started/linux/
VSP and VPN :
https://iyideng.net/black-technology/cgfw/vmess-v2ray-server-building-and-using-tutorial.html
Config WARP and proxy :
https://iecho.cc/2023/03/27/apply-cloudflare-warp-for-v2ray-shadowsocks-outbound-connections/
https://www.jinhuaiyao.com/posts/unlocking-chatgpt-with-cloudflare-warp/