Linux netstat 网络连接排查:从端口占用到连接状态

当 Linux 服务器出现服务访问不通、端口被占用或连接数异常时,netstat 是最直接的排查工具之一。
它能查看监听端口、已建立连接、路由表和网络接口统计,帮你快速定位问题出在哪一层。

不过现在很多新系统默认不再预装 netstat,而且部分场景下 ss 命令更高效。
下面按零基础也能照做的顺序,讲清楚怎么安装、怎么查、怎么看结果,以及哪些地方容易踩坑。

先确认 netstat 是否可用

登录服务器后,先执行:

netstat -V

如果提示 command not found,说明当前系统没有安装 net-tools 包。
不同发行版安装方式不同:

  • Debian/Ubuntu:apt update && apt install -y net-tools
  • CentOS/RHEL:yum install -y net-tools
  • Rocky/AlmaLinux:dnf install -y net-tools

安装完成后再次执行 netstat -V,能输出版本信息即表示可用。

注意: 如果服务器没有外网,需要先配置本地 yum 源或 apt 源,否则安装会失败。

排查端口监听与连接状态

netstat 的参数很多,排查时不需要全记。
下面几个组合覆盖了大部分场景。

查看所有监听端口

netstat -tlnp

参数含义:

  • -t:显示 TCP 连接
  • -l:只显示监听状态
  • -n:不解析域名和服务名,直接显示 IP 和端口号
  • -p:显示占用端口的进程 PID 和程序名

输出中 Local Address 一列冒号后面的数字就是监听端口,PID/Program name 显示是哪个进程在监听。
如果只想看某个端口,比如 80:

netstat -tlnp | grep :80

有输出说明端口正在被监听;
没有输出说明服务没起来,或者监听在其他端口上。

查看已建立的连接

netstat -antp | grep ESTABLISHED

ESTABLISHED 表示连接已经建立。
如果某个 IP 出现大量 ESTABLISHED 连接,可能是正常业务流量,也可能是异常连接,需要结合业务判断。

查看连接状态统计

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn

这条命令会统计 TIME_WAIT、ESTABLISHED、LISTEN 等状态的数量。
TIME_WAIT 偏多通常是短连接频繁创建销毁导致,不一定是故障,但数量持续很高时需要关注。

定位端口占用与进程

服务启动报错“Address already in use”时,说明端口被占用。
用下面命令找到占用进程:

netstat -tlnp | grep :8080

输出示例:

tcp6 0 0 :::8080 :::* LISTEN 12345/java

其中 12345 是 PID,java 是程序名。
确认这个进程是否需要保留:

  • 如果是旧进程残留,可以用 kill 12345 结束,必要时用 kill -9 12345 强制结束
  • 如果不确定进程用途,先用 ps -fp 12345 查看启动命令,避免误杀关键服务

避坑点: 直接 kill -9 可能导致数据丢失或服务异常,优先用普通 kill,等待几秒后再确认。

常见查不到结果的原因

执行 netstat 后没有输出或输出不符合预期,通常有这几类原因:

  • 权限不足:普通用户看不到进程信息,需要 sudo netstat -tlnp 或切换到 root
  • 服务只监听 IPv6:输出显示 tcp6 和 :::,此时 IPv4 访问可能不通,需要检查服务配置
  • 端口监听在 127.0.0.1:只允许本机访问,外部连接会被拒绝,需要改为 0.0.0.0 或具体网卡 IP
  • 防火墙拦截:端口在监听但外部不通,检查 firewalld、ufw 或云安全组规则

排查顺序建议:先确认服务进程存在,再确认端口监听,最后检查防火墙和安全组。

用 ss 替代 netstat 的简单对照

现代 Linux 更推荐 ss,它默认已安装且速度更快。
常用对照如下:

  • netstat -tlnp 对应 ss -tlnp
  • netstat -antp 对应 ss -antp
  • netstat -anp | grep ESTABLISHED 对应 ss -anp | grep ESTABLISHED

如果服务器上 netstat 不可用,可以直接用 ss,输出格式略有差异但排查思路一致。

验证排查结果

完成操作后,按下面几步确认问题是否解决:

  1. 再次执行 netstat -tlnp | grep :端口号,确认目标端口处于 LISTEN 状态
  2. 用 curl -I http://127.0.0.1:端口号 在本机测试,排除网络和防火墙干扰
  3. 从外部客户端用 telnet IP 端口号 或 nc -zv IP 端口号 测试连通性
  4. 如果服务有日志,查看日志中是否还有报错信息

本机通、外部不通,基本可以定位到防火墙或安全组;
本机也不通,则回到服务配置和进程状态继续排查。

几个容易忽略的细节

  • netstat 输出中的 Recv-Q 和 Send-Q 在 LISTEN 状态下表示等待处理的连接队列,数值持续偏高说明服务处理不过来
  • TIME_WAIT 是正常状态,不要一看到就急着调内核参数
  • 排查完成后记得记录端口和进程对应关系,方便下次快速定位
  • 涉及修改防火墙或结束进程前,先确认业务影响范围,必要时做好备份和回滚准备

如果你正在处理 Linux netstat 网络连接排查,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
Linux sed批量替换文本:从单文件到多目录的实操方法
下一篇
Linux top命令详解:从看懂界面到定位高负载进程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意