使用 iptables 进行阻止会很慢吗?

使用 iptables 进行阻止会很慢吗?

我已经使用以下命令阻止了所有 Tor 节点:

sudo iptables -A INPUT -s $ip -j DROP

我认为有大约 1,700 个 IP 像这样被封锁。

我读到过,使用此命令进行阻止可能会很慢。这是真的吗?如果是,有什么更好的替代方案吗?

答案1

根据致 Jan Engelhardt (OpenSUSE 社区内核打包领域的活跃人士之一):

32 位环境的最大规则数量的理论上限约为 3800 万条

但规则繁多的真正瓶颈是内存。应用此类规则时,您需要监控内存,/proc/vmalloc以避免交换,因为交换会大大降低计算机速度。

正如前面提到的IP设置为了管理这种过多的阻止规则,您可以分配新规则并以有效的方式删除以前分配的规则,例如:

# Create the new set and add the entries to it
ipset -N new-set ....
ipset -A new-set ....
...
# Swap the old and new sets
ipset -W old-set new-set
# Get rid of the old set, which is now under new-set
ipset -X new-set

答案2

它比较慢,但您的硬件可能支持您的规则集。更好的替代方案是使用 ipset 和引用该集的 iptables 规则。 信息集将地址和网络存储在高效的数据结构中,与基本 netfilter 处理相比,该数据结构可以更快地搜索匹配项。

相关内容