使用 Cloudflare One (Zero Trust) WARP 组网
注册账号,配置 Team
Get started · Cloudflare One docs
确保已经注册了 Cloudflare 账号:
在 Cloudflare One 页面的左侧菜单栏,点击
Settings在右边的选项卡中选择
Team nameEdit 设置团队名称,Save 保存
【可选】创建账户级别 API token
点击展开
Create API token · Cloudflare Fundamentals docs
API Tokens | Cloudflare
Account API tokens · Cloudflare Fundamentals docs
进入账户主页:
- https://dash.cloudflare.com/
- 选择左侧菜单
Manage account>Account API tokens - 点击右侧的
Create token - 点击
Create Custom Token右侧的Get started - 填写
Token name - 添加
Permissions:Account>Cloudflare One Connector: WARP>EditAccount>Cloudflare One Connector: cloudflared>EditAccount>Account: SSL and Certificates>EditAccount>Zero Trust>Edit- 注意不要误选成
Cloudforce One
- 点击
Continue to summary - 点击
Create Token
测试 token 是否可用:
curl "https://api.cloudflare.com/client/v4/accounts/<your-account-id>/tokens/verify" -H "Authorization: Bearer <your-api-token>"- 将
<your-account-id>替换为账户 ID - 将
<your-token>替换为刚创建的 token
输出形如:
{"result":{"id":"...","status":"active"},"success":true,"errors":[],"messages":[{"code":10000,"message":"This API Token is valid and active","type":null}]}安装 WARP 客户端
pkg.cloudflareclient.com
添加 cloudflare gpg key:
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg添加 cloudflare apt 源:
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安装 cloudflare-warp:
sudo apt-get update && sudo apt-get install -y cloudflare-warp查看是否安装成功:
which warp-cli创建根证书,并激活
User-side certificates · Cloudflare One docs
- Cloudflare One >
Traffic policies>Traffic settings - 在右边的选项中选择
Certificates - 点击下面的
Generate certificate - 会弹出
Expiration,默认是5 years (recommended),可以改成Custom并设置为10000天(约为27年5个月)
页面会显示这个新创建的证书,点击右侧的 ⋮,选择 Activate 以激活。过一会会显示 AVAILABLE,表示已激活。
安装根证书
Install certificate using WARP · Cloudflare One docs
Install certificate manually · Cloudflare One docs
使用 WARP 安装证书:
- Cloudflare One >
Team & Resources>Devices - 在右边的选项卡中选择
Management>Global WARP settings - 开启
Install CA to system certificate store右侧的按钮,并Confirm
安装 WARP 客户端(这里),注册设备(这里)。然后 WARP 会默认自动下载所有可用的根证书。
更新自定义 CA 证书:
sudo update-ca-certificates查看证书是否安装成功:
ls -l /usr/local/share/ca-certificates | grep -E 'managed-warp' || true输出形如:
lrwxrwxrwx 1 root root 49 1月 5 16:41 managed-warp.crt -> /usr/local/share/ca-certificates/managed-warp.pem
-rw-r--r-- 1 root root 1143 1月 5 16:41 managed-warp.pem确保同时存在 managed-warp.pem 和 managed-warp.crt(符号链接)。
【可选】设置设备注册权限
点击展开
Device enrollment permissions · Cloudflare One docs
- Cloudflare One >
Team & Resources>Devices - 在右边的选项卡中选择
Management>Device Enrollment - 找到
Device enrollment permissions,点击右侧的Manage - 在
Policies选项卡下面,点击Add a policy
会弹出一个新的 Add policy 页面:
- 设置
Policy name Add rules中,在Include(OR) 中,Selector 中选择Emails,Value 中填写允许的邮箱地址- 点击页面底部的
Save保存 - 此时
Policies页面就会显示这个新添加的策略
启用策略:
- 点击
Select existing policy,勾选这个新策略,点击Confirm - 此时页面
Policy details中会显示已启用的策略,点击右下角的Save保存
禁用策略:
- 点击
Select existing policy,取消勾选这个新策略,点击Confirm
为了避免后续的一些潜在的权限问题,可以先不启用策略。如果出现连接问题,比如无法 ping 通,可以尝试删除策略。
注册设备到 Team
Manual deployment · Cloudflare One docs
warp-cli registration new <your-team>如果命令行环境不适合打开浏览器,或者不方便登录账户,可以参考 Troubleshoot missing registration 中的步骤。
在已经登录了账户的电脑上,用浏览器打开登录页:
https://<your-team>.cloudflareaccess.com/warp- 这里的
<your-team>替换成上面团队名称 - 填写邮箱地址和收到的验证码
- 登录成功应当显示
Success!
然后右键选择 查看网页源代码,搜索 url=com.cloudflare.warp,找到形如下面的注册链接:
url=com.cloudflare.warp://<your-team>.cloudflareaccess.com/auth?token=eyJ...复制 token= 后面的内容,然后运行下面的命令:
warp-cli registration token "com.cloudflare.warp://<your-team>.cloudflareaccess.com/auth?token=..."- 如果显示
Error(401): Unauthorized,说明 token 已经过期,需要重新获取。刷新页面即可 - 如果显示
Successs,表示注册成功
查看注册状态:
warp-cli registration show查看所属组织:
warp-cli registration organization删除当前已注册设备:
warp-cli registration delete配置 P2P 连接性
Create private networks with WARP-to-WARP · Cloudflare One docs
Cloudflare One > Team & Resources > Devices:
在右边的选项卡中选择
Management>Peer-to-peer connectivity开启
Allow all Cloudflare One traffic to reach enrolled devices右侧的按钮这个会运行 Cloudflare 将流量路由到 CGNAT IP 空间
同时,在
Your Deivices选项卡中可以看到已注册的设备列表以及
Last active device profile,默认是Default
Cloudflare One > Traffic policies > Traffic settings:
- 开启
Allow Secure Web Gateway to proxy traffic右边按钮 - 并且勾选
UDP (recommended)和ICMP (recommended)
配置 Split tunnel
Split Tunnels · Cloudflare One docs
Cloudflare One > Team & Resources > Devices:
- 在右边的选项卡中选择
Device profiles - 默认是
Default,点开后再点击Edit - 向下滚动到 Split Tunnels
- 选择模式类型:
Exclude IPs and domains:(默认) 除了指定的 IP 和域名外,所有流量都将发送到 Cloudflare GatewayInclude IPs and Domains:只有发往指定的 IP 地址或域名的流量才会发送到 Cloudflare Gateway,所有其他流量将绕过 Gateway
- 这里选择 Include 模式,确保其他流量不受影响
- 由于默认的是 Exclude 模式,在更改为 Include 时会弹出警告,需要点击
Confirm and delete - 点击 Split Tunnels 右侧的
Manage Selector选择IP Address,Value填写100.96.0.0/12Selector选择Domain,Value填写<your-team>.cloudflareaccess.com- 点击
Save destination,右侧就会出现新添加的规则
- 由于默认的是 Exclude 模式,在更改为 Include 时会弹出警告,需要点击
- 点击页面底部右下角
Save profile保存。
运行:
warp-cli --accept-tos connect查看状态:
warp-cli status输出形如:
Status update: Connected
Network: healthy查看 IP 地址
查看本机 IP 地址:
ip -br a | grep -E '100\.96\.'或者是:
ip -br a | grep CloudflareWARP在机器 X 中输出形如:
CloudflareWARP UNKNOWN 100.96.0.1/32 2606:****:****:****::1/128 fe80::****:****:****:****/64在机器 A 中输出形如:
CloudflareWARP UNKNOWN 100.96.0.2/32 2606:****:****:****::2/128 fe80::****:****:****:****/64编辑 /etc/hosts:
sudo nano /etc/hosts在机器 X (100.96.0.1) 上添加机器 A (100.96.0.2) 的记录:
100.96.0.2 A-warp在机器 A (100.96.0.2) 上添加机器 X (100.96.0.1) 的记录:
100.96.0.1 X-warp(可选)同时添加规则:
sudo iptables -I INPUT -i CloudflareWARP -p icmp -j ACCEPT注意
- 如果
warp-cli registration delete后再warp-cli registration new,可能会导致 IP 地址变更。 - 如果其中有一台机器在防火墙后,比如 PVE 中的 VM,需要将 pve 和 VM 的防火墙均关闭。
【可选】配置 connector 和 route
点击展开
Cloudflare One > Networkds > Connectors:
- 在右边的选项卡中选择
Cloudflare Tunnels - 点击
Create a tunnel - 在 Select your tunnel type 中,选择
WARP Connector,点击Select WARP Connector - 开启
Allow WARP to WARP connection右侧的按钮 - 开启
Assign a unique IP address to each device右侧的按钮 - 点击
Next step - 填写
Tunnel name,点击Create tunnel - 选择操作系统
Debian/Ubuntu,复制命令并运行
复制命令,并运行:
cloudflare-warp在上面已经安装过了,直接执行后续步骤开启 IP 转发:
shsudo sysctl -w net.ipv4.ip_forward=1运行 connector:
shwarp-cli connector new eyJ...如果出现报错
Error: Old registration is still around. Try running: "warp-cli registration delete",这是因为之前已经以用户身份注册过设备,而现在是以 connector 身份注册。需要先运行:
shwarp-cli registration delete再运行:
shwarp-cli connector new eyJ...shwarp-cli connect
查看当前 WARP 设备的 IP:
ip -br a | grep CloudflareWARP注意,两台机器需要创建两个 tunnel。
Cloudflare One > Networkds > Routes:
- 在右边的选项卡中选择
CIDR - 点击
Add CIDR route CIDR选择10.250.0.1/32,Tunnel选择机器 X 的 Tunnel,点击CreateCIDR选择10.250.0.2/32,Tunnel选择机器 A 的 Tunnel,点击Create
查看配置的 Include 的规则:
warp-cli settings | sed -n '/Include mode/,/Fallback domains/p'