试图监控收到 TCP SYN 标志数据包在建立连接之前,实际上对收到的每个此类数据包进行计数。
目前使用netstat命令,但是这不具备实际计数的计数器的优势。
例如假设每 1 分钟运行一次命令:
netstat -ant | awk '$6 == "SYN_SENT" {++s} END {print s}'
如果系统在两次样本之间由于某种原因出现一些 SYN 突发,则这些样本不正确且不准确:
采样时间 | 发生 |
---|---|
分钟 1:00 | 通过netstat命令进行采样 |
分钟 1:30 | TCP SYN 突发 |
分钟 2:00 | 通过netstat命令进行采样 |
这就是为什么需要计数器。
没有找到 SNMP 计数器或任何针对此提议的“本机”解决方案。对安装 iptables 或任何干预会话的插件不感兴趣,这对于生产机器来说风险太大。
答案1
conntrack
与使用watch
watch -n 30 "conntrack -L 2>&1 | grep SYN_SENT | cut -d' ' -f8 | awk '\$1 > 30' | wc -l"