我正在寻求阻止IP地址相对自动化的方式,如果他们希望从我们的网站“屏幕抓取”的内容。 在过去,这是通过一些巧妙的perl脚本和OpenBSD的pf实现的。 pf是非常好的,你可以提供很好的IP地址表,并且可以有效地处理基于它们的阻塞。 但由于各种原因(在我之前),他们决定转用CentOS。 iptables本身并不提供阻止大量地址的能力(我被告知阻塞5000+并不罕见),而且我还是把这么多规则添加到iptable中有点谨慎。
ipt_recent对于这样做是非常棒的,而且它提供了很大的灵活性,只是严重的减慢了访问速度,但是在CentOS内核中有一个阻止我使用它的bug(报告,但是等待修复)。
使用ipset将需要编译一个比CentOS自带的更新版本的iptables,尽pipe我完全有能力做到这一点,但我宁愿不从补丁,安全性和一致性的angular度来做。
除了这两个,它看起来像nfblock是一个合理的select。 有谁知道其他方式来实现这一目标? 我担心iptables中的几千个IP地址是个人规则吗?
iptables是操作netfilter的用户级工具。 netfilter是内核中处理数据包过滤的代码。 从上下文来看,更改用户界面工具只会改变您的体验,而不是过滤操作的方式。
我从来没有在Linux的规定数量的限制,我已经使用Linux的防火墙,因为userland工具是ipfwadm 。 值得注意的是,直到2.4.x内核和ipfwadm是ipfw而非netfilter的接口之后,Netfilter才被引入Linux。 如果您可以在您的环境中继续使用OpenBSD,那么对于防火墙来说,OpenBSD非常棒
该限制可能是基于系统资源的物理限制,重点在于可用RAM的数量。 如果遇到问题,您可能需要调整内核中Linux的最大ip连接设置。 在现代Linux发行版中,你不可能在现代硬件上遇到这两种情况。
如果您想讨论netfilter的更详细的细节,那么最好在netfilter邮件列表上进一步讨论这个对话框,因为它们将是主题专家。
如果这不能回答你的问题,请随时澄清,我会很乐意修改它。
Netfilter用户访问内存限制testingnetfilter限制
阻止大量IP地址的最好方法是不使用内核太多压力,就是用命令将它们路由到空路由:
root@machine# ip route add blackhole 192.168.1.1/32
iptables不适合很多规则。
我认为他引用的错误是在netfilter代码中,特别是ipt_recent模块。 我似乎只限于4K(32位)和8K(64位)。
看到:
5000条规则不是问题,但有http://www.hipac.org/在处理大量规则方面做得相当好。