首页/安全/应急响应速查/netstat 传统连接查看

netstat 传统连接查看

net-tools 时代的经典命令,老系统与部分精简发行版仍在用;理解它的输出才能与存量文档和老截图对齐。

应急响应速查安全更新于 2026-10-13

netstat 的定位

netstat 是 net-tools 时代的经典命令,老系统与部分精简发行版仍在使用。它的输出格式与 ss 有出入,读懂它才能与存量文档、历史截图和旧脚本对齐。

现在的取舍

RHEL 9 与较新 Ubuntu 默认不再预装 net-tools,且连接数很大时 netstat 明显更慢。现场流程通常是先确认工具是否存在,再决定走 netstat 还是 ss。

基本信息

TCP 全量netstat -antp
仅监听netstat -lntp
UDPnetstat -anup
数字输出-n 不解析服务名,提速并避免误读
进程归属-p 只有 root 才能看到全部进程
权限要求普通用户可查连接,进程归属通常需 root

典型使用场景

  • 老系统或精简镜像上排查网络连接
  • 与历史文档、截图里的输出对照
  • 确认系统是否安装了 net-tools
  • 查看路由表(netstat -rn)与协议统计
  • ss 不可用或行为异常时作为替代

常用组合

常用组合
which netstat || echo 'net-tools 未安装'    # 先确认工具是否存在
netstat -antp | head -n 30
netstat -lntp
netstat -antp | awk '$6=="ESTABLISHED"' | head -n 20
netstat -rn | head -n 20                    # 路由表
netstat -s | head -n 20                     # 协议统计:重传与错误计数

输出逐列读法

列含义正常/异常
Recv-Q / Send-Q收发队列长度长期非 0 说明处理不过来或连接阻塞
Local Address本地地址与端口监听端口应是预期清单内的项
Foreign Address对端地址陌生公网地址的已建立连接需核对
State连接状态大量 SYN_SENT 说明外连被拦或目标不可达
netstat 与 ss 的参数基本可以互译:netstat -antp 对应 ss -antp,netstat -lntp 对应 ss -lntp,netstat -rn 对应 ip route,存量脚本迁移时按此对照。
解析脚本不要按固定列号:加不加 -p、-n 都会改变列数,先用 head 确认格式再写 awk,否则统计全错。

与 ss 结果交叉验证

与 ss 结果交叉验证
netstat -ant | wc -l
ss -ant | wc -l                      # 两个数字接近说明结果一致
netstat -antp | grep -c 'LISTEN'
ss -lnt | wc -l

老系统上的替代做法

  • 连接查询用 ss 替代,路由查询用 ip route 替代
  • 直接读 /proc/net/tcp 内核连接表,注意十六进制转换
  • 用 lsof -i 做进程与连接的关联查询
  • 工具缺失时从可信介质带入静态编译版本

仍在用 netstat 的常见原因

  • 存量巡检脚本按旧格式解析输出
  • 精简镜像未安装 iproute2 或工具被裁剪
  • 合规文档要求按固定模板留档
  • 与交换机、防火墙侧命令行习惯保持一致

易错点

  • 在十万连接的机器上跑 netstat:卡住业务窗口还拿不到完整结果
  • 按固定列号解析输出:加不加 -p 列数不同,统计结果出错
  • 以为新系统一定有 netstat:net-tools 默认未安装,现场先确认
  • 只看 LISTEN 状态:外连与半开连接同样是排查重点
  • 忽略队列列:Recv-Q 与 Send-Q 堆积本身就是故障线索

数据来源与参考

  • man 8 netstat(net-tools)
  • iproute2 项目 ss 迁移说明

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌