多少 iptables 阻止规则太多

多少 iptables 阻止规则太多

我们有一台配备四核 AMD Opteron 处理器 2378 的服务器。它充当我们多台服务器的防火墙。我被要求屏蔽来自中国的所有 IP。

在单独的网络中,我们有一些小型 VPS 机器(256MB 和 512MB)。我还被要求在这些 VPS 上屏蔽中国。

我在网上查找并发现需要 4500 条阻止规则的列表。我的问题是放入所有 4500 条规则会不会有问题?我知道 iptables 可以处理的规则远不止这些,我担心的是,由于这些是我不想访问任何端口的阻止,我需要将这些规则放在任何允许之前。这意味着所有合法流量在通过之前都需要与所有这些规则进行比较。实施此操作后,流量会明显变慢吗?这些小型 VPS 是否能够处理每个新数据包的那么多规则(我会在阻止之前放置一个已建立的允许)?

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

谢谢。

答案1

它将支持那么多规则,但您确实不想遍历 4500 条规则链。

正如 @Zoredache 指出的那样,您也可以对链进行二分。如果您做得完美,您可以将链遍历次数降低到 13。

最简单的方式是使用 ipset。

我正在使用 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 添加一条规则来匹配该集合并丢弃流量..

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

这比标准规则链更加高效、快速。

相关内容