ss -s可快速获取连接总数与状态分布,netstat可分类统计tcp各状态数量,ss结合awk、cut、sort等命令能定位高连接数异常ip并支持封禁。

您需要在麒麟系统中快速掌握当前网络连接的总体数量、状态分布及异常趋势,避免因连接堆积导致服务响应延迟或进程假死,必须通过命令行调用内核级统计接口获取实时聚合数据。
用 ss -s 快速查看连接总数与状态概览
这是最轻量、最直接的方式,无需安装额外工具,输出包含 TCP/UDP 总数、已建立、监听、关闭中等关键状态计数,适合日常巡检。
打开终端,执行:ss -s
观察输出中类似“TCP: 123 (estab 45, closed 67, orphaned 2, synrecv 0, timewait 34)”的行——括号内数字即为各状态连接数;【estab 数值持续低于 5 且 timewait 超过 200,说明连接释放不及时】。
用 netstat 按 TCP 状态分类统计
当发现连接数异常偏高,需定位是哪种状态堆积(如大量 CLOSE_WAIT 表示本机应用未主动关闭 socket),此方法能精准拆解。
方法一:一键聚合输出所有 TCP 状态数量
执行:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
方法二:单独提取 ESTABLISHED 连接数(最贴近真实业务连接)
执行:netstat -ant | grep ESTABLISHED | wc -l
注意:若提示 command not found,请先运行 sudo apt install net-tools 安装 netstat 工具。
定位高连接数来源 IP
当总连接数远超正常范围(如 >1500),需立刻识别是否被某外部 IP 频繁建连,防止扫描或慢连接攻击。
第一步:提取所有 ESTABLISHED 连接的客户端 IP 地址
ss -tn state established | awk '{print $5}' | cut -d: -f1
第二步:统计出现频次并倒序取前 10 名
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
第三步:若某 IP 连接数占总量 30% 以上,且非业务必需,可临时封禁:sudo iptables -A INPUT -s [IP] -j DROP











