0%

使用 iptables 的 connlimit 模块限制迸发连接数

近期遇到了迸发连接数太多导致服务器服务器出现问题的案例,这里记录一下如何使用 iptables 限制迸发连接数。
这里使用 connlimit 模块

1
2
–connlimit-above n 限制为多少个
–connlimit-mask n 这组主机的掩码。

默认是 connlimit-mask 32 代表的是单个IP本身。也可以是24,16,8这样。
例如:
限制一个IP访问80,443端口最大连接数为16个连接

1
2
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 16 -j REJECT
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 16 -j REJECT

限制一个段访问80,443端口最大为16个连接

1
2
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT
iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT