描述 iptables 影响

描述 iptables 影响

情况迫使我们打开一个互联网端口,我们希望建立一个允许访问该端口的 IP 范围“白名单”。我已经对解决方案进行了原型设计,因此我了解其实现。人们担心拥有大量白名单(5000 个范围)的影响。有什么方法可以描述这样的规则集对性能的影响吗?如何从 iptables 中获取指标?

答案1

最近的 Core cpu 应该能够很好地处理这个问题。

不过,看看规则能否优化也无妨。根据 IP 地址的分布,可以提供帮助的一件事是将规则分为 8 个部分:

iptables -N ourtable
iptables -N ourtable-000
iptables -N ourtable-032
iptables -N ourtable-064
iptables -N ourtable-096
iptables -N ourtable-128
iptables -N ourtable-160
iptables -N ourtable-192
iptables -N ourtable-224

iptables -A INPUT -p tcp --dport 12345 -j ourtable
iptables -A ourtable -s   0.0.0.0/3 -j ourtable-000
iptables -A ourtable -s  32.0.0.0/3 -j ourtable-032
iptables -A ourtable -s  64.0.0.0/3 -j ourtable-064
iptables -A ourtable -s  96.0.0.0/3 -j ourtable-096
iptables -A ourtable -s 128.0.0.0/3 -j ourtable-128
iptables -A ourtable -s 160.0.0.0/3 -j ourtable-160
iptables -A ourtable -s 192.0.0.0/3 -j ourtable-192
iptables -A ourtable -s 224.0.0.0/3 -j ourtable-224

iptables -A ourtable-000 -s 1.2.3.4 -j ACCEPT
...
iptables -A ourtable-000 -j DROP

iptables -A ourtable-032 -s 32.1.2.3 -j ACCEPT
...
iptables -A ourtable-032 -j DROP

# etc...

这样,将根据 625 个规则而不是 5000 个规则检查数据包(当然假设地址分布均匀,但情况可能并非如此;您可以相应地调整整个地址空间的划分)。

我还假设您的列表中已经有子网(即,如果您需要允许 172.18.0.0 到 172.18.0.7,请将其替换为 172.18.0.0/29)。如果不是,请检查此类范围。在 Debian 上,我使用该netmask实用程序来查看给定的网络掩码涵盖的内容:

$ $ netmask -r 172.18.0.0/29
 172.18.0.0-172.18.0.7      (8)

相关内容