1. 写在前面
本文主要介绍 Linux netstat(network and statistics)
命令: 用于分析网络统计数据的命令行工具。可以显示各种统计数据,如主机系统上的开放端口和相应地址、路由表和伪装连接。
关注 公众号 获取最新博文: 滑翔的纸飞机
2. 如何在 Linux 中使用 netstat 命令?
2.1 前提条件
-
终端命令行工具;
-
已安装
net-tools
软件包:包含netstat
的软件包称为net-tools
。在当前Linux系统中,netstat
工具已预装,无需安装。但在旧系统上,运行netstat
命令时很可能会出错。bash: netstat: command not found
因此,要在 Linux 发行版上安装
netstat
,请运行以下命令:$ sudo apt install net-tools [On Debian, Ubuntu and Mint] $ sudo yum install net-tools [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/net-tools [On Gentoo Linux] $ sudo apk add net-tools [On Alpine Linux] $ sudo pacman -S net-tools [On Arch Linux] $ sudo zypper install net-tools [On OpenSUSE]
2.2 基本用法
netstat
常用方式不带参数输出:
root@dev:~# netstat
-------------------------------------------------------------------------
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 postgres:58288 postgres:amqp ESTABLISHED
tcp 0 0 postgres:45566 postgres:6379 ESTABLISHED
tcp 0 0 postgres:58312 postgres:amqp ESTABLISHED
tcp 0 0 postgres:36178 postgres:postgresql TIME_WAIT
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 23733 /var/lib/haproxy/dev/log
unix 2 [ ] DGRAM 1594464 /run/user/1000/systemd/notify
unix 2 [ ] DGRAM 40530 /run/user/0/systemd/notify
如上所示:netstat
输出包含上下2部分:
Active Internet connections (w/o servers):
显示主机上已建立的网络连接,详情如下(列表字段含义):
Proto – 连接协议(TCP、UDP);
Recv-Q – 已接收/准备接收 bytes 的接收队列;
Send-Q – 待发送 bytes 的发送队列;
Local address – 本地连接的详细地址和端口。如果端口尚未建立,主机中的星号 (*) 表示服务器正在监听;
Foreign address– 连接远端的详细地址和端口。如果端口尚未建立,则会出现星号 (*);
State – 本地 socket 的状态,通常为 ESTABLISHED、LISTENING、CLOSED 或空白;
-
Active UNIX domain sockets (w/o servers):
显示所有活动的 “Unix Domain” 开放套接字,详情如下(列表字段含义):Proto – 套接字使用的协议(始终为 unix); RefCnt – 连接到此套接字的进程数的引用计数; Flags – 通常是 ACC 或空白; Type – socket 类型; State – socket状态,通常为CONNECTED、LISTENING或空白; I-Node – 与此套接字关联的文件系统 inode(索引节点); Path – socket 系统路径;
另外,除了这里介绍的主要用法外,还可以通过
netstat
选项过滤网络信息。语法如下:netstat [options] 或 netstat [option 1] [option 2] [option 3]
常用参数:
参数 | 描述 |
---|---|
–route, -r | 显示内核路由表。netstat -r 和 route -e 的输出结果相同 |
–groups, -g | 显示 IPv4 和 IPv6 的多播组成员信息 |
–interfaces, -i | 显示所有网络接口表 |
–masquerade, -M | 显示伪装连接列表 |
–statistics, -s | 显示每个协议的汇总统计数据 |
–verbose, -v | 显示指令执行过程 |
–wide, -W | 不截断 IP 地址,根据需要使用尽可能宽的输出 |
–numeric, -n | 直接使用IP地址,而不通过域名、端口或用户名 |
–numeric-hosts | 显示IP地址,但不影响端口或用户名的解析 |
–numeric-ports |