ipset介绍
iptables是在linux内核里配置防火墙规则的用户空间工具,它实际上是netfilter框架的一部分。可能因为iptables是netfilter框架里最常见的部分,所以这个框架通常被称为iptables,iptables是linux从2.4版本引入的防火墙解决方案。ipset是iptables的扩展,它允许你创建匹配整个地址sets(地址集合) 的规则。而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种结构即使集合比较大也可以进行高效的查找。除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,ipset也具备一些新防火墙设计方法,并简化了配置。官网:http://ipset.netfilter.org/
1.ipset安装(centos7.x默认已经安装ipset,无需再进行安装)
yum install ipset
2.创建一个ipset
ipset create xxx hash:ip (hash:ip指的是单个ip,xxx是ipset名称)
ipset默认可以存储65536个元素,使用maxelem指定数量
ipset create blacklist hash:net maxelem 1000000 #黑名单
ipset create whitelist hash:net maxelem 1000000 #白名单
查看当前服务器已创建的ipset
ipset list
3.加入一个名单ip
ipset add blacklist 10.20.30.xx
4.去除名单ip
ipset del blacklist 10.20.30.xx
5.创建防火墙规则
iptables -I INPUT -m set --match-set blacklist src -p tcp -j DROP
iptables -I INPUT -m set --match-set whitelist src -p tcp -j DROP
service iptables save
6.将ipset规则保存到文件
ipset save blacklist -f blacklist.txt
ipset save whitelist -f whitelist.txt
7.删除ipset
ipset destroy blacklist ipset destroy whitelist
8.导入ipset规则
ipset restore -f blacklist.txt ipset restore -f whitelist.txt
ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效。