说明

之前有人免费提供解析Cloudflare_IP的域名,但很快就被DNS污染了,因此此教程适合自己使用不建议分享。实现的原理很简单,第一使用CloudflareSpeedTest程序进行测速,选出质量高的IP地址;第二使用免费ddns将域名解析到优选的IP;第三使用cron定时执行任务。脚本适用amd64、arm64、arm架构的Linux服务器,安卓手机Termux使用需要做一定的修改,请点击目录直接查看内容。

Dynv6

需要借助Dynv6来获取免费域名和ddns,hostname是注册的二级域名,token位于网站首页左上角Documentation-> APIs页面内,空格之后的不要。两项复制之后在脚本执行后按提示输入即可。

自定义

echo "0 0 * * * timeout 10m $path/bestip.sh > /dev/null 2>&1" | crontab -
双引号内的内容是定时执行命令,为每日0时。
$path/CloudflareST -f $path/ip.txt -tl 200 -sl 6 -dn 5 -dt 10 -o "bestip"
CloudflareST的使用可参考,以上为选择时延小于200ms的IP进行测试,每个测试10秒限制6mb/s以上,得到5个合格IP。
ipv6=$(grep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b" $path/bestip | head -1)
如果对ipv6有需求,请将ip.txt改为ipv6.txt,并将脚本内的ipv4改为ipv6。

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/sh

check_() {
# 检查服务器架构
architecture=$(uname -m)
case $architecture in
x86_64)
platform="amd64"
;;
aarch64)
platform="arm64"
;;
arm*)
platform="armv7"
;;
*)
echo "脚本不支持 $architecture"
exit 1
;;
esac
}

first_() {
# 下载测速工具并定时每日0点执行
mkdir -p $path && cd $path
latest_release=$(curl -s https://api.github.com/repos/XIU2/CloudflareSpeedTest/releases/latest | grep "tag_name" | awk '{print $2}' | tr -d '",')
download_url="https://github.com/XIU2/CloudflareSpeedTest/releases/download/$latest_release/CloudflareST_linux_$platform.tar.gz"
curl -LO $download_url || exit 1
tar -xvf CloudflareST_linux_$platform.tar.gz && rm CloudflareST_linux_$platform.tar.gz && chmod +x CloudflareST
echo "0 0 * * * timeout 10m $path/bestip.sh > /dev/null 2>&1" | crontab -
read -p "请输入 hostname:" hostname
read -p "请输入 token:" token
}

start_() {
# 测速并更新IP
cat <<EOF > $path/bestip.sh
#!/bin/sh

$path/CloudflareST -f $path/ip.txt -tl 200 -sl 6 -dn 5 -dt 10 -o "bestip"
ipv4=\`grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" $path/bestip | head -1\`
curl -Ls "http://dynv6.com/api/update?hostname=$hostname&token=$token&ipv4=\$ipv4"
EOF
chmod +x $path/bestip.sh && timeout 10m $path/bestip.sh
}

path="/opt/CloudflareST"
check_
first_
start_
exit

Termux

手机使用不必设置定时,mkdir bestip && cd bestip后执行脚本即可。之后每次执行cd bestip && ./bestip.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh

first_() {
# 下载测速工具
latest_release=$(curl -s https://api.github.com/repos/XIU2/CloudflareSpeedTest/releases/latest | grep "tag_name" | awk '{print $2}' | tr -d '",')
download_url="https://github.com/XIU2/CloudflareSpeedTest/releases/download/$latest_release/CloudflareST_linux_arm64.tar.gz"
curl -LO $download_url || exit 1
tar -xvf CloudflareST_linux_arm64.tar.gz && rm CloudflareST_linux_arm64.tar.gz && chmod +x CloudflareST
read -p "请输入 hostname:" hostname
read -p "请输入 token:" token
}

start_() {
# 测速并更新IP
cat <<EOF > bestip.sh
#!/bin/sh

./CloudflareST -tl 200 -sl 6 -dn 5 -dt 10 -o "bestip"
ipv4=\`grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" bestip | head -1\`
curl -Ls "http://dynv6.com/api/update?hostname=$hostname&token=$token&ipv4=\$ipv4"
EOF
chmod +x bestip.sh && ./bestip.sh
}

first_
start_
exit