Linux netstat命令

Linux 命令大全

Linux netstat 命令用于显示网络状态。

利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

netstat 语法

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

参数说明

  • -a或--all 显示所有连线中的Socket。

  • -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。

  • -c或--continuous 持续列出网络状态。

  • -C或--cache 显示路由器配置的快取信息。

  • -e或--extend 显示网络其他相关信息。

  • -F或--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或--statistics 显示网络工作信息统计表。

  • -t或--tcp 显示TCP传输协议的连线状况。

  • -u或--udp 显示UDP传输协议的连线状况。

  • -v或--verbose 显示指令执行过程。

  • -V或--version 显示版本信息。

  • -w或--raw 显示RAW传输协议的连线状况。

  • -x或--unix 此参数的效果和指定"-A unix"参数相同。

  • --ip或--inet 此参数的效果和指定"-A inet"参数相同。

[root@xinbiancheng.cn$] netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:34336         localhost:27017         ESTABLISHED
tcp        0      0 localhost:57938         localhost:27017         TIME_WAIT  
tcp        0      0 localhost:35138         localhost:27017         ESTABLISHED
......省略部分显示信息
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  5      [ ]         DGRAM                    522      /run/systemd/journal/socket
unix  3      [ ]         STREAM     CONNECTED     121893172 
......省略部分显示信息

说明:

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

套接口类型:

-t :TCP

-u :UDP

-raw :RAW类型

--unix :UNIX域类型

--ax25 :AX25类型

--ipx :ipx类型

--netrom :netrom类型

状态说明:

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

netstat -i 显示网卡列表

[root@xinbiancheng.cn$] netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500 18296595      0      0 0      19052324      0      0      0 BMRU
lo              65536 14702125086      0      0 0      14702125086      0      0      0 LRU

netstat -g 显示组播组的关系

[root@xinbiancheng.cn$] netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
eth0            1      ff02::1
eth0            1      ff01::1

netstat -s 显示网络统计信息

[root@xinbiancheng.cn$] netstat -s|more -5
Ip:
    14719267726 total packets received
    0 forwarded
    0 incoming packets discarded
    14719267716 incoming packets delivered
    14720717539 requests sent out
    720 dropped because of missing route
    10 reassemblies required
    5 packets reassembled ok
--More--

netstat -s 显示的信息有点多,所以后面跟一个 more 指令 先显示5条信息,如果想继续看信息,直接回车即可。

netstat -e 显示关于以太网的统计数据

说明:

用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)

[root@xinbiancheng.cn$] netstat -e|more
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode     
tcp        0      0 localhost:27017         localhost:35538         ESTABLISHED root       91270615 
......省略部分显示信息
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  5      [ ]         DGRAM                    522      /run/systemd/journal/socket
unix  3      [ ]         STREAM     CONNECTED     121893172 
......省略部分显示信息

netstat 显示路由信息

netstat -r

route -n   【也可以显示路由信息】

[root@xinbiancheng.cn$] netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 eth0
link-local      0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.26.128.0    0.0.0.0         255.255.240.0   U         0 0          0 eth0

netstat 和 awk 配合 统计机器中网络连接各个状态个数

[root@xinbiancheng.cn$] netstat -an | awk '/^tcp/ {++S[$NF]}  END {for (a in S) print a,S[a]} '
LISTEN 11
ESTABLISHED 3060
FIN_WAIT2 2
TIME_WAIT 1

netstat 把状态全都取出来后使用uniq -c统计后再通过 sort -n 进行排序

[root@xinbiancheng.cn$] netstat -ant|awk '{print $6}' | uniq -c | sort -n
      1 established)
      1 ESTABLISHED
      1 FIN_WAIT2
      1 Foreign
      3 LISTEN
      8 LISTEN
     92 ESTABLISHED
   2969 ESTABLISHED

netstat 通过grep查看连接某服务端口最多的的IP地址

[root@xinbiancheng.cn$] netstat -ant|grep "*"|awk '{print $5}'|awk -F: '{print $1}'|sort -nr|uniq -c
   2972 127.0.0.1
      2 0.0.0.0

netstat 查找某个程序运行的端口

[root@xinbiancheng.cn$] netstat -ap | grep ssh
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      2491/sshd           
tcp        0      0 iz8vbbxoyfcgyzkxcsp:ssh 117.152.84.92:11086     ESTABLISHED 675/sshd: root@pts/ 
tcp        0      0 iz8vbbxoyfcgyzkxcsp:ssh 117.152.84.92:10629     ESTABLISHED 1061/sshd: root@not 
unix  2      [ ]         DGRAM                    124207808 1061/sshd: root@not  
unix  3      [ ]         STREAM     CONNECTED     19715    2491/sshd            
unix  2      [ ]         DGRAM                    124207376 675/sshd: root@pts/ 

在 netstat 输出中显示 TCP连接信息

netstat -pt

[root@xinbiancheng.cn$] netstat -pt|more
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 localhost:27017         localhost:35538         ESTABLISHED 16863/mongod        
tcp        0      0 localhost:36036         localhost:27017         ESTABLISHED 19931/java
......省略显示信息

netstat -p 获取进程名、进程号以及用户 ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。

[root@xinbiancheng.cn$] netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2491/sshd           
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      31029/python3       
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      16863/mongod        
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      11368/./bin/redis-s 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19931/java          
tcp6       0      0 :::3001                 :::*                    LISTEN      23347/node /usr/loc 
tcp6       0      0 :::3306                 :::*                    LISTEN      1541/mysqld         
tcp6       0      0 :::6379                 :::*                    LISTEN      11368/./bin/redis-s 

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

[root@xinbiancheng.cn$] netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      root       19773      2491/sshd           
tcp        0      0 0.0.0.0:ddi-tcp-1       0.0.0.0:*               LISTEN      root       104865192  31029/python3       
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN      root       48323886   19931/java          
tcp        0      0 localhost:mxi           0.0.0.0:*               LISTEN      root       48323900   19931/java          
tcp        0      0 localhost:27017         0.0.0.0:*               LISTEN      root       91268072   16863/mongod        
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      root       48324850   19931/java          
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      root       82669426   11368/./bin/redis-s 
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN      root       48323882   19931/java          
tcp6       0      0 [::]:origo-native       [::]:*                  LISTEN      root       91278128   23347/node /usr/loc 
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      mysql      17817      1541/mysqld         
tcp6       0      0 [::]:6379               [::]:*                  LISTEN      root       82669425   11368/./bin/redis-s

上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 - 假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

netstat -a 显示详细的网络状况实例

[root@xinbiancheng.cn$] netstat -a

netstat -nu 显示当前UDP连接状况

[root@xinbiancheng.cn$] netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State

netstat 显示UDP端口号的使用情况

[root@xinbiancheng.cn$] netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*                           967/dhclient        
udp        0      0 iz8vbbxoyfcgyzkxcsp:ntp 0.0.0.0:*                           592/ntpd            
udp        0      0 localhost:ntp           0.0.0.0:*                           592/ntpd            
udp        0      0 0.0.0.0:ntp             0.0.0.0:*                           592/ntpd            
udp6       0      0 [::]:ntp                [::]:*                              592/ntpd

netstat -l 显示监听的套接口

[root@xinbiancheng.cn$] netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ddi-tcp-1       0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:mxi           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:origo-native       [::]:*                  LISTEN     
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN     
tcp6       0      0 [::]:6379               [::]:*                  LISTEN     
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*                          
udp        0      0 iz8vbbxoyfcgyzkxcsp:ntp 0.0.0.0:*                          
udp        0      0 localhost:ntp           0.0.0.0:*                          
udp        0      0 0.0.0.0:ntp             0.0.0.0:*                          
udp6       0      0 [::]:ntp                [::]:*                             
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     519      /run/systemd/journal/stdout
unix  2      [ ACC ]     SEQPACKET  LISTENING     10811    /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     123606674 /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix  2      [ ACC ]     STREAM     LISTENING     17818    /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     91268071 /tmp/mongodb-27017.sock
unix  2      [ ACC ]     STREAM     LISTENING     12472    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     91277359 /root/.pm2/pub.sock
unix  2      [ ACC ]     STREAM     LISTENING     91277360 /root/.pm2/rpc.sock
unix  2      [ ACC ]     STREAM     LISTENING     10733    /run/systemd/private

netstat 常用组合:

[root@xinbiancheng.cn$] netstat -lntup  
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2491/sshd           
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      31029/python3       
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      16863/mongod        
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      19931/java          
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      11368/./bin/redis-s 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19931/java          
tcp6       0      0 :::3001                 :::*                    LISTEN      23347/node /usr/loc 
tcp6       0      0 :::3306                 :::*                    LISTEN      1541/mysqld         
tcp6       0      0 :::6379                 :::*                    LISTEN      11368/./bin/redis-s 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           967/dhclient        
udp        0      0 172.26.142.55:123       0.0.0.0:*                           592/ntpd            
udp        0      0 127.0.0.1:123           0.0.0.0:*                           592/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           592/ntpd            
udp6       0      0 :::123                  :::*                                592/ntpd

更多帮助信息 netstat --help

[root@xinbiancheng.cn$] netstat --help
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

        -r, --route              display routing table
        -I, --interfaces=<Iface> display interface table for <Iface>
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            be verbose
        -W, --wide               don't truncate IP addresses
        -n, --numeric            don't resolve names
        --numeric-hosts          don't resolve host names
        --numeric-ports          don't resolve port names
        --numeric-users          don't resolve user names
        -N, --symbolic           resolve hardware names
        -e, --extend             display other/more information
        -p, --programs           display PID/Program name for sockets
        -o, --timers             display timers
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all                display all sockets (default: connected)
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB
        -Z, --context            display SELinux security context for sockets

  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
    x25 (CCITT X.25) 

Linux 命令大全