centos 使用iptables实现只允许中国IP访问服务器或者禁止访问
安装ipset
#Debian/Ubuntu系统
apt-get -y install ipset
#CentOS系统
yum -y install ipset
CentOS 7还需要关闭firewall防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
清空之前的规则
防止设置不生效,建议清空下之前的防火墙规则
iptables -P INPUT ACCEPT
iptables -F
创建新规则
#创建一个名为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
设置IP段白名单
#放行IP段
iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT
#关掉所有端口
iptables -P INPUT DROP
这时候就只有中国的IP能访问服务器了。
禁止规则内的ip访问
iptables -A INPUT -p tcp -m set --match-set cnip src -j DROP
每个国家的IP段汇总
https://www.ipdeny.com/ipblocks/