最近有个做跨境电商的好朋友,她和我说他们为了给自己的独立站引流,需要在YouTube上面做一下视频。但是机场非常不稳定,时不时就跑路了。问我有没有好的方案可以给到她。刚我我最近在折腾企业内网服务器,为了给员工提供一个科学上网的环境,也有类似的需求。今天这期教程利用前几天macpro垃圾桶装的All In One企业服务器来完成cloudflare优选IP,达到网站及油管加速的目的。
本机教程不涉及科学上网服务器搭建,主要探讨网络链路优化相关,请自行学习了解。
本期主要操作有三部分,我们开始
第一部分:cloudflare优选相关
一、内网服务器,软路由,飞牛OS,群晖配置定时优选脚本,找出cloudflare访问最快的服务器
1.下载我这边做了一些额外配置的优选工具,我提供版本只适合linux环境使用,点击下载地址
https://images.39.la/2024/11/cloudflare-1.zip
2.解压后打开文件夹,编辑speed.sh,红色文字部分需要依据CLoudflare的账户信息,及域名信息配置
#!/bin/bash
export LANG=zh_CN.UTF-8
auth_email="" #你的CloudFlare注册账户邮箱
auth_key="" #你的CloudFlare账户key,位置在域名概述页面点击右下角获取api key。
zone_name="39.la" #你的主域名
record_name="cl" #自动更新的二级域名前缀,例如cloudflare的cdn用cl,gcore的cdn用gcore,后面是数字,程序会自动添加。二级域名需要已经在域名管理网站配置完成。
record_count=5 #二级域名个数,例如配置5个,则域名分别是cl1、cl2、cl3、cl4、cl5. 后面的信息均不需要修改。
echo
echo '你的IP地址是'$(curl 4.ipw.cn)',请确认为本机未经过代理的地址'
echo '起点爱分享:https://www.39.la'
./CloudflareST -url https://speed.cloudflare.com/__down?bytes=500000000 #默认会访问cloudflare的测试下载文件,如果去掉-url后面的默认不测速,只取ping值
record_type="A"
#获取zone_id、record_id
zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
#echo $zone_identifier
sed -n '2,20p' result.csv | while read line
do
#echo $record_name$record_count'.'$zone_name
record_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name$record_count"'.'"$zone_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
#echo $record_identifier
#更新DNS记录
update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"type\":\"$record_type\",\"name\":\"$record_name$record_count.$zone_name\",\"content\":\"${line%%,*}\",\"ttl\":60,\"proxied\":false}")
#反馈更新情况
if [[ "$update" != "${update%success*}" ]] && [[ "$(echo $update | grep "\"success\":true")" != "" ]]; then
echo $record_name$record_count'.'$zone_name'更新为:'${line%%,*}'....成功'
else
echo $record_name$record_count'.'$zone_name'更新失败:'$update
fi
record_count=$(($record_count-1)) #二级域名序号递减
echo $record_count
if [ $record_count -eq 0 ]; then
break
fi
done
3.修改完后给执行权限
chmod +x speed.sh
二:cloudflare域名解析
登陆cloudflare账户,进入zone_name=”39.la”这个域名dns,如果你的record_name=”cl”,record_count=5那就先在39.la的dns记录里,增加cl1.39.la,cl2.39.la,cl3.39.la,cl4.39.la,cl5.39.la的A记录解析,敲黑板,这里不开启小云朵加速。
三、测试执行代码
飞牛os,ssh切到cloudflare加速目录,运行
./speed.sh
测试运行成功的记录如下:
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)
172.67.74.125 4 4 0.00 189.83 20.78
162.159.152.212 4 4 0.00 186.00 20.26
104.20.28.231 4 4 0.00 190.15 19.57
104.26.5.75 4 4 0.00 188.90 19.02
104.20.68.105 4 4 0.00 188.83 16.08
104.20.76.40 4 4 0.00 189.66 15.84
162.159.137.131 4 4 0.00 190.54 6.47
172.67.78.94 4 4 0.00 188.91 4.74
104.20.26.2 4 4 0.00 189.29 2.52
172.64.232.167 4 4 0.00 186.71 0.24
完整测速结果已写入 result.csv 文件,可使用记事本/表格软件查看。
cf5.39.la更新为:172.67.74.125....成功
4
cf4.39.la更新为:162.159.152.212....成功
3
cf3.39.la更新为:104.20.28.231....成功
2
cf2.39.la更新为:104.26.5.75....成功
1
cf1.39.la更新为:104.20.68.105....成功
过两分钟可以ping cf1.39.la,看看ip是否已经更新成了刚优选的IP地址。
四、计划任务定时执行代码,及时优选IP,保证服务可达
定时跑脚本做IP优选,众所周知原因,cloudflare的IP经常失效,所以我们要定期做IP优选,并自动更新域名ip地址,所以我们需要在飞牛os里开启计划任务。因为飞牛os目前未提供计划任务面板,我们需要通过cron
tab的方式做
具体实现方式如下实现方式:
ssh登陆飞牛
输入crontab -e
命令来编辑当前用户的crontab
文件。
在打开的编辑器中,添加以下行:
0 9-23 * * * /path/to/your/speed.sh #每天9-23点,每隔一个小时执行一次脚本
至此IP优选阶段的任务已经完成。
第二部分,落地节点的配置
具体节点的安装不在我的讲解范围,不会的自行查找。我用的xui面板做落地节点。采取的是vmess+ws+本机做反向代理+cloudflareCDN 的形式提供服务。说起来复杂,做起来简单,可以看视频演示。
演示落地节点我用的是cloudcone的一个吃灰小VPS,安装好xui面板,然后依据我给的配置截图增加一个vmess协议环境,
1.xui面板添加
端口任意,选择ws传输协议,然后点击添加即可。
2、宝塔面板做反向代理
未来给cloudflare做加速,所以我们需要在本机用nginx ws反代vmess,然后再提供给cloudflare做加速
添加网站,主机名选择一个需要cloudflare加速的域名,要与刚才优选的域名做区别,这里我选择cm。
目标这里http://127.0.0.1:42837的端口号就是刚才xui面板vmess的端口号
至此宝塔面板的工作就结束了,后面再cloudflare增加一个cm域名的解析,ip指向宝塔面板,这里要开启小云朵了
[…] 我收集的可以用的cloudfront的IP库如下,替换cloudflare的ip.txt内的IP即可,优选方法参考这篇文章:https://www.39.la/article/152 […]