本帖最后由 好鸭 于 2022-5-23 03:23 编辑
参考这个https://developers.cloudflare.com/fundamentals/get-started/setup/allow-cloudflare-ip-addresses/
首先,要确定有iptables和ip6tables,自己搞定喔
然后,iptables创建一个链
- iptables -N CLOUDFLARE
- ip6tables -N CLOUDFLARE
复制代码
让INPUT引用
- iptables -A INPUT -j CLOUDFLARE
- ip6tables -A INPUT -j CLOUDFLARE
复制代码
然后把CF的IP加进链里
- for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
- iptables -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
- done
- for ip in `curl -s https://www.cloudflare.com/ips-v6`;do
- ip6tables -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
- done
复制代码
不允许其他
- iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
- ip6tables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码
搞过一次之后,也就是定时执行的脚本如下(下面可以不做)
清空链,然后重新加一遍IP
以下保存为脚本,定时执行即可
- #先删掉"不允许所有",避免在下面命令执行期间GG
- iptables -D INPUT -p tcp -m multiport --dport http,https -j DROP
- ip6tables -D INPUT -p tcp -m multiport --dport http,https -j DROP
- #清除规则(旧的CF IP)
- iptables -F CLOUDFLARE
- ip6tables -F CLOUDFLARE
- #添加CF IP,下面可以对curl的结果做一次判断,可以避免网络问题可能出现的问题,自己写
- for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
- iptables -A CLOUDFLARE -s $i -j ACCEPT
- done
- for ip in `curl -s https://www.cloudflare.com/ips-v6`;do
- ip6tables -A CLOUDFLARE -s $i -j ACCEPT
- done
- mkdir -p /etc/iptables/
- iptables-save > /etc/iptables/rules.v4
- ip6tables-save > /etc/iptables/rules.v6
- #禁用其他IP
- iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
- ip6tables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码
管杀管埋
不玩了,清空上面设置过的规则
- iptables -F CLOUDFLARE
- ip6tables -F CLOUDFLARE
- iptables -D INPUT -j CLOUDFLARE
- ip6tables -D INPUT -j CLOUDFLARE
- iptables -X CLOUDFLARE
- ip6tables -X CLOUDFLARE
- iptables -D INPUT -p tcp --dport http,https -j DROP
- ip6tables -D INPUT -p tcp --dport http,https -j DROP
- > /etc/iptables/rules.v4
- > /etc/iptables/rules.v6
复制代码
补上iptables规则持久化的设置,以免重启后就无了
- #保存规则
- mkdir -p /etc/iptables/
- iptables-save > /etc/iptables/rules.v4
- ip6tables-save > /etc/iptables/rules.v6
复制代码
- #引用规则
- iptables-restore < /etc/iptables/rules.v4
- ip6tables-restore < /etc/iptables/rules.v6
复制代码
以上保存规则设置到关机执行的命令(也可以不用),引用规则设置到开机执行的命令。或者网卡关闭和启动。
还有,上面整完新的CF IP后要保存一下规则(我已经写上去了)
以上没测试,但是应该差不多就是这样 测试过了,OK的
来一份简化的,只要IPV4,只设置一次
- iptables -N CLOUDFLARE
- iptables -A INPUT -j CLOUDFLARE
- for ip in `curl -s https://www.cloudflare.com/ips-v4`;do
- iptables -A CLOUDFLARE -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
- done
- iptables -A INPUT -p tcp -m multiport --dport http,https -j DROP
复制代码
iptables持久化一定要做,不然重启就没了
比如ubuntu可以安装iptables-persistent,规则保存在(默认)/etc/iptables/rules.v4
centos不知道,好像自带吧,执行service iptables save
- sudo apt install iptables-persistent
- iptables-save > /etc/iptables/rules.v4
复制代码
|