一个Linux服务器上自动获取CloudFlare节点IP列表并更新ipset合集的脚本

网站接入CloudFlare后,明月一直以来都强烈推荐要在服务器上把CloudFlare节点IP加入到防火墙的白名单里,也就是只允许CloudFlare的节点IP才能回源请求指定的端口,其他IP一律禁止请求,这能大大的保护服务器的安全性,还能提升CloudFlare的安全防护和缓存效率。

一直以来在Linux上都是用iptables+ipset这个基于Linux内核的系统级防火墙的,所以CloudFlare的节点IP都是借助ipset合集来保存的,这就完全可以借助Bash Shell脚本实现定期自动从CloudFlare官网获取最新的IPv4、IPv6节点更新以保证IP加白的及时有效性。

具体代码示例如下所示:

#!/bin/bash

# 从官网检索Cloudflare的边缘节点IP
cloudflare_ip4s=$(curl -s https://www.cloudflare.com/ips-v4/#)
cloudflare_ip6s=$(curl -s https://www.cloudflare.com/ips-v6/#)

# 使用检索到的 IP 更新 ipset 集
ipset flush CloudFlare
for ip in $cloudflare_ip4s; do
    ipset add CloudFlare $ip
done
ipset flush CloudFlare6
for ip in $cloudflare_ip6s; do
    ipset add CloudFlare6 $ip
done
# 显示成功消息
echo "Cloudflare 边缘节点 IP 更新成功!"

注意,要使用上述代码,记得替换里面的CloudFlareCloudFlare6这两个ipset合集名称为自己使用的哦!

另外,还要确保自己的当前服务器的IP是可以正常向CloudFlare官网请求的,明月自己就碰到过国内腾讯云某个服务器IP被CloudFlare标记为恶意威胁造成无法获取IP节点IP列表的尴尬事儿,所以上述代码保存为如:update_cloudflare_ipset.sh文件后,记得执行一下验证是否成功。

先修改这个.sh文件权限为可执行权限:

chmod +x update_cloudflare_ipset.sh

然后执行脚本:

./update_cloudflare_ipset.sh

或者

bash update_cloudflare_ipset.sh

如果运行结果出现:

Cloudflare 边缘节点 IP 更新成功!

即表明没有问题,可以加入crontab定时任务里定期运行,自动更新了。

crontab -e #编辑定时任务

0 0 * * 0 /bin/bash /脚本的绝对路径/update_cloudflare_ipset.sh #新增一行定时任务,每周执行一次。

最后,给大家强调一下,国内备案网站、服务器是可以使用CloudFlare的,并且绝对不会掉备案的,不要被某些人的谣言给蒙骗了,,国内备案代维客户现在基本都已经接入CloudFlare了,都在享受着免费的防御CC/DDoS 攻击和缓存加速,毫无压力。奉劝大家少上点儿国内某些推销高防CDN、服务器群体的当吧,弄不好你网站所谓的 CC/DDoS 攻击就是他们干的,目的就是让你上套。

 

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

除特别注明外,本站所有文章均基于CC-BY-NC-SA 4.0原创,转载请注明出处。
文章名称:《一个Linux服务器上自动获取CloudFlare节点IP列表并更新ipset合集的脚本》
文章链接:https://www.xlin.cn/xlbk/21769.html
分享到: 更多 (0)

热门文章

评论 抢沙发

切换注册

登录

忘记密码 ?

切换登录

注册