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.rpmtar xvf ipset-6.24.tar.bz2cd ipset-6.24./configuremakemake 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 fooName: fooType: hash:ip,port,ipRevision: 2Header: family inet hashsize 1024 maxelem 65536Size in memory: 16584References: 0Members: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 ]
ipset restore则用于将导出的内容导入。
其它
flush [ SETNAME ] Flush all entries from the specified set or flush all sets if none is given.e, rename SETNAME-FROM SETNAME-TO Rename a set. Set identified by SETNAME-TO must not exist.w, swap SETNAME-FROM SETNAME-TO Swap the content of two sets, or in another words, exchange the name of two sets. The referred sets must exist and identical type of sets can be swapped only.help [ TYPENAME ] Print help and set type specific help if TYPENAME is specified.version Print program version.- If a dash is specified as command, then ipset enters a simple interactive mode and the commands are read from the standard input. The interactive mode can be finished by entering the pseudo-command quit.
在iptables中使用ipset
在iptables中可以使用-m set
启用ipset模块,例如。
-A POSTROUTING -m set --match-set felix-masq-ipam-pools src -m set ! --match-set felix-all-ipam-pools dst -j MASQUERADE
iptables的set模块:
setThis module matches IP sets which can be defined by ipset(8).[!] --match-set setname flag[,flag]... where flags are the comma separated list of src and/or dst specifications and there can be no more than six of them. Hence the command iptables -A FORWARD -m set --match-set test src,dst...
在TARGET中也可以操作ipset:
SETThis module adds and/or deletes entries from IP sets which can be defined by ipset(8).--add-set setname flag[,flag...] add the address(es)/port(s) of the packet to the set--del-set setname flag[,flag...] delete the address(es)/port(s) of the packet from the set where flag(s) are src and/or dst specifications and there can be no more than six of them....
在man iptables-extensions
中可以找到set module
和SET TARGET
的所有选项。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对VEVB武林网的支持。
新闻热点
疑难解答