多less个iptables阻止规则太多了

我们拥有一台配备四核AMD皓龙2378处理器的服务器,它可以作为我们几台服务器的防火墙。 我被要求封锁来自中国的所有IP地址。

在一个单独的networking中,我们有一些小的VPS机器(256MB和512MB)。 我被要求在这些VPS上封锁中国。

我在网上查找,发现需要4500块规则的列表。 我的问题是将所有4500规则放在一个问题? 我知道iptables可以处理比这更多的规则,我所关心的是因为这些是我不想访问任何端口的块,我需要在允许之前放置这些规则。 这意味着所有合法的stream量都需要在通过之前与所有这些规则进行比较。 在实施这个之后,交通是否会明显变慢? 这些小型VPS能够处理每个新数据包的许多规则吗(我会在块之前build立一个允许的)?

我的问题不是iptables支持多less规则? ,关于这些规则对负载和速度的影响。

谢谢。

它会支持这么多的规则,但是你真的不想穿越4500条规则。

正如@ Zoredache指出,你也可以二进制拆分链。 如果你做得很好,你可以减less链式遍历的数量到13。

最简单的方法是使用ipsets。

我正在使用EL6,为此提供支持。 显然我不知道所有的中国网路块,所以我只是填充垃圾..

ipset create china hash:net ipset add china 1.2.3.0/24 ipset add china 2.4.0.0/16 ipset add china 123.0.0.0/8 ipset add china 145.12.5.0/24 

然后添加一个规则到IPtables来匹配这个设置和丢弃stream量..

 iptables -I INPUT -m set --match-set china src -j DROP 

这比标准规则链更高效,更快捷。