linux无直接输出重传率的命令,必须用/proc/net/snmp中tcpretranssegs与tcpoutsegs的增量比值计算真实重传率:(retranssegs₂−retranssegs₁)÷(outsegs₂−outsegs₁),>0.5%需关注,>2%应立即排查。

当系统遭受网络攻击(如SYN Flood、端口扫描或连接耗尽类攻击)时,TCP重传可能急剧上升,形成“重传雪崩”——即重传率飙升、连接频繁超时、应用响应迟滞甚至服务不可用。/proc/net/snmp 是 Linux 内核暴露的 SNMP 统计接口,其中 Tcp: 行包含关键 TCP 协议层指标,可快速定位是否发生重传异常。
直接看 Tcp: 行中的关键字段
在终端执行:
awk '/^Tcp:/ {print $1,$9,$10,$12,$13,$16,$17}' /proc/net/snmp
输出示例(字段按顺序):Tcp: Rsts EstabResets RetransSegs InErrs OutRsts AttemptFails
重点关注:
-
RetransSegs:累计重传的 TCP 段数(核心指标) -
EstabResets:已建立连接被意外重置的次数(反映连接中断) -
AttemptFails:主动建连失败次数(SYN未响应、超时) -
Rsts和OutRsts:本机发出的 RST 包数量(可能因队列满、半连接溢出触发)
判断是否为重传雪崩的阈值参考
-
RetransSegs在 1 分钟内增长 > 5000 次(视业务流量而定,突发业务需对比基线) -
RetransSegs / (InSegs + OutSegs)超过 1.5%(正常应 -
AttemptFails突增且与RetransSegs同步上升 → 暗示 SYN 超时后重试+重传叠加 -
EstabResets显著升高 +OutRsts同步上涨 → 可能因 accept 队列满,内核被迫 RST 已握手连接
结合攻击特征交叉验证
- 若同时观察到大量
InSegs(入向段)但Currestab(/proc/net/snmp中 TcpExt 行的CurrEstab)很低 → 存在 SYN Flood 或半连接泛滥,导致重传集中在 SYN/ACK 重发阶段 -
TcpExt: SyncookiesSent非零且持续增长 → 内核已启用 SYN Cookie,是 SYN Flood 的强信号 -
TcpExt: EmbryonicRsts(半连接 RST)突增 → 攻击者伪造源 IP 发送大量 SYN,服务端发 SYN-ACK 后无响应,超时后 RST 清理
快速响应建议
- 立即检查
ss -s查看established,synrecv,time_wait数量分布 - 运行
netstat -s | grep -A5 "Tcp:"获取更易读的汇总(部分发行版更友好) - 若确认攻击,临时启用
tcp_syncookies=1(sysctl -w net.ipv4.tcp_syncookies=1),并配合 iptables 限速:iptables -A INPUT -p tcp --syn -m limit --limit 20/sec --limit-burst 60 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
不依赖外部工具,仅靠 /proc/net/snmp 就能完成首轮攻击性质判定和重传归因。











