Linux netstat 网络连接与端口排查指南
前言
netstat 常用于查看网络连接、监听端口和网卡统计信息。虽然在新的 Linux 系统里,很多场景更推荐使用 ss 和 ip,但不少服务器仍然会保留 netstat,日常排查时也经常能遇到。
一、查看 TCP 连接数
查看各类 TCP 连接状态的数量:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
常见状态包括:
| 状态 | 含义 |
|---|---|
LISTEN | 正在监听连接 |
ESTABLISHED | 连接已建立 |
TIME_WAIT | 主动关闭连接后等待旧报文过期 |
CLOSE_WAIT | 对端已关闭,本端还没有完成关闭 |
SYN_SENT | 已发送连接请求,等待对端确认 |
SYN_RECV | 已收到连接请求,等待完成握手 |
排查时可以重点关注:
ESTABLISHED是否突然暴涨,判断是否连接数异常增加。TIME_WAIT是否大量堆积,判断是否存在短连接过多。CLOSE_WAIT是否持续增加,判断应用是否没有正确关闭连接。
二、查看端口状态
查看所有 TCP 监听端口:
netstat -ntlp
常用参数含义:
| 参数 | 含义 |
|---|---|
-n | 以数字形式显示地址和端口,不做域名解析 |
-t | 只显示 TCP |
-l | 只显示监听状态 |
-p | 显示进程信息 |
查看指定端口,例如 8081:
netstat -ntlp | grep 8081
如果没有看到进程名或 PID,可以使用 root 权限再执行一次:
sudo netstat -ntlp | grep 8081
三、查看网卡错误
查看网络接口统计信息:
netstat -i
输出中可以重点关注发送侧错误指标:
| 指标 | 含义 | 关注点 |
|---|---|---|
TX-ERR | 发送错误数 | 可能和硬件故障、链路问题、驱动问题或网络拥塞有关 |
TX-DRP | 发送丢包数 | 可能表示发送缓冲区溢出、接口压力过大或网络链路异常 |
TX-OVR | 发送溢出数 | 可能表示发送速率超过接口处理能力,导致数据包被丢弃 |
这几个值理想情况下应为 0。如果持续增长,通常说明网络接口、链路或设备侧存在问题,需要继续检查:
- 网卡、交换机端口和网线状态。
- 系统日志里是否有网卡驱动、链路抖动或接口重置记录。
- 业务流量是否突然增加,导致接口或队列压力过高。
- 是否存在限速、丢包、双工模式不匹配等网络配置问题。
四、安装 netstat
如果执行 netstat 时提示:
-bash: netstat: command not found
通常是系统没有安装 net-tools 包。
CentOS / RHEL:
yum install -y net-tools
Fedora / CentOS Stream / RHEL 8+:
dnf install -y net-tools
Ubuntu / Debian:
apt install -y net-tools
五、推荐排查流程
-
接口响应慢、连接数异常增加时,统计 TCP 状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'ESTABLISHED很多,说明已建立连接多;TIME_WAIT很多,通常和短连接有关;CLOSE_WAIT持续增加,通常要检查应用是否没有正确关闭连接。 -
端口访问不通时,先确认服务是否监听:
sudo netstat -ntlp | grep 8081如果没有输出,说明端口没有处于监听状态,优先检查服务是否启动、监听地址是否正确。如果能看到监听,再继续检查防火墙、安全组或上游转发配置。
-
连接偶发中断、丢包或吞吐异常时,观察网卡计数是否增长:
netstat -i连续执行几次,如果
TX-ERR、TX-DRP、TX-OVR持续增加,就要继续检查网卡、网线、交换机端口、驱动日志和链路配置。
netstat 适合确认网络层面的状态:连接是否异常堆积、端口是否监听、网卡错误计数是否增长。它不能直接说明业务代码哪里有问题,但可以帮助判断问题是不是落在连接、监听端口或链路层面。