本文由 资源共享网 – ziyuan 发布,转载请注明出处,如有问题请联系我们![免费]Linux服务器运维
收藏Linux服务器IP连接数限制配置
一、限制单个IP的同时连接数
使用connlimit模块限制同一IP的最大并发连接数:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT
参数说明:
--dport 80:针对HTTP服务,根据实际端口调整。
--connlimit-above 10:允许的最大并发连接数。
--connlimit-mask 32:针对单个IP(掩码32位)。
二、限制24小时内的总访问数
使用hashlimit模块限制每个IP在24小时内的新建连接数:
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-name http_24h --hashlimit-mode srcip --hashlimit-above 100/day -j DROP
参数说明:
--state NEW:统计新连接请求。
--hashlimit-above 100/day:24小时内允许最多100次新连接。
--hashlimit-name http_24h:定义计数器名称(需唯一)。
三、验证并保存规则
测试规则:
使用工具(如ab、curl)模拟多连接和请求,观察是否被限制。
保存规则:
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu service iptables save # CentOS/RHEL
注意事项
时间窗口:hashlimit的/day基于滑动窗口(从首次请求计24小时),非自然日。
模块支持:确保内核支持connlimit和hashlimit模块。
规则顺序:将限制规则放在允许流量的规则之前。
可选:使用nftables(现代替代方案)
若系统使用nftables,规则如下:
nft add table ip filter nft add chain ip filter input { type filter hook input priority 0 \; } nft add rule ip filter input tcp dport 80 ct count over 10 reject # 并发连接数 nft add rule ip filter input tcp dport 80 ct state new meter http_24h { ip saddr limit rate 100/day } drop # 总访问数a