借助Cloudflare Warp 解决OpenAI访问受限问题

AI 摘要: Cloudflare Warp是一种虚拟专用网络(VPN)服务,可以提供安全、快速和可靠的访问互联网。通过简单易用的客户端应用程序,用户可以更安全、更私密地浏览互联网,并获得更快的连接速度和稳定的连接。在CentOS 8下安装Warp可通过新增Cloudflare仓库地址的方式进行。安全问题需要注意明文信息可能泄露,应配置仅特定Web Host走Cloudflare出口并限制对外开放Socks端口。

1. 有关 cloudflare 使用介绍

背景: ChatGPT 访问受阻,遇到"access denied you do not have access to chat.openai.com",问题,通过出口 IP 走 warp 后可以正常访问到 OpenAI 服务

解决参考: https://github.com/haoel/haoel.github.io#6-针对-ip-被封的解决方案

2. Cloudflare Warp 客户端

Cloudflare Warp 是由 Cloudflare 提供的一种虚拟专用网络(VPN)服务,旨在通过安全、快速和可靠的方式提供对互联网的访问。 它可以在移动设备和桌面操作系统上使用,并提供简单易用的客户端应用程序。使用 Cloudflare Warp,用户可以更安全、更私密地浏览互联网,防止数据被拦截、窃取或篡改。同时,Warp 还提供了更快的互联网连接速度和更稳定的连接,以确保用户的体验得到最大化的优化。

参考: https://developers.cloudflare.com/warp-client/

3. CentOS 8 下 Warp 安装 (包含客户端、服务)

参考: https://developers.cloudflare.com/warp-client/get-started/linux/

3.1. 通过 CentOS 新增 cloudflare 仓库地址(推荐)

1
2
3
4
5
6
7
8
# Add cloudflare-warp.repo to /etc/yum.repos.d/
curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo

# Update repo
sudo yum update -y

# Install
sudo yum install cloudflare-warp -y

3.2. 通过指定版本的 rpm 包安装

1
2
3
4
5
6
7
# 下载rpm包,安装cloudflare资源
sudo rpm -ivh https://pkg.cloudflareclient.com/cloudflare-release-el8.rpm

# yum 安装
yum list reposlist
yum search cloudflare
yum install cloudflare-warp

4. warp-svr 服务查看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 查看服务状态
[root@VM-16-15-centos ~]# systemctl status warp-svc.service
● warp-svc.service - Cloudflare Zero Trust Client Daemon
   Loaded: loaded (/etc/systemd/system/warp-svc.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-04-05 10:07:21 CST; 4h 25min ago
 Main PID: 229488 (warp-svc)
    Tasks: 13 (limit: 10786)
   Memory: 38.5M
   CGroup: /system.slice/warp-svc.service
           └─229488 /bin/warp-svc

# 查看服务日志
[root@VM-16-15-centos ~]# journalctl -u warp-svc.service -f
-- Logs begin at Tue 2023-04-04 23:54:25 CST. --
Apr 05 14:31:24 VM-16-15-centos warp-svc[229488]: 2023-04-05T06:31:24.720Z DEBUG boringtun::noise: Received handshake_response local_idx=12934994 remote_idx=59554

5. warp-cli 客户端工具: warp 的关键几个步骤

走 warp 代理基本的步骤: register -> set-mode proxy模式 -> connect,就可以启动一个本地 127.0.0.1:4000 的 socks 监听端口了

  1. register:向 WARP API 注册,替换任何现有的注册(在第一次连接之前必须运行)。
  2. connect:尽可能连接到 WARP(别名:enable-always-on)。
  3. disconnect:断开与 WARP 的连接(别名:disable-always-on)
  4. delete:删除当前的注册。
  5. set-mode:设置模式。
1
2
3
4
5
6
7
8
# warp-cli -h 信息查看
settings:检索当前应用程序的设置
status:请求守护程序发送当前状态。
warp-stats:检索当前 WARP 连接的统计信息。
warp-dns-stats:检索当前 WARP 连接的 DNS 统计信息。
account:显示与当前注册相关联的帐户。
devices:显示与当前注册相关联的设备列表。
network:显示当前的网络信息。

5.1. warp服务器启动后,proxy注册操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
warp-cli register
warp-cli set-mode proxy
warp-cli connect

# 查看配置
warp-cli settings
...
Mode: WarpProxy on port 40000
...

# 检测出口IP
curl -x socks5h://127.0.0.1:40000 ipinfo.io

6. Warp 模式设置为本地 Socks 代理(重要)

因为通过 warp 做 Socks 代理屏蔽源 IP,所以这里模式默认选择proxy,后续 connect 启动后会在本地启动一个监听 4000 的 Socks 端口

当 WARP 配置为本地代理时,只有配置为使用代理(HTTPS 或 SOCKS5)的应用程序才会通过 WARP 发送其流量。

这使您可以选择要加密的流量——例如,您的网络浏览器或特定应用程序,而其他所有内容都不会加密,将通过常规 Internet 连接发送,

参考 proxy 模式说明: https://developers.cloudflare.com/warp-client/warp-modes/#warp-via-local-proxy

补充说明: 1.1.1.1 是 Cloudflare 的公共 DNS 解析器,它还提供了一种快速且私密的方式来浏览 Internet。它还通过 HTTPS 上的 DNS (DoH) 或 TLS 上的 DNS (DoT) 提供 DNS 加密服务,以提高安全性和隐私性。

7. Cloudflare 是如何工作的

参考: https://developers.cloudflare.com/fundamentals/get-started/concepts/how-cloudflare-works/

简单说就是 cloudflare 通过1.1.1.1的 DNS 域名解析,返回了一个 cloudflare 的边缘节点,针对代理主机名的请求都将首先发送到 Cloudflare,然后再转发到您的源服务器, 在性能上 cloudflare 可以通过边缘节点加速,在安全上可以通过 WAF 安全控制、DDos 防护,可靠性上提供了分布式的就近节点访问

由于 Cloudflare 的工作方式,源服务器的所有流量都来自 Cloudflare IP 地址(IP 地址范围: https://www.cloudflare.com/zh-cn/ips/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 通过ipinfo.io查看,以及对比就可以发现端倪 https://www.cloudflare.com/ips-v4
...
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
...

# 后续再配置号了warp后
$ curl -x socks5h://127.0.0.1:40000 ipinfo.io
{
  "ip": "104.28.227.189",
  "city": "Los Angeles",
  "region": "California",
  "country": "US",
  "loc": "34.0522,-118.2437",
  "org": "AS13335 Cloudflare, Inc.",
  "postal": "90009",
  "timezone": "America/Los_Angeles",
  "readme": "https://ipinfo.io/missingauth"
}

后续的链路就变成了: webBrowers --> SSH Client (local socket5) --> Remote Host (sshd) --> WARP (127.0.0.1:4000) --> Cloudflare CDN --> OpenAI

8. 安全问题

因为所有流量都是通过 Cloudflare 出口的,如果是明文信息通过 Cloudflare 出口有可能存在泄露问题,可以考虑通过使用PAC配置仅特定 Web Host 走 Cloudflare 出口(比如仅 OpenAI 的请求),其他请求仍然走默认的网络。

另外一点就是,尽量不要对外开放 Cloudflare 监听的 Socks 端口,有可能会成为其他的跳板机的可能。

9. 小结

简要介绍了 cloudflare wrarp 的基本安装流程,实际上 Cloudflare Warp 的 Socks 代理,就是在本地提供了一个 Socks 端口,支持网络请求多代理了一层,从而可以实现其他地域 IP 代理的访问可能。

虽然 Cloudflare 也支持网络链路优化,同时能够实现 IP 代理访问,在使用过程中安全防护也是需要注意的点。