ss

ss : 10 exemples pour monitorer son réseau

ss (sockets statistics) est une commande qui permet d’afficher les sockets réseau sur un système linux. Cet outil est similaire à la commande netstat mais avec plus de détails.

Au cours de guide, nous allons voir comment la commande ss peut être utilisée pour afficher plusieurs informations de socket réseau sous Linux.

1- Afficher tous les connexions avec ss:

la commande ss sans option affiche tous les connexions quelques soient leur états :

[root@srv ~]# ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 39987 * 39988
u_str ESTAB 0 0 * 39942 * 39943
u_str ESTAB 0 0 * 39984 * 39985
u_str ESTAB 0 0 * 39985 * 39984
u_str ESTAB 0 0 * 39958 * 39957
u_str ESTAB 0 0 * 39990 * 39991
u_str ESTAB 0 0 * 39991 * 39990
u_str ESTAB 0 0 * 39988 * 39987
u_str ESTAB 0 0 * 39957 * 39958
u_str ESTAB 0 0 * 36290 * 36293
u_str ESTAB 0 0 /run/systemd/journal/stdout 22240 * 22239
u_str ESTAB 0 0 * 39933 * 39932
u_str ESTAB 0 0 * 39978 * 39979
u_str ESTAB 0 0 * 39979 * 39978
u_str ESTAB 0 0 * 39960 * 39961
u_str ESTAB 0 0 * 39976 * 39975
u_str ESTAB 0 0 * 39949 * 39948
u_str ESTAB 0 0 * 39982 * 39981
u_str ESTAB 0 0 * 22239 * 22240
u_str ESTAB 0 0 * 39948 * 39949
u_str ESTAB 0 0 * 39981 * 39982

2- Afficher les sockets en écoute ( Listening Sockets ) :

Pour afficher seulement les sockets en écoute, utilisez l’option -l :

[root@srv ~]# ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 rtnl:NetworkManager/6709 *
nl UNCONN 0 0 rtnl:NetworkManager/6709 *
nl UNCONN 4352 0 tcpdiag:ss/8647 *
nl UNCONN 768 0 tcpdiag:kernel *
nl UNCONN 0 0 xfrm:kernel *
nl UNCONN 0 0 selinux:kernel *
nl UNCONN 0 0 selinux:systemd/1 *
nl UNCONN 0 0 selinux:dbus-daemon/6600 *
nl UNCONN 0 0 selinux:dbus-daemon/6600 *
nl UNCONN 0 0 selinux:systemd/1 *
nl UNCONN 0 0 audit:kernel *
nl UNCONN 0 0 audit:systemd/1 *

3- Afficher tous les connexion TCP :

Pour n’affichier que les connexion TCP utilisez l’option -t :

[root@srv ~]# ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870
ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:50853

4- Afficher tous les connexion UDP :

Pour n’afficher que les connexions TCP utilisez l’option -u :

[root@srv ~]# ss -ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:bootpc *:*

5- Afficher tous les connexion UDP en écoute :

Pour afficher les connexion UDP en écoute (Listening UDP Connections) utilisez l’option -lu

[root@srv ~]# ss -lu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:bootpc *:*

6- Afficher les PID des sockets avec ss:

Pour cela utilisez l’option –p :

[root@srv ~]# ss -p
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 39987 * 39988 users:(("master",pid=7286,fd=81))
u_str ESTAB 0 0 * 39942 * 39943 users:(("master",pid=7286,fd=36))
u_str ESTAB 0 0 * 39984 * 39985 users:(("master",pid=7286,fd=78))
u_str ESTAB 0 0 * 39985 * 39984 users:(("master",pid=7286,fd=79))
u_str ESTAB 0 0 * 39958 * 39957 users:(("master",pid=7286,fd=52))
u_str ESTAB 0 0 * 39990 * 39991 users:(("master",pid=7286,fd=84))
u_str ESTAB 0 0 * 39991 * 39990 users:(("master",pid=7286,fd=85))
u_str ESTAB 0 0 * 39988 * 39987 users:(("master",pid=7286,fd=82))
u_str ESTAB 0 0 * 39957 * 39958

Vous pouvez vous servir de la commande grep pour filtrer les résultats :

[root@srv ~]# ss -p | grep 7286
u_str ESTAB 0 0 * 39987 * 39988 users:(("master",pid=7286,fd=81))
u_str ESTAB 0 0 * 39942 * 39943 users:(("master",pid=7286,fd=36))
u_str ESTAB 0 0 * 39984 * 39985 users:(("master",pid=7286,fd=78))
u_str ESTAB 0 0 * 39985 * 39984 users:(("master",pid=7286,fd=79))
u_str ESTAB 0 0 * 39958 * 39957 users:(("master",pid=7286,fd=52))
u_str ESTAB 0 0 * 39990 * 39991 users:(("master",pid=7286,fd=84))
u_str ESTAB 0 0 * 39991 * 39990 users:(("master",pid=7286,fd=85))
u_str ESTAB 0 0 * 39988 * 39987 users:(("master",pid=7286,fd=82))
u_str ESTAB 0 0 * 39957 * 39958 users:(("master",pid=7286,fd=51))

7- Statistiques sur les sockets avec ss:

Si vous souhaitez afficher un résumé des statistiques des sockets utiliser l’option -s :

[root@srv ~]# ss -s
Total: 575 (kernel 969)
TCP: 10 (estab 2, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
969 - -
RAW 1 0 1
UDP 1 1 0
TCP 9 4 5
INET 11 5 6
FRAG 0 0 0

8- Afficher les sockets IPv4:

Vous pouvez afficher les sockets IPv4 avec l’option -4

[root@srv ~]# ss -4
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870
tcp ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:50853

9- Afficher les sockets IPv6:

utilisez pour cela l’option -6 :

[root@srv ~]# ss -6

10- Filtrer les sockets par le nombre du port :

Vous pouvez filtrer le résultat avec le nombre du port, par exemple pour afficher tous les sockets dont le le nombre du port destination et source est celui de ssh il suffit de taper la commande suivante :

[root@srv ~]# ss -at '( dport = :22 or sport = :22 )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50870
ESTAB 0 48 192.168.162.140:ssh 192.168.162.1:64462
ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:64465
ESTAB 0 0 192.168.162.140:ssh 192.168.162.1:50853
LISTEN 0 128 :::ssh :::*
[root@srv ~]#