物料准备:获得国家ip段,地址:http://www.ipdeny.com/ipblocks/
- 安装 ipset
- Debian或ubuntu:
apt-get -y install ipset
- centos:
yum -y install ipset
- 创建规则
#创建一个名为cnip的规则
ipset -N cnip hash:net
#下载国家IP段
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
#将IP段添加到cnip规则中
for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done
- 开始屏蔽
iptables -I INPUT -p tcp -m set --match-set cnip src -j DROP
- 解除屏蔽
#-D为删除规则 iptables -D INPUT -p tcp -m set --match-set cnip src -j DROP
2023.02.17更新
将ip段加入白名单
- 清空之前规则
#防止设置不生效,建议清空下之前的防火墙规则
iptables -P INPUT ACCEPT
iptables -F
#放行IP段(还是以中国ip为例)
iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT
#关掉所有端口(谨慎操作)
iptables -P INPUT DROP
#关闭指定端口,比如80/443
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
- 清除规则
#将参数里的-A改成-D就是删除规则了,如
iptables -D INPUT -p tcp -m set --match-set cnip src -j ACCEPT
iptables -D INPUT -p tcp --dport 443 -j DROP
参考文章: