我们拥有一台配备四核AMD皓龙2378处理器的服务器,它可以作为我们几台服务器的防火墙。 我被要求封锁来自中国的所有IP地址。
在一个单独的networking中,我们有一些小的VPS机器(256MB和512MB)。 我被要求在这些VPS上封锁中国。
我在网上查找,发现需要4500块规则的列表。 我的问题是将所有4500规则放在一个问题? 我知道iptables可以处理比这更多的规则,我所关心的是因为这些是我不想访问任何端口的块,我需要在允许之前放置这些规则。 这意味着所有合法的stream量都需要在通过之前与所有这些规则进行比较。 在实施这个之后,交通是否会明显变慢? 这些小型VPS能够处理每个新数据包的许多规则吗(我会在块之前build立一个允许的)?
我的问题不是iptables支持多less规则? ,关于这些规则对负载和速度的影响。
谢谢。
它会支持这么多的规则,但是你真的不想穿越4500条规则。
正如@ Zoredache指出,你也可以二进制拆分链。 如果你做得很好,你可以减less链式遍历的数量到13。
最简单的方法是使用ipsets。
我正在使用EL6,为此提供支持。 显然我不知道所有的中国网路块,所以我只是填充垃圾..
ipset create china hash:net ipset add china 1.2.3.0/24 ipset add china 2.4.0.0/16 ipset add china 123.0.0.0/8 ipset add china 145.12.5.0/24
然后添加一个规则到IPtables来匹配这个设置和丢弃stream量..
iptables -I INPUT -m set --match-set china src -j DROP
这比标准规则链更高效,更快捷。