传输层防护限制异常连接的速率与并发,本质是在TCP/UDP协议栈入口和连接表上做计数与令牌桶控制,让攻击流量在耗尽资源前被丢弃或延迟。
iptables限制单个IP并发连接数怎么设置
在Linux服务器上,限制单个IP并发连接数最直接的工具是iptables的connlimit模块,或者nftables的ct count匹配,管理员通常面对两类问题:单个IP发起大量半连接或已建立连接,把内存和端口占满。
- 半连接限制:针对
SYN_RECV状态,配合SYN Cookie和队列长度一起生效。 - 已建立连接限制:
connlimit统计每个源IP的ESTABLISHED数量,超过阈值就拒绝新连接。 - 新建速率限制:
limit模块或nft的limit参数,控制每秒新建连接的速率。
具体命令示例:
# 限制单个IP对80端口的并发连接数不超过20 iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 32 -j REJECT # 限制每秒新建SYN包不超过10个,突发20个 iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
第一条connlimit规则中,--connlimit-mask 32表示按单个IPv4地址统计,第二条limit规则利用令牌桶原理,首次允许突发20个包,之后稳定在每秒10个,实际部署时要先把SSH端口排除,避免把自己锁在门外。
nftables写法更直观:
nft add rule ip filter input tcp dport 80 ct count 10 drop
nft add rule ip filter input tcp flags syn limit rate 10/second burst 20 packets counter drop
ct count 10表示同一源IP的连接数超过10时丢弃新包,这种限制对扫描器和慢速连接耗尽攻击有较好效果,但无法识别HTTP慢速请求,那属于应用层问题。
SYN Flood攻击防护和CC攻击防护哪个更难
很多人会问这个问题,因为两者都表现为大量请求,但作用层次不同,传输层防护在两者面前的任务量差别很大。
- SYN Flood:攻击者发送大量SYN包,不完成三次握手,主要消耗内核半连接队列,内核参数、SYN Cookie、限速规则可以较为有效地缓解。
- CC攻击:攻击者完成三次握手,发送的是真实HTTP请求,可能只占很少带宽,但应用层处理开销大,传输层限速只能限制连接数和新建速率,无法判断请求内容是否恶意。
从防护难度看,CC攻击通常比SYN Flood更难处理,SYN Flood的流量特征明显,可以用传输层限速、源认证、SYN Cookie直接过滤,CC攻击的每个连接看起来都像正常用户,需要结合HTTP频率、UA、Cookie、验证码等应用层策略,传输层的并发限制只是第一步,这也是为什么高防服务商在CC防护报价上往往高于单纯的SYN Flood防护。
Linux内核传输层参数调优
内核参数直接影响异常连接能否被限制在合理范围内,以下配置多数情况下能提升抗SYN Flood能力:
net.ipv4.tcp_syncookies=1:开启SYN Cookie,半连接队列满时也不直接拒绝新SYN。net.ipv4.tcp_max_syn_backlog=8192:增大SYN队列长度,给限速规则留下缓冲空间。net.ipv4.tcp_synack_retries=3:减少SYN+ACK重试次数,快速释放半连接。net.ipv4.tcp_abort_on_overflow=1:连接队列溢出时直接重置,避免服务端假死。
这些参数不是越大越好,队列过大可能消耗更多内存,反而给攻击者可乘之机,合理做法是先观察ss -s里的synrecv和estab数量,再调整阈值。
服务器防CC攻击连接数限制的价格因素
服务器防CC攻击的连接数限制通常有两种落地方式:自己用Nginx或iptables配置,或者购买高防IP/高防服务器,价格差异较大,主要取决于防护带宽、清洗能力、机房位置和是否带应用层策略。
- 自建方案:iptables、Nginx
limit_conn成本几乎为零,但只能做基础传输层限制,遇到大流量CC时带宽先被打满。 - 高防IP:按防护峰值和地域计费,北京机房高防IP传输层防护通常比普通BGP带宽贵,因为清洗设备、带宽冗余和运维成本更高。
- 云端WAF:在传输层限速之外增加HTTP层规则,价格可能按请求数或站点数计费。
选择时不要只看标价,要问清楚:是否包含UDP防护、SYN Flood清洗阈值、CC攻击是否单独计费、以及回源带宽是否额外收费,很多情况下,传输层限速和并发限制只是高防服务的基础功能,真正花费在应用层特征库和人工运维。
Nginx limit_req限制速率和limit_conn限制并发
Nginx作为入口代理时,可以对七层流量做更细的限制,它运行在传输层之上,但配置简单,适合中小站点。
# 在http段定义限制规则
limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn_one:10m;
server {
location / {
limit_req zone=req_one burst=20 nodelay;
limit_conn conn_one 10;
}
}
limit_req:限制请求速率,rate=10r/s表示每秒10个请求,burst=20允许突发20个,nodelay让突发请求不被延迟处理。limit_conn:限制并发连接数,超过10个连接直接返回503。
这种配置能拦住一部分CC攻击,但要注意:如果攻击者使用大量不同IP,基于IP的限制会失效,此时需要在传输层加入按网段或按地理位置的限制,或者接入专业清洗服务,Nginx的限速模块本身不解决带宽耗尽问题,它只保护后端应用不被单IP请求拖垮。
传输层速率与并发限制的操作路径
管理员在实际操作中,建议按以下顺序排查和配置:
- 查看当前连接状态:
ss -tan state syn-recv | wc -l、ss -tan state established | wc -l。 - 开启内核SYN Cookie并调整队列长度。
- 用iptables/nftables限制单IP新建速率和并发连接数。
- 在前端代理层(Nginx/HAProxy)配置速率和并发限制。
- 监控限速规则的命中次数,避免误伤正常用户。
- 必要时接入高防服务,把传输层清洗放在上游。
其中第2到第4步可以在几分钟内完成,适合应急,比如发现服务器/var/log/messages频繁出现possible SYN flooding,先执行:
sysctl -w net.ipv4.tcp_syncookies=1 iptables -A INPUT -p tcp --syn -m limit --limit 5/s --limit-burst 10 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
再观察CPU和内存是否恢复正常。
表格对比常用传输层限制方法
| 方法 | 限制对象 | 优点 | 局限 |
|---|---|---|---|
| 内核SYN Cookie | 半连接队列 | 配置简单,系统级生效 | 只能缓解SYN Flood,不限制速率 |
| iptables limit | 新建SYN速率 | 规则灵活,可指定端口 | 消耗CPU,规则多时性能下降 |
| iptables connlimit | 单IP并发连接数 | 精准限制连接耗尽 | 对分布式IP效果有限 |
| Nginx limit_req/limit_conn | HTTP请求速率与连接 | 七层细粒度,支持突发 | 依赖Nginx,无法防护大流量 |
| 高防IP/硬件清洗 | 传输层整体流量 | 带宽大,专业清洗 | 成本较高,需改DNS或路由 |
这个对比可以帮助管理员判断当前阶段需要哪种方案,单台服务器先做内核和iptables限制,业务量上来后再交给高防IP处理传输层洪水。
Q&A:传输层防护限制异常连接的速率与并发
传输层限速和并发限制能完全防御DDoS吗?
不能,传输层限速和并发限制只能限制单IP或单连接的资源消耗,无法应对大流量带宽型DDoS,比如攻击者用数万个IP同时发送请求,每个IP速率都不高,限速规则不会触发,但总带宽已经占满,这类攻击需要在运营商或高防机房上游做黑洞路由和流量清洗。
iptables限制单个IP并发连接数怎么设置不误伤局域网用户?
使用--connlimit-mask时把掩码调大,比如--connlimit-mask 24按整个C段统计,而不是单个IP,这样局域网多台设备不会因为一个IP超限被全部拒绝,但要注意,攻击者如果伪装同网段源IP,可能误伤范围扩大,更好的办法是结合白名单,对已知办公网段放行。
北京机房高防IP传输层防护适合什么业务?
北京机房高防IP传输层防护适合游戏、金融、政务类对延迟和稳定性要求较高的业务,这些业务常受到SYN Flood和UDP Flood攻击,机房本身具备较大的BGP带宽和清洗设备,能在靠近骨干网的位置过滤异常流量,费用比普通BGP线路高,回源链路质量也需要实际测试。
传输层防护限制异常连接的速率与并发,核心在于在SYN队列、连接表和入口网关上设置合理阈值,先保住端口和内存,再交给应用层和高防清洗,没有单层策略能解决所有问题,传输层限制与七层规则配合,才能把异常连接压到可控范围。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/637291.html





