端口半连接攻击(如SYN Flood)导致TCP半连接队列溢出,表现为新连接缓慢、超时或拒绝,需通过netstat -s检查listen overflows、ss -n state syn-recv统计队列使用率、dmesg查看SYN flooding日志,并调优tcp_max_syn_backlog、somaxconn和tcp_syncookies参数。

端口半连接攻击(如SYN Flood)会导致TCP半连接队列溢出,表现为新连接建立缓慢、超时或直接被拒绝,但服务进程本身可能仍在正常运行。排查需聚焦内核网络栈行为,而非应用层日志。
看内核统计是否已发生丢包
执行 netstat -s | grep -i "listen overflows" 或 netstat -s | grep -i "SYNs to LISTEN sockets dropped"。若数值持续增长,说明SYN包因半连接队列满而被内核丢弃——这是最直接的溢出证据。
查当前半连接数量与队列上限
运行 ss -n state syn-recv | wc -l 获取实时SYN_RECV连接数;再对比 cat /proc/sys/net/ipv4/tcp_max_syn_backlog(默认常为128或按内存自动计算)。若前者长期接近或等于后者,说明队列已饱和。
确认内核是否触发SYN Flood防护
执行 dmesg | grep -i "possible SYN flooding"。若出现该提示,表明内核检测到异常SYN速率且未启用tcp_syncookies,已主动丢包防护。注意:该日志不一定代表真实攻击,也可能是突发合法流量压垮队列。
检查关键参数是否合理启用
以下三个参数协同作用,缺一不可:
- tcp_max_syn_backlog:半连接队列最大长度,需根据并发连接峰值适当调大(如设为2048)
- somaxconn:全连接队列上限,应 ≥ tcp_max_syn_backlog,避免accept队列成为瓶颈
- tcp_syncookies:设为1可启用SYN Cookie机制,在队列满时仍能完成三次握手,是应对突发攻击的关键兜底措施
修改后需执行 sysctl -p 生效,并建议加入 /etc/sysctl.conf 持久化。


















