背景

这几天调试服务器,偶然发现国内的主要服务器被服务商给屏蔽了几乎所有的 IPv4 海外流量,但又有业务依赖 Cloudflare Tunnel 来实现,于是尝试强制连接到 Cloudflare Tunnel 的 IPv6 边缘节点来解决这一问题。

1. 正常安装 Cloudflare Tunnel 服务

这里只需要按照 Cloudflare 原本的教程进行安装就可以了。

如果你不幸在把 Cloudflare Tunnel 安装为服务时卡在了初始化,不必担心,按下 Ctrl+C 强制结束进程。

2. 修改 cloudflared.service

使用你喜欢的文本编辑器打开 /etc/systemd/system/cloudflared.service,不出意外的话,它应该长下面这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=cloudflared
After=network-online.target
Wants=network-online.target

[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --token <TOKEN>
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

我们修改 ExecStart 这一项,把它改成下面这个样子:

1
ExecStart=/usr/bin/cloudflared --no-autoupdate --edge-ip-version 6 tunnel run --token <TOKEN>

退出,保存。

3. 重启 Cloudflared

依次运行以下命令:

1
2
sudo systemctl daemon-reload
sudo systemctl restart cloudflared

不出意外,我们已经成功通过 IPv6 连接到 Cloudflare Tunnel 的边缘节点了。

你可以使用 sudo systemctl status cloudflared 查看服务状态。