iptables connlimit-above 允许比预期更多的连接

iptables connlimit-above 允许比预期更多的连接

我正在尝试使用 iptables connlimit 在 kubernetes 节点上设置每个 ip 连接限制。由于虚拟机上的每个容器都有不同的源 IP(覆盖网络),因此使用 connlimit 应该可以。我添加了规则

iptables -I FORWARD 1 -p tcp --syn -m connlimit --connlimit-above 25 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

我正在通过让一个容器与外部服务突发 50 个连接进行测试。这最初在第一次爆发时起作用。 25 个连接,25 个连接被拒绝。我可以在 conntrack 表中看到 25 个具有正确源 IP 的条目。

当我等待几秒钟并运行脚本尝试创建另外 50 个连接(其中 25 个仍处于 ESTABLISHED 状态)时,它允许另外 25 个连接通过。我现在可以在 conntrack 表中看到 50 个具有相同源 IP 的连接,全部已建立。期望的结果是,只要原来的 25 个仍然连接,就不会出现任何情况。

我究竟做错了什么?

由于容器网络的配置方式,我使用转发而不是输入链。

相关内容