iptables 可以支持多少条规则?

iptables 可以支持多少条规则?

最近有人问我这个问题,我却无言以对。我知道这是一个开放式的问题,但您在表/链中可以安装的规则数量是否有限制?如果有,我该如何找出答案?我猜这会因机器而异。

答案1

引自Jan Engelhardt

The theoretical upper limit of maximum number of rules for a 32-bit
environment would be somewhere around 38 million, but you could also
construct a rule that is so crowded with matches that even it won't
fit, so the lower limit of max rules is 0.

http://www.spinics.net/lists/netfilter/msg51895.html

答案2

根据linuxquestions.org在 32 位机器上,IPTables 将支持大约 25,000 条规则。超过这个数字,尤其是从 27,000 条开始,事情就开始变得不稳定了。

答案3

问题

我认为这个问题源于将攻击性 IP 添加到防火墙的想法/概念。其中有很多。因为我们不断受到黑客、垃圾邮件发送者等的轰炸。

不久前,我在一台 64 位机器上尝试过这种方法,当 IP 达到 4,000 个左右时,我发现速度开始变慢。因此,这不是一个好主意。

解决方案 1:ipset

一段时间以来,出现了一个iptables名为的扩展ipset。要执行诸如向防火墙添加新 IP 之类的操作。要阻止的 IP。我强烈建议您使用集合。IP 和集合以及规则的数量仍然限制在某些数字内,但在这种情况下会少得多。

它会是这样的:

ipset create deny_list hash:ip
sudo iptables -A INPUT -p tcp -m tcp --syn \
  -m set --match-set deny_list src \
  -j ACCEPT

然后将攻击性 IP 添加到列表中,如下所示:

ipset add deny_list 10.0.0.10

您可以设置 TTL 或使用自己的软件在一段时间后删除这些 IP。

解决方案 2:recent

对于非常动态的防火墙,另一种解决方案是使用扩展recent。它允许您将 IP 添加到类似于ipsetIP 列表的列表中。然后,您可以检查另一个传入数据包的 IP 是否与该集合中的某个 IP 匹配,如果匹配,则检查DROP该数据包。

在我看来,这比较难处理。但它的威力很大。

您的其他工具(例如检测黑客攻击的网站)可以将 IP 添加到最近的列表中:

echo +10.0.0.10 >/proc/net/xt_recent/<name>

手册页中有关于此内容的文档iptables-extensions

相关内容