服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

使用IPtables或空路由黑名单约100万个IP地址?

我遇到过一种情况:客户端需要将一组不到100万个IP地址(无子网)列入黑名单,networking性能是一个问题。 虽然我会猜测IPTables规则的性能影响要比路由less,但这只是猜测。 有没有人有任何可靠的证据或其他理由来支持将IPTables或空路由作为黑名单IP地址列表的解决scheme? 在这种情况下,一切都是自动的,所以易用性并不是真正的问题。 编辑26-Nov-11 经过一些testing和开发,看来这些选项都不可行。 看起来,路由查找和iptables都是通过规则集进行线性search,并花费太长时间来处理这么多规则。 在现代硬件上,将1M项放在iptables黑名单中会使服务器速度降低到每秒大约二十个数据包。 所以IPTables和空路由都没有了。 按照Jimmy Hedman的build议, ipset会很棒,除了它不允许你跟踪一个集合中的65536个以上的地址,所以我甚至不能尝试使用它,除非有人有任何想法。 显然,阻止这么多IP的唯一解决scheme是在应用层进行索引查找。 那不是吗? 更多信息: 在这种情况下,使用情况是阻止“已知罪犯”IP地址列表访问Web服务器上的静态内容。 FWIW,通过Apache的Deny from进行阻塞同样很慢(如果不是更多的话),因为它也是一个线性扫描。 仅供参考:最终的工作解决scheme是将apache的mod_rewrite与berkeley DB映射一起使用来对黑名单进行查找。 berkeley DB的索引特性允许列表以O(log N)性能进行扩展。