Linux netstat command

简介

在Internet RFC标准中, Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

Netstat 是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息

Netstat 用于显示与IP、TCPUDPICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

作用

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

用法

一般用netstat -an 来显示所有连接的端口并用数字表示。若使用时不带参数,netstat显示活动的 TCP 连接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@hadoop-centos-01 ~]# netstat | more
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 48 hadoop-centos-01:ssh 192.168.xxx.x:49299 ESTABLISHED
tcp 0 0 hadoop-centos-01:ssh 192.168.xxx.x:49304 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 9134 /run/systemd/notify
unix 2 [ ] DGRAM 9136 /run/systemd/cgroups-agent
unix 2 [ ] DGRAM 277787
unix 3 [ ] STREAM CONNECTED 48707
unix 3 [ ] STREAM CONNECTED 48794 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 36513 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 48948 @/tmp/dbus-iOMFhoTUUK

输出结果可分为两个部分:

  • Active Internet connections(有源TCP连接)

    Proto :显示连接使用的协议

    Recv-Q : 接收队列

    Send-Q : 发送队列

    Local Address

    Foreign Address

    State

    注: “Recv-Q”和”Send-Q”一般都应该是0。如果不是则表示软件包正在队列中堆积,这种情况非常少见。

  • Active UNIX domain sockets (有源Unix域套接口)

    Proto :显示连接使用的协议

    RefCnt :表示连接到本套接口上的进程数量

    Flags

    Type: 显示套接口的类型

    State :显示套接口当前的状态

    I-Node

    Path :表示连接到套接口的其它进程使用的路径名

语法格式

1
2
3
4
netstat [-vWeenNcCF] [<Af>] -r  
netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

参数选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-a或--all:显示所有连线中的Socket; 
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。

参数示例

列出所有端口情况

1
2
3
[root@hadoop-centos-01 ~]# netstat -a   # 列出所有端口
[root@hadoop-centos-01 ~]# netstat -au # 列出所有UDP端口
[root@hadoop-centos-01 ~]# netstat -at # 列出所有TCP端口

列出所有处于监听状态的 Sockets

1
2
3
4
[root@hadoop-centos-01 ~]# netstat -l	 # 只显示监听端口
[root@hadoop-centos-01 ~]# netstat -lt # 显示监听TCP端口
[root@hadoop-centos-01 ~]# netstat -lu # 显示监听UDP端口
[root@hadoop-centos-01 ~]# netstat -lx # 显示监听UNIX端口

显示每个协议的统计信息

1
2
3
[root@hadoop-centos-01 ~]# netstat -s     # 显示所有端口的统计信息
[root@hadoop-centos-01 ~]# netstat -st # 显示所有TCP的统计信息
[root@hadoop-centos-01 ~]# netstat -su # 显示所有UDP的统计信息

显示 PID 和进程名称

1
2
3
4
5
6
7
8
9
10
11
12
[root@hadoop-centos-01 ~]# netstat -p | more
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 hadoop-centos-01:ssh 192.168.244.6:49299 ESTABLISHED 28069/sshd: root@pt
tcp 0 0 hadoop-centos-01:ssh 192.168.244.6:49304 ESTABLISHED 28073/sshd: root@no
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 3 [ ] DGRAM 9134 1/systemd /run/systemd/notify
unix 3 [ ] STREAM CONNECTED 48948 7427/dbus-daemon @/tmp/dbus-iOMFhoTUUK
unix 3 [ ] STREAM CONNECTED 48796 7568/gsd-power
unix 3 [ ] STREAM CONNECTED 48947 7571/gsd-rfkill
unix 3 [ ] STREAM CONNECTED 37682 6618/abrt-watch-log

显示核心路由信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@hadoop-centos-01 ~]# 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
link-local 0.0.0.0 255.255.0.0 U 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.244.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

[root@hadoop-centos-01 ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.244.2 0.0.0.0 UG 0 0 0 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.244.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

查看端口和服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@hadoop-centos-01 ~]# netstat -anp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7039/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 28069/sshd: root@pt
tcp 0 0 192.168.244.11:22 192.168.244.6:49299 ESTABLISHED 28069/sshd: root@pt
tcp 0 0 192.168.244.11:22 192.168.244.6:49304 ESTABLISHED 28073/sshd: root@no
tcp6 0 0 :::22 :::* LISTEN 7039/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 28069/sshd: root@pt
unix 3 [ ] STREAM CONNECTED 42737 7039/sshd
unix 2 [ ] DGRAM 278152 28069/sshd: root@pt
unix 2 [ ] DGRAM 278281 28073/sshd: root@no

[root@hadoop-centos-01 ~]# netstat -anp | grep 7039
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7039/sshd
tcp6 0 0 :::22 :::* LISTEN 7039/sshd
unix 3 [ ] STREAM CONNECTED 42737 7039/sshd
-------------本文结束感谢您的阅读-------------