最直接有效的方式是用 netstat 配合文本处理命令统计:netstat -an | grep established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10。

要快速找出当前系统中连接数最多的客户端 IP,最直接有效的方式是用 netstat 配合文本处理命令进行分组统计。核心思路是:提取远程地址(第5列)、剥离端口号、去重计数、倒序排序。
统计所有 ESTABLISHED 连接的客户端 IP
这是最常用场景,反映真实活跃连接来源:
netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
说明:
– grep ESTABLISHED 筛出已建立连接;
– awk '{print $5}' 取出“Foreign Address”列(含 IP:端口);
– cut -d: -f1 按冒号分割,只保留 IP 部分;
– uniq -c 统计重复次数;
– sort -nr 按数值逆序排,最大值在前;
– head -10 仅显示前 10 个高连接 IP。
针对特定端口(如 80 或 443)统计
适用于 Web 服务异常、疑似爬虫或攻击排查:
netstat -tn 2>/dev/null | grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10- 把
:80替换为:443、:22等即可适配其他服务。
注意:-t 限定 TCP,2>/dev/null 屏蔽警告信息,提升执行稳定性。
包含连接状态的精细统计(可选)
若需区分不同状态(如大量 SYN_RECV 可能预示 SYN Flood),可用:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print S[a], a}' | sort -nr
输出类似:
1597 ESTABLISHED
30 SYN_RECV
1057 TIME_WAIT
这有助于判断连接健康度,而不仅看 IP 数量。
替代方案:用 ss 命令(推荐用于新系统)
ss 更轻量、更准确,尤其在高并发时比 netstat 性能更好:
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
若系统已弃用 netstat(如某些精简版容器镜像),优先使用此方式。










