使用iptables
recent
模块时,我可以在这里看到模块设置:
ls -1 /sys/module/xt_recent/parameters/
并列出特定参数的设置:
cat /sys/module/xt_recent/parameters/ip_list_tot
100
我也知道我可以在加载模块时更改默认值。
我的问题是,当列表达到 "ip_list_tot" 的大小时会发生什么?最近的模块是否停止添加新的 IP 地址,或者它是否“轮换”旧的并用新的替换它们?
我查看了帮助,但找不到任何解释
iptables -m recent --help
另外,在生产环境中,“ip_list_tot”的合理大小是多少,我想阻止有问题的 IP?默认的 ip_list_tot 大小 100 在我看来小得离谱。如果我将其设置为 ,我会遇到任何负面影响10'000
吗?
在阅读(非常快)源代码后,我会说旧条目已被删除:
要增加此值,您可以在手动加载模块时设置参数:
recent
在卸载/加载之前,请确保该模块未在使用中(禁用防火墙,或者至少禁用使用匹配的规则)。要使此设置持久化,您可以在 /etc/modprobe.d/xt_recent 下放置一个文件,其中包含以下内容:
(请注意,此方法可能不起作用,可能会根据您的发行版进行调整)。
如果您因此增加此参数值可能会遇到的性能问题,很难说。这取决于您的硬件,系统上运行的其他任务等...
仍然基于阅读源代码和我自己的开发背景,我会告诉你,你可能害怕的主要事情是延迟的引入,例如,如果当前测试的 IP 是列表中的最后一个或者不是列表中的 t(可能经常出现):
鉴于
x
的复杂性list_for_each_entry() + strcmp
,将 `ip_list_tot̀ 设置为一个巨大值的额外“成本”是浏览列表的时间。最终复杂度可能在
1 * x
和之间变化ip_list_tot * x
。尽管如此,我想内核中的链表实现得很好,性能和速度是要求。
最后,我建议您进行基准测试……如果可能的话。