如何限制从同一 IP 到本地端口的打开 TCP 流的数量?

如何限制从同一 IP 到本地端口的打开 TCP 流的数量?

我想限制从同一 IP 到服务器 (本地) 端口的并发打开 TCP 流的数量。假设并发连接数为 4 个。

如何利用 IP 表来实现这一点?

我发现最接近的东西是: 在 Apache 中,有没有办法限制每秒/每小时/每天的新连接数?

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 86400 --hitcount 100 -j REJECT

但这个限制只是衡量了一段时间内新连接的数量。这可能有利于控制 HTTP 流量。但这对我来说不是一个好的解决方案,因为我的 TCP 流的生命周期通常在 5 分钟到 2 小时之间

非常感谢您的回复:)

答案1

只需在 iptables man 中检查 connlimit 即可:http://unixhelp.ed.ac.uk/CGI/man-cgi?iptables+8

# allow 2 telnet connections per client host
iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

与 iplimit 相比,它的优点在于您不需要安装任何东西。它可以开箱即用...

答案2

看起来你可以用iplimit iptables 扩展. 类似这样:

iptables -A INPUT -p tcp --syn --dport http -m iplimit --iplimit-above 4 -j REJECT

相关内容