使用 iptables 限制每个 IP 的传入连接

使用 iptables 限制每个 IP 的传入连接

我需要限制每个 IP 对某个端口的访问。假设每分钟 5 个连接 - 不能更多。

我见过 iptables最近的连接限制限制,但它们并不完全符合我的需要。

假设你有一个客户端每秒尝试连接一次。在我的场景中,我需要允许 5 个数据包每分钟

最近的:如果某个 IP 每隔 1 秒尝试连接一次,--hitcount 5 将记住此 IP 并将其保留在列表中,直到在 --second 60 时间内没有数据包进入。因此,在我的场景中,它将永久限制客户端。

限制:这个限制按照我的意愿用--limit 5/min,但是对于所有IP - 无法为每个IP指定这个。

连接限制:限制同时连接的数量,而不是限制某个时间的连接数量。

事实上,我需要限制 + 最近的组合。谁知道怎么做?

答案1

我认为这就是将每个源 IP 限制为指定速率所需要的。

-m hashlimit --hashlimit-mode srcip --hashlimit-upto 5/min

下面的 URL 中给出了详细示例。

http://www.mauromascia.com/blog/limiting-concurrent-connections-per-ip/?lang=it

http://etel.wiki.oreilly.com/wiki/index.php/SIP_DoS/DDoS_Mitigation

http://ipset.netfilter.org/iptables-extensions.man.html

相关内容