Linux Linux运维netstat网络TCP端口

Linux netstat 网络连接与端口排查指南

| 5 分钟阅读 | --

前言

netstat 常用于查看网络连接、监听端口和网卡统计信息。虽然在新的 Linux 系统里,很多场景更推荐使用 ssip,但不少服务器仍然会保留 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。如果持续增长,通常说明网络接口、链路或设备侧存在问题,需要继续检查:

  1. 网卡、交换机端口和网线状态。
  2. 系统日志里是否有网卡驱动、链路抖动或接口重置记录。
  3. 业务流量是否突然增加,导致接口或队列压力过高。
  4. 是否存在限速、丢包、双工模式不匹配等网络配置问题。

四、安装 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

五、推荐排查流程

  1. 接口响应慢、连接数异常增加时,统计 TCP 状态:

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'

    ESTABLISHED 很多,说明已建立连接多;TIME_WAIT 很多,通常和短连接有关;CLOSE_WAIT 持续增加,通常要检查应用是否没有正确关闭连接。

  2. 端口访问不通时,先确认服务是否监听:

    sudo netstat -ntlp | grep 8081

    如果没有输出,说明端口没有处于监听状态,优先检查服务是否启动、监听地址是否正确。如果能看到监听,再继续检查防火墙、安全组或上游转发配置。

  3. 连接偶发中断、丢包或吞吐异常时,观察网卡计数是否增长:

    netstat -i

    连续执行几次,如果 TX-ERRTX-DRPTX-OVR 持续增加,就要继续检查网卡、网线、交换机端口、驱动日志和链路配置。

netstat 适合确认网络层面的状态:连接是否异常堆积、端口是否监听、网卡错误计数是否增长。它不能直接说明业务代码哪里有问题,但可以帮助判断问题是不是落在连接、监听端口或链路层面。