IPTables六—— IPTable规则优化IPSet

六、IPSet

iptables在进行包过滤的时候,对每个数据包都过滤一遍iptables中的规则。假设我们有如下三条规则:

-s 1.1.1.1 -p tcp accpet

-s 2.2.2.2 -p tcp accpet

-s 3.3.3.3 -p tcp accpet

那么当一个数据包源地址是3.3.3.3的时候,它首先去匹配第一条规则,不匹配再匹配第二条,最后在第三条匹配中了。想一想如果我有类似的100条规则呢?内核最差的情况是不是对一个数据包需要做100个规则匹配,这是相当没有效率的事情。在上述的例子中,其动作都是一样的能不能把这三条规则总结成一条规则呢 ?有那就是IPSet,它将多条iptable规则富集到一个ip set里,这个ip set使用hash或者图来组织,在netfilter过滤的时候,采用hash或者图方式规则运算进行查找,比原来的iptable一个顺序的规则查找方法运算速度提升很多,特别是规则条目很多的时候。

1、IPSet支持的匹配集

1.1 bitmap

支持bitmap:ip bimap:ip,mac和bitmap:port

支持hash:ip,hash:net ,hash:ip,port,net hash:ip,port,ip hash:net,port hash:net,if

支持list

2、使用例子:

针对上例,我们使用如下方法设置ipset

IPSet -N zxy_set hash:ip  hashsize 256 maxelem 1024

IPSet add zxy_set 1.1.1.1

IPSet add zxy_set 2.2.2.2

IPSet add zxy_set 3.3.3.3

Iptable -I INPUT -m set --match-set zxy_set src -p tcp -j Accept

你可能感兴趣的:(IPTables六—— IPTable规则优化IPSet)