Linux netstat 查看网络状态

netstat 用于显示各种网络相关信息,如网络连接、路由表、接口状态、masquerade 连接、多播成员等。

输出信息含义

执行 netstat 后,输出分为两部分:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 9 [ ] DGRAM 5292 /dev/log
  • Active Internet connections(有源 TCP 连接):Recv-QSend-Q 是接收/发送队列,正常应为 0,非 0 表示数据包在队列中堆积。
  • Active UNIX domain sockets(有源 Unix 域套接字):与网络套接字类似,但只用于本机通信,性能可提高一倍。Proto 是协议,RefCnt 是连接进程号,Type 是套接字类型,State 是当前状态,Path 是连接进程使用的路径名。

常见参数

参数 作用
-a 显示所有选项(默认不显示 LISTEN 相关)
-t 仅显示 TCP 相关
-u 仅显示 UDP 相关
-n 拒绝显示别名,能显示数字的全部转为数字
-l 仅列出在 Listen(监听)的服务状态
-p 显示建立相关链接的程序名
-r 显示路由信息(路由表)
-e 显示扩展信息(如 uid)
-s 按各协议统计
-c 每隔固定时间执行一次

提示:LISTEN/LISTENING 状态只有用 -a-l 才能看到。

实用命令实例

列出所有端口

netstat -a      # 所有端口(含监听和未监听)
netstat -at     # 所有 tcp 端口
netstat -au     # 所有 udp 端口

列出监听状态的 Sockets

netstat -l      # 所有监听端口
netstat -lt     # 监听 tcp 端口
netstat -lu     # 监听 udp 端口
netstat -lx     # 监听 UNIX 端口

显示每个协议的统计信息

netstat -s      # 所有协议统计
netstat -st     # TCP 统计
netstat -su     # UDP 统计

显示 PID 和进程名称

netstat -p      # 添加 PID/进程名称,便于找到特定端口运行的程序
netstat -pt

不显示主机、端口和用户名

netstat -an                    # 用数字代替名称,加速输出
netstat -a --numeric-ports
netstat -a --numeric-hosts
netstat -a --numeric-users

持续输出

netstat -c      # 每隔一秒输出一次网络信息

显示不支持的地址族

netstat --verbose

显示核心路由信息

netstat -r      # 路由表
netstat -rn     # 数字格式,不查询主机名

找出程序运行的端口

netstat -ap | grep ssh          # 查看 ssh 相关连接
netstat -an | grep ':80'        # 找出运行在 80 端口的进程

注意:不是所有进程都能找到,无权限的不显示,用 root 权限可查看所有信息。

显示网络接口列表

netstat -i      # 接口列表
netstat -ie     # 接口详细信息(类似 ifconfig)

IP 和 TCP 分析

查看连接某服务端口最多的 IP 地址:

netstat -nat | grep "192.168.1.15:22" | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -20

统计 TCP 各种状态的数量:

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

分析 access.log 获得访问前 10 的 IP:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

   转载规则


《Linux netstat 查看网络状态》 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Linux nc(netcat) 使用指南 Linux nc(netcat) 使用指南
netcat 号称 TCP/IP 的瑞士军刀,以体积小(可执行文件约 200KB)、功能灵活著称,各大发行版默认安装。netcat 主要有 GNU 版本和 OpenBSD 版本,两者在 debian/ubuntu 下均可安装(Windows
2020-01-09
下一篇 
Linux 常用网络工具 Linux 常用网络工具
在 Linux 上监控网络,命令行工具非常实用。常见的工具包括 nethogs、ntopng、nload、iftop、iptraf、bmon、slurm、tcptrack、cbm、netwatch、collectl、trafshow、eth
2019-12-12
  目录