ipset 规则中的IP地址集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,从而减少系统资源占用或网络拥塞。IP sets 也具备一些新防火墙设计方法,并简化了配置。ipset 的官网:https://ipset.netfilter.org/
下面我们以一个实际场景为样例,介绍如何在Debian系统中,使用 ipset 将单个国家的左右 IP段 加入黑名单。
#### 准备工作:安装 ipset、或者网段列表
sudo apt-get -y install ipset
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone #下载国家IP段,这里以cn为例
sudo ipset -N cnip hash:net
for i in $(cat ./cn.zone ); do sudo ipset -A cnip $i; done #将IP段添加到cnip规则中
#### 创建 iptables 规则
`sudo iptables -A OUTPUT -p tcp -m state –state NEW -m set –match-set cnip dst -j REJECT`
将以上规则配置为系统重启后,依然生效。
ipset save cnip -f /etc/iptables/ipset.conf #保存
iptables-save > /etc/iptables/iptables.conf #保存后请检查是否含有 -A OUTPUT -p tcp -m state –state NEW -m set –match-set cnip dst -j REJECT
#### 添加自动启动脚本
vim /etc/rc.local
#在exit 0之前添加以下两行,保存退出
sudo ipset restore -f /etc/iptables/ipset.conf
sudo iptables-restore < /etc/iptables/iptables.conf
然后重启系统,大功告成。
244 次点击 ∙ 1 赞
加入收藏