Linux工具之ss
阅读原文时间:2023年07月12日阅读:1

1、SS命令

(Socket   Statistics),获取socket统计信息,显示和netstat类似的内容。显示更详细的TCP连接信息。

命令功能:

ss(Socket Statistics 的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,

但它能显示更多更详细的 TCP连接状态的信息, 且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag

(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使 得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。

2、命令参数

-h, --help 帮助信息

-V, --version 程序版本信息

-n, --numeric 不解析服务名称

-r, --resolve        解析主机名

-a, --all 显示所有套接字(sockets)

-l, --listening 显示监听状态的套接字(sockets)

-o, --options        显示计时器信息

-e, --extended       显示详细的套接字(sockets)信息

-m, --memory         显示套接字(socket)的内存使用情况

-p, --processes 显示使用套接字(socket)的进程

-i, --info 显示 TCP内部信息

-s, --summary 显示套接字(socket)使用概况

-4, --ipv4           仅显示IPv4的套接字(sockets)

-6, --ipv6           仅显示IPv6的套接字(sockets)

-0, --packet         显示 PACKET 套接字(socket)

-t, --tcp 仅显示 TCP套接字(sockets)

-u, --udp 仅显示 UCP套接字(sockets)

-d, --dccp 仅显示 DCCP套接字(sockets)

-w, --raw 仅显示 RAW套接字(sockets)

-x, --unix 仅显示 Unix套接字(sockets)

-f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink

-A, --query=QUERY, --socket=QUERY

      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件

-F, --filter=FILE   从文件中都去过滤器信息

       FILTER := [ state TCP-STATE ] [ EXPRESSION ]

3、使用实例

1 )显示TCP连接

ss   -t  -a

[root@natasha ~]# ss  -t  -a

State      Recv-Q Send-Q          Local Address:Port              Peer Address:Port  

LISTEN     0      128                         *:44993                        *:*      

LISTEN     0      128                        :::sunrpc                      :::*      

LISTEN     0      128                         *:sunrpc                       *:*      

LISTEN     0      128                        :::43892                       :::*      

LISTEN     0      128                        :::ssh                         :::*      

LISTEN     0      128                         *:ssh                          *:*      

LISTEN     0      128                 127.0.0.1:ipp                          *:*      

LISTEN     0      128                       ::1:ipp                         :::*      

LISTEN     0      100                       ::1:smtp                        :::*      

LISTEN     0      100                 127.0.0.1:smtp                         *:*      

ESTAB      0      0             192.168.180.119:ssh              192.168.180.1:4932

2  )显示Sockets摘要

ss   -s

[root@natasha ~]# ss -s

Total: 171 (kernel 188)

TCP:   11 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 6

Transport Total     IP        IPv6

*         188       -         -       

RAW       0         0         0       

UDP       8         5         3       

TCP       11        6         5       

INET      19        11        8       

FRAG      0         0         0 

3 ) 列出所有打开的网络连接端口

ss   -l

[root@natasha ~]# ss -l

State      Recv-Q Send-Q          Local Address:Port              Peer Address:Port  

LISTEN     0      128                         *:44993                        *:*      

LISTEN     0      128                        :::sunrpc                      :::*      

LISTEN     0      128                         *:sunrpc                       *:*      

LISTEN     0      128                        :::43892                       :::*      

LISTEN     0      128                        :::ssh                         :::*      

LISTEN     0      128                         *:ssh                          *:*      

LISTEN     0      128                 127.0.0.1:ipp                          *:*      

LISTEN     0      128                       ::1:ipp                         :::*      

LISTEN     0      100                       ::1:smtp                        :::*      

LISTEN     0      100                 127.0.0.1:smtp                         *:*

4 ) 查看进程使用的socket

ss   -pl

[root@natasha ~]# ss -pl

5 )找出打开套接字/端口应用程序

ss   -lp   |grep   44993

[root@natasha ~]# ss -pl |grep 44993

LISTEN     0      128                     *:44993                    *:*        users:(("rpc.statd",1235,9))

6 )显示所有UDP  Sockets

ss   -u    -a

[root@natasha ~]# ss   -u    -a

State      Recv-Q Send-Q          Local Address:Port              Peer Address:Port  

UNCONN     0      0                           *:53190                        *:*      

UNCONN     0      0                           *:968                          *:*      

UNCONN     0      0                           *:987                          *:*      

UNCONN     0      0                           *:sunrpc                       *:*      

UNCONN     0      0                           *:ipp                          *:*      

UNCONN     0      0                          :::48804                       :::*      

UNCONN     0      0                          :::968                         :::*      

UNCONN     0      0                          :::sunrpc 

7 )显示所有状态为established的SMTP连接

命令:

ss   -o   state   established  ' (  dport =   :smtp   or  sport =  :smtp   )'

[root@natasha ~]# ss -o state established '( dport  = :smtp or sport = :smtp )'

Recv-Q Send-Q               Local Address:Port                   Peer Address:Port

8)显示所有者状态为established的HTTP连接

ss   -o   state   established   '(  dport =   :http   or  sport =  :http    )'

显示已经建立的ssh连接:

.png)

.png)

9)  匹配远程地址和端口号

ss     dst   192.168.119.113:http

ss    dat    192.168.119.113:smtp

ss    dst     192.168.119.113:443

10)匹配本地地址和端口号

ss    src   192.168.119.103:80

ss    src    192.168.119.103:smtp