Linux网络状态查看工具netstat详解
netstat命令概览
netstat用于展示系统中网络连接、路由表、接口统计及协议状态等信息。其功能已逐渐被更高效的ss命令取代,但仍在部分场景中使用。
netstat [地址族选项] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [-all|-a]
[--numeric|-n] [--numeric-hosts] [--numeric-ports] [--symbolic|-N] [--extend|-e]
[--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c] [延迟时间]
netstat {--route|-r} [地址族选项] [--extend|-e] [--verbose|-v] [--numeric|-n] [延迟时间]
netstat {--interfaces|-I|-i} [接口名] [--all|-a] [--extend|-e] [--verbose|-v]
[--program|-p] [--numeric|-n] [--continuous|-c] [延迟时间]
netstat {--groups|-g} [--numeric|-n] [--continuous|-c] [延迟时间]
netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--continuous|-c] [延迟时间]
netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w] [延迟时间]
netstat {--version|-V} | {--help|-h}
地址族选项说明
--protocol={inet,inet6,unix,ipx,ax25,netrom,ddp,...}:指定协议族,如IPv4(inet)、IPv6(inet6)、Unix域套接字(unix)等。--unix|-x:仅显示Unix域套接字。--inet|-ip:显示IPv4相关连接。--inet6:显示IPv6相关连接。
主要功能模式
--route:显示内核路由表。--groups:显示IPv4/IPv6组播成员关系。--interfaces:显示网络接口状态与流量统计。--masquerade:查看NAT伪装连接。--statistics:输出各协议的详细统计信息。
常用参数解析
| 参数 | 含义 |
|---|---|
-a / --all | 显示所有连接,包括监听和已建立的。 |
-l / --listening | 仅显示处于监听状态的套接字。 |
-n / --numeric | 以数字形式显示地址和端口,不进行域名或服务名解析。 |
-u / --udp | 仅显示UDP协议连接。 |
-t / --tcp | 仅显示TCP协议连接。 |
-p / --program | 显示每个套接字关联的进程PID与名称(需root权限)。 |
-e / --extend | 显示额外信息,重复使用可获取更详细数据。 |
-o / --timers | 包含计时器相关信息。 |
-c / --continuous | 持续刷新输出,每秒一次(可自定义间隔)。 |
-v / --verbose | 启用详细模式,输出更多信息。 |
典型使用示例
1. 查看当前所有活跃网络连接
[user@host ~]$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:mdns 0.0.0.0:*
2. 显示所有本地端口(含监听)并以数字格式呈现
[user@host ~]$ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:5353 0.0.0.0:*
3. 查看特定协议的连接详情(如UDP)
[user@host ~]$ netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:5353 0.0.0.0:*
4. 查看网络接口状态
[user@host ~]$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 330372 0 0 0 41459 0 0 0 BMRU
lo 65536 32 0 0 0 32 0 0 0 LRU
5. 显示系统路由配置
[user@host ~]$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
6. 获取网络协议统计信息
[user@host ~]$ netstat -s
Ip:
78191 total packets received
69729 incoming packets delivered
41276 requests sent out
Tcp:
16 active connections openings
69351 segments received
40743 segments send out
17 segments retransmited
Udp:
341 packets received
444 packets sent
重要注意事项
- netstat已被标记为过时,推荐使用
ss命令替代。 - 路由信息建议使用
ip route show而非netstat -r。 - 接口统计应使用
ip -s link替代netstat -i。 - 组播成员信息可通过
ip maddr show查询。 - 查看非自身拥有的套接字需具备root权限。
底层数据源
netstat的数据来源于/proc文件系统中的多个子目录:
/proc/net/dev:网络设备统计数据。/proc/net/tcp:TCP连接状态。/proc/net/udp:UDP连接状态。/proc/net/route:IP路由表信息。/proc/net/unix:Unix域套接字信息。/proc/net/snmp:协议统计信息。