如何将 connlimit 与 IP 集结合起来?

如何将 connlimit 与 IP 集结合起来?

connlimit让我限制每个客户端/服务的连接数。我如何将这样的规则与最新版本的 Linux 内核和 netfilter 中可用的 IP 集结合起来?

答案1

假设我们有一个名为 的 ipset MYTESTSET,并且该 ipset 的类型为hash:ip。它只会存储 ip 地址。

然后与您的 IPset 进行匹配,并在与connlimit匹配扩展进行匹配后,使用您想要的参数。

iptables -A INPUT -p tcp -m set --match-set MYTESTSET src -m connlimit --connlimit-above 1 --connlimit-saddr --connlimit-mask 32 -j DROP

这将执行以下操作:对于 IP 集中的每个源,将计算连接数,如果有多个(--connlimit-above 1),它将被丢弃,从而限制连接数ipset 中的每个源到 1。(您也可以使用其他方式进行匹配,使用--connlimit-upto xxxand-j ACCEPT代替DROP

如果要考虑整套并允许1个连接对于 ipset 中的所有源然后将--connlimit-mask开关设置为0。

相关内容