全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1695|回复: 11

小鸡iptables只允许cloudflareip

  [复制链接]
发表于 2022-4-25 14:41:12 | 显示全部楼层 |阅读模式
本帖最后由 好鸭 于 2022-5-23 03:23 编辑

参考这个https://developers.cloudflare.com/fundamentals/get-started/setup/allow-cloudflare-ip-addresses/


首先,要确定有iptables和ip6tables,自己搞定喔


然后,iptables创建一个链
  1. iptables -N CLOUDFLARE
  2. ip6tables -N CLOUDFLARE
复制代码


让INPUT引用
  1. iptables -A INPUT -j CLOUDFLARE
  2. ip6tables -A INPUT -j CLOUDFLARE
复制代码


然后把CF的IP加进链里
  1. for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
  2. iptables  -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
  3. done
  4. for ip in `curl -s https://www.cloudflare.com/ips-v6`;do
  5. ip6tables  -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
  6. done
复制代码


不允许其他
  1. iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
  2. ip6tables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码


搞过一次之后,也就是定时执行的脚本如下(下面可以不做)
清空链,然后重新加一遍IP
以下保存为脚本,定时执行即可

  1. #先删掉"不允许所有",避免在下面命令执行期间GG
  2. iptables -D INPUT -p tcp -m multiport --dport http,https -j DROP
  3. ip6tables -D INPUT -p tcp -m multiport --dport http,https -j DROP
  4. #清除规则(旧的CF IP)
  5. iptables -F CLOUDFLARE
  6. ip6tables -F CLOUDFLARE
  7. #添加CF IP,下面可以对curl的结果做一次判断,可以避免网络问题可能出现的问题,自己写
  8. for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
  9. iptables -A CLOUDFLARE -s $i -j ACCEPT
  10. done
  11. for ip in `curl -s https://www.cloudflare.com/ips-v6`;do
  12. ip6tables -A CLOUDFLARE -s $i -j ACCEPT
  13. done
  14. mkdir -p /etc/iptables/
  15. iptables-save > /etc/iptables/rules.v4
  16. ip6tables-save > /etc/iptables/rules.v6
  17. #禁用其他IP
  18. iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
  19. ip6tables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码



管杀管埋
不玩了,清空上面设置过的规则
  1. iptables -F CLOUDFLARE
  2. ip6tables -F CLOUDFLARE
  3. iptables -D INPUT -j CLOUDFLARE
  4. ip6tables -D INPUT -j CLOUDFLARE
  5. iptables -X CLOUDFLARE
  6. ip6tables -X CLOUDFLARE
  7. iptables -D INPUT -p tcp --dport http,https -j DROP
  8. ip6tables -D INPUT -p tcp --dport http,https -j DROP
  9. > /etc/iptables/rules.v4
  10. > /etc/iptables/rules.v6
复制代码



补上iptables规则持久化的设置,以免重启后就无了
  1. #保存规则
  2. mkdir -p /etc/iptables/
  3. iptables-save > /etc/iptables/rules.v4
  4. ip6tables-save > /etc/iptables/rules.v6
复制代码

  1. #引用规则
  2. iptables-restore < /etc/iptables/rules.v4
  3. ip6tables-restore < /etc/iptables/rules.v6
复制代码


以上保存规则设置到关机执行的命令(也可以不用),引用规则设置到开机执行的命令。或者网卡关闭和启动。
还有,上面整完新的CF IP后要保存一下规则(我已经写上去了)


以上没测试,但是应该差不多就是这样 测试过了,OK的

来一份简化的,只要IPV4,只设置一次

  1. iptables -N CLOUDFLARE
  2. iptables -A INPUT -j CLOUDFLARE
  3. for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
  4. iptables  -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
  5. done
  6. iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码


iptables持久化一定要做,不然重启就没了
比如ubuntu可以安装iptables-persistent,规则保存在(默认)/etc/iptables/rules.v4
centos不知道,好像自带吧,执行service iptables save
  1. sudo apt install iptables-persistent
  2. iptables-save > /etc/iptables/rules.v4
复制代码

发表于 2022-5-3 15:02:20 | 显示全部楼层
沒那么麻烦,参考我的帖子!
https://hostloc.com/thread-937255-1-1.html

四行命令搞定。
发表于 2022-4-25 14:48:35 | 显示全部楼层
感谢分享 zsbd
日美眉 该用户已被删除
发表于 2022-4-25 15:45:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2022-5-3 14:59:16 | 显示全部楼层

支持,收藏了。
发表于 2022-5-3 15:30:40 | 显示全部楼层
有个东西叫ipset,不用像这样加一大堆规则。。。
 楼主| 发表于 2022-5-3 15:58:06 | 显示全部楼层


不是有人说过了吗,我这个能完美清除旧IP添加新IP
发表于 2022-5-3 16:56:06 来自手机 | 显示全部楼层
这个不错,自动更新到防火墙。
发表于 2022-5-3 17:14:28 | 显示全部楼层
好鸭 发表于 2022-5-3 15:58
不是有人说过了吗,我这个能完美清除旧IP添加新IP

几年了都没变过。
 楼主| 发表于 2022-5-3 17:25:20 | 显示全部楼层
xqdoo00o 发表于 2022-5-3 15:30
有个东西叫ipset,不用像这样加一大堆规则。。。

差不多就是简化了自定义链的操作吧。在这里貌似没有简化什么,看起来一堆是因为有ipv4+ipv6
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-28 18:12 , Processed in 0.096392 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表