Linux网络排查核心是“谁在连、连在哪、状态如何、谁在监听”,推荐用ss命令:ss -tuln查监听、ss -tan查连接、ss -tunlp查进程、ss -s看摘要,配合grep和lsof可定位90%问题。

Linux 网络连接排查,核心是快速确认“谁在连、连在哪、状态如何、谁在监听”。netstat 和 ss 是最常用的两个命令,但它们定位不同:netstat 是传统工具,适合快速上手和兼容旧环境;ss 是现代替代,性能强、信息细、响应快,尤其适合高并发生产系统。
怎么看端口是否在监听
服务启动后却访问不了?先确认它真正在监听指定端口。
- ss -tuln:列出所有 TCP/UDP 监听端口(-t TCP, -u UDP, -l 监听, -n 数字地址)
- netstat -tuln:功能相同,但速度慢、部分新发行版默认不装
- 加 -p 可看进程(如
ss -tulp),需 root 权限才显示 PID 和程序名 - 若某端口没出现在结果里,说明服务根本没起来,或绑定错了地址(比如只绑了 127.0.0.1)
怎么看当前有哪些连接
连接异常、连接数飙升、疑似被扫?得看清活跃连接的分布。
- ss -tan:列出所有 TCP 连接(含 ESTABLISHED、TIME-WAIT 等),速度快,推荐
- netstat -ant:等效但慢,适合对照理解
- 按状态统计:
ss -tan state established | wc -l查活跃连接数;ss -tan state time-wait | wc -l查等待关闭连接数 - 查某个 IP 的所有连接:
ss dst 192.168.1.100或ss dport = :443查目标为 HTTPS 的连接
怎么定位是哪个进程在捣鬼
端口被占、连接异常、CPU 或网络突增?必须关联到具体进程。
- ss -tunlp | grep :80:查 80 端口被谁监听(-u 同时看 UDP)
- lsof -i :80:更灵活,不依赖 net-tools,也能查已建立连接的进程
- 查某进程的所有网络连接:
lsof -p 1234或ss -tunp | grep 1234 - 注意:非 root 用户执行
-p选项会看不到其他用户进程,sudo 是常用解决方式
怎么快速掌握连接健康度
光看数量不够,得结合状态和队列判断潜在风险。
- ss -s:一行总览——TCP 总数、ESTABLISHED 数、TIME-WAIT 数、端口使用情况等,5 秒内掌握全局
- 关注
Recv-Q和Send-Q列:非 0 表示接收或发送缓冲区堆积,可能是应用处理慢或对方接收卡住 - 大量
TIME-WAIT:正常但过多可能耗尽本地端口,可调优net.ipv4.tcp_tw_reuse - 大量
SYN-RECV:可能遭遇 SYN Flood 攻击,或服务响应三次握手太慢
基本上就这些。不需要死记所有参数,记住 ss -tuln(查监听)、ss -tan(查连接)、ss -tunlp(查进程)、ss -s(看摘要)这四条,再配合 grep 和 lsof,90% 的连接类问题都能当场定位。










