ipset介绍
iptables是在linux内核里配置防火墙规则的用户空间工具,它实际上是netfilter框架的一部分.可能因为iptables是netfilter框架里最常见的部分,所以这个框架通常被称为iptables,iptables是linux从2.4版本引入的防火墙解决方案.
ipset是iptables的扩展,它允许你创建 匹配整个地址sets(地址集合) 的规则。而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找.
除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.
官网:http://ipset.netfilter.org/
安装
| rpm -ivh libmnl-devel-1.0.2-3.el6.x86_64.rpm libmnl-1.0.2-3.el6.x86_64.rpm tar xvf ipset-6.24.tar.bz2 cd ipset-6.24 ./configure make make install |
#注意:
如果在centos6.6或其他情况下安装时候,configure报错如下
| configure: error: Invalid kernel source directory /lib/modules/2.6.32-358.el6.x86_64/source |
解决:需要安装内核源码包kernel-devel-2.6.32-358.el6.x86_64.rpm
创建ipset
ipset -n或者ipset create:
| n, create SETNAME TYPENAME [ CREATE-OPTIONS ] |
SETNAME是创建的ipset的名称,TYPENAME是ipset的类型:
| TYPENAME := method:datatype[,datatype[,datatype]] |
method指定ipset中的entry存放的方式,随后的datatype约定了每个entry的格式。
可以使用的method:
| bitmap, hash, list |
可以使用的datatype:
| ip, net, mac, port, iface |
添加记录
ipset add用于在ipset中添加记录:
| add SETNAME ADD-ENTRY [ ADD-OPTIONS ] |
向ipset中添加entry的时候,加入的entry的格式必须与创建ipset是指定的格式匹配。
| $ipset creat foo hash:ip,port,ip $ipset add foo ipaddr,portnum,ipaddr $ipset list foo Name: foo Type: hash:ip,port,ip Revision: 2 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16584 References: 0 Members: 192.168.1.2,tcp:80,192.168.1.3 |
删除记录
ipset del用于从ipset中删除记录:
| del SETNAME DEL-ENTRY [ DEL-OPTIONS ] |
查询记录
ipset test可以检查目标entry是否在ipset中:
| test SETNAME TEST-ENTRY [ TEST-OPTIONS ] |
ipset list可以查看ipset的所有内容:
| list [ SETNAME ] [ OPTIONS ] |
导出导入
ipset save可以导出所有的ipset:
| save [ SETNAME ] |








