美文网首页
Linux网络状态工具netstat和ss使用详解

Linux网络状态工具netstat和ss使用详解

作者: guo的学习笔记 | 来源:发表于2018-01-17 18:50 被阅读0次

    Netstat简介

      Netstat可用于列出系统所有的网络套接字连接信息,包括处于监听状态的套接字信息。

    语法
    netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--
    listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--
    extend|-e]] [--program|-p]
    
    常用选项
    -t: tcp协议相关;
    -u: udp协议相关;
    -w: raw socket ,原始套接字是一个特殊的套接字类型,它的创建方式跟TCP/UDP创建方法几乎是一摸一样;
    -l: 处于监听状态;
    -a: 所有状态;
    -n: 以数字显示IP和端口,禁止DNS反向查询;
    -e:扩展格式;
    -p: 显示相关进程及PID;
    -s: 列出所有网络协议的统计信息;
    -r:列出路由信息;
    -i:列出网络接口信息;
    -e:显示附加信息,配合其他选项使用;
    -c:持续显示信息,每秒刷新一次,配合其他选项使用;
    -g:显示IPv4和IPv6的多播组成员关系信息。
    
    常用组合

    显示所有的tcp连接,并以数字的方式显示。

    [root@CentOS7.3 ~]#netstat -tan
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
    tcp        0      0 192.168.1xx.1:53        0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
    tcp        0     52 192.168.1xx.130:22      192.168.1xx.1:56747     ESTABLISHED
    tcp        0      0 192.168.1xx.130:22      192.168.1xx.1:56909     ESTABLISHED
    tcp        0      0 192.168.1xx.130:22      192.168.1xx.1:52053     ESTABLISHED
    tcp6       0      0 :::111                  :::*                    LISTEN     
    tcp6       0      0 :::22                   :::*                    LISTEN     
    tcp6       0      0 ::1:631                 :::*                    LISTEN     
    

    显示所有的udp连接信息。

    [root@CentOS7.3 ~]#netstat -uan
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
    udp        0      0 0.0.0.0:25506           0.0.0.0:*                          
    udp        0      0 192.168.122.1:53        0.0.0.0:*                          
    udp        0      0 0.0.0.0:67              0.0.0.0:*                          
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          
    udp        0      0 0.0.0.0:53379           0.0.0.0:*                          
    udp6       0      0 :::23086                :::*                               
    

    只显示处于监听状态的tcp连接。

    [root@CentOS7.3 ~]#netstat -tnl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
    tcp6       0      0 :::111                  :::*                    LISTEN     
    tcp6       0      0 :::22                   :::*                    LISTEN     
    tcp6       0      0 ::1:631                 :::*                    LISTEN 
    

    只显示处于监听状态的udp连接。

    [root@CentOS7.3 ~]#netstat -unl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
    udp        0      0 0.0.0.0:25506           0.0.0.0:*                          
    udp        0      0 192.168.122.1:53        0.0.0.0:*                          
    udp        0      0 0.0.0.0:67              0.0.0.0:*                          
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          
    udp        0      0 0.0.0.0:53379           0.0.0.0:*                          
    udp6       0      0 :::23086                :::*  
    

    列出所有tcp连接的信息,以扩展格式显示。

    [root@CentOS7.3 ~]#netstat -tnle
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode     
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      0          15472     
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      0          22226     
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          21045     
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      0          21400     
    tcp6       0      0 :::111                  :::*                    LISTEN      0          15471     
    tcp6       0      0 :::22                   :::*                    LISTEN      0          21054     
    tcp6       0      0 ::1:631                 :::*                    LISTEN      0          21399     
    

    列出所有tcp连接的信息,并显示其相关的进行和PID(进程号)。

    [root@CentOS7.3 ~]#netstat -tnlp
    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:111             0.0.0.0:*               LISTEN      1/systemd           
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2136/dnsmasq        
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1200/sshd           
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      946/cupsd           
    tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
    tcp6       0      0 :::22                   :::*                    LISTEN      1200/sshd           
    tcp6       0      0 ::1:631                 :::*                    LISTEN      946/cupsd  
    

    持续显示所有的tcp连接。

    [root@CentOS7.3 ~]#netstat -tanc
    

    显示路由表和使用route -n 列出的信息相同.

    [root@CentOS7.3 ~]#netstat -rn  
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         192.168.166.1   0.0.0.0         UG        0 0          0 eth0
    0.0.0.0         172.17.0.1      0.0.0.0         UG        0 0          0 eth1
    172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth1
    192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
    192.168.166.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
    

    ss简介

      ss是Socker Statistics的缩写,是一款非常适用、快速、跟踪显示的网络套接字的新工具。它和netstat显示的内容类似,但它比netstat更加强大。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。而用ss可以快速、有效的执行并得到结果。ss利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

    语法格式
    ss [OPTION]... [FILTER]
    
    常用选项
    -t: tcp协议相关;
    -u: udp协议相关;
    -w: 裸套接字相关;
    -x: unix sock相关;
    -l: listen状态的连接;
    -a: 显示所有sockets信息;
    -n: 数字格式;
    -p: 相关的程序及PID;
    -e: 扩展的信息;
    -m:内存用量;
    -o:计时器信息;
    -s:显示当前sockets的统计信息的摘要;
    -i:显示系统内部tcp连接;
    -r:解析主机名;
    -4:仅显示IPv4的sockets连接;
    -6:仅显示IPv6的sockets连接;
    

    常用选项示例

    [root@CentOS7.3 ~]#ss -an               #列出所有的sockets连接。   
    [root@CentOS7.3 ~]#ss -tnl              #列出和tcp相关的sockets连接。
    [root@CentOS7.3 ~]#ss -unl              #列出和udp相关的sockets连接。
    

    匹配过滤本机ip地址和端口

    [root@centos7.3 ~]#ss src :22               #匹配本机端口为22的连接
    Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
    tcp   ESTAB      0      0      192.168.xxx.xxx:ssh                   192.168.166.1:63892                
    tcp   ESTAB      0      52     192.168.xxx.xxx:ssh                   192.168.166.1:63076  
    [root@centos7.3 ~]#ss src :ssh              #匹配所有ssh协议的连接
    Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
    tcp   ESTAB      0      0      192.168.166.137:ssh                   192.168.166.1:63892                
    tcp   ESTAB      0      52     192.168.166.137:ssh                   192.168.166.1:63076                
    [root@centos7.4-1 ~]#ss src 192.168.1.2:ssh     #匹配单个IP地址的ssh协议连接
    Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
    tcp   ESTAB      0      0      192.168.166.137:ssh                   192.168.166.1:63892                
    tcp   ESTAB      0      52     192.168.166.137:ssh                   192.168.166.1:63076                
    

    匹配过滤远程ip地址和端口

    [root@centos7.4-1 ~]#ss dst 119.75.213.61           #匹配单个远程IP的所有连接
    Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
    tcp   ESTAB      0      0        192.168.0.25:59484                 119.75.213.61:http                 
    [root@centos7.4-1 ~]#ss dst 119.75.213.61:80        #只匹配单个IP地址的80端口
    Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
    tcp   ESTAB      0      0        192.168.0.25:59484                 119.75.213.61:http                 
    

    将本地或者远程端口和一个数比较

    [root@centos7.3 ~]# ss  sport = :http 
    [root@centos7.3 ~]# ss  dport = :http 
    [root@centos7.3 ~]# ss  dport \> :1024 
    [root@centos7.3 ~]# ss  sport \> :1024 
    [root@centos7.3 ~]# ss sport \< :32000 
    [root@centos7.3 ~]# ss  sport eq :22 
    [root@centos7.3 ~]# ss  dport != :22 
    

    使用state 过滤sockets信息

    显示所有状态为established的http连接

    [root@CentOS7.3 ~]#ss -o state established '( dport = :smtp or sport = :http )' 
    Netid Recv-Q Send-Q       Local Address:Port                        Peer Address:Port 
    

    显示处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 192.168.1/24所有 tcp套接字

    ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 192.168.1/24
    

    使用tcp连接的状态进行过滤

    ss -4 state FILTER-NAME-HERE
    ss -6 state FILTER-NAME-HERE
    

    FILTER-NAME-HERE 可用状态:

    established
    syn-sent
    syn-recv
    fin-wait-1
    fin-wait-2
    time-wait
    closed
    close-wait
    last-ack
    closing
    all             #所有以上状态。
    connected       #除了listen and closed的所有状态。
    synchronized    #所有已连接的状态除了syn-sent。
    bucket          #显示状态为maintained as minisockets,如:time-wait和syn-recv。
    big             #和bucket相反。
    
    [root@CentOS7.3 ~]#ss -4 state closed
    Netid Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
    udp   0      0                        *:mdns                                   *:*                    
    udp   0      0                        *:25506                                  *:*                    
    udp   0      0            192.168.xxx.1:domain                                 *:*                    
    udp   0      0                 *%virbr0:bootps                                 *:*                    
    udp   0      0                        *:bootpc                                 *:*                    
    udp   0      0                        *:53379                                  *:*  
    

    相关文章

      网友评论

          本文标题:Linux网络状态工具netstat和ss使用详解

          本文链接:https://www.haomeiwen.com/subject/twwuoxtx.html