Blog CLEMANET
Systèmes et réseaux

Utilisation de la commande Linux ss

La commande ss permet d’afficher l’état des ports ou des connexions sur une machine linux.

En résumé:

Afficher la liste des ports UDP et TCP IPv4 en écoute   **ss -4ln**

Ports en écoute et connexions établies **ss -4pan**

Connexion TCP établie   **ss**

Connexion UDP établie   **ss -u**

Mode numérique  **ss -n**

Port TCP en écoute  **ss -lt**

Port UDP en écoute  **ss -lu**

Port en écoute et connexions établie TCP **ss -t -a -4**

Plus de détails sur la commande ss

Afficher la liste des ports UDP et TCP en écoute pour le protocole IPv4:

[root@localhost ~]# ss -4ln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0      127.0.0.1:323 *:*
udp UNCONN 0 0               *:68 *:*
tcp LISTEN 0 128             *:80 *:*
tcp LISTEN 0 128             *:22 *:*
tcp LISTEN 0 100     127.0.0.1:25 *:*
[root@localhost ~]#

Afficher les ports en écoute et les connexions établies avec le protocole IPv4, et on ajoute les processus (option p).

[root@localhost ~]# ss -4pan
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0         127.0.0.1:323 *:*           users:(("chronyd",pid=630,fd=1))
udp UNCONN 0 0                             *:68 *:*           users:(("dhclient",pid=1461,fd=6))
tcp LISTEN 0 128                             *:80 *:*           users:(("httpd",pid=1554,fd=3),
tcp LISTEN 0 128                             *:22 *:*           users:(("sshd",pid=908,fd=3))
tcp LISTEN 0 100          127.0.0.1:25 *:*           users:(("master",pid=1286,fd=13))
tcp ESTAB 0 0               192.168.1.15:22       192.168.1.2:1197 users:(("sshd",pid=1485,fd=3))
[root@localhost ~]#

Sans argument, la commande affiche les connexions TCP établies.

[root@localhost ~]# ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 17656 * 17655
u_str ESTAB 0 0 /run/systemd/journal/stdout 16624 * 16623
u_str ESTAB 0 0 * 17692 * 17693
u_str ESTAB 0 0 * 14547 * 14580
u_str ESTAB 0 0 * 17693 * 17692
tcp ESTAB 0 0 192.168.1.15:ssh 192.168.1.2:mxomss
[root@localhost ~]#

Pour obtenir le mode numérique: ss -n

[root@localhost ~]# ss -n
u_str ESTAB 0 0 * 14547 * 14580
u_str ESTAB 0 0 * 17693 * 17692
tcp ESTAB 0 0 192.168.1.15:22 192.168.1.2:1141

Connexion TCP établie

[root@localhost ~]# ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.15:ssh 192.168.1.2:mxomss
[root@localhost ~]#

Connexion UDP établie

[root@localhost ~]# ss -u
Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@localhost ~]#

ss -l affiche les ports en écoute. l’exemple combine -l avec les protocoles UDP ou TCP:

[root@localhost ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:http *:*
LISTEN 0 10 127.0.0.1:domain *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:rndc *:*

[root@localhost ~]# ss -lu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 127.0.0.1:domain *:*
UNCONN 0 0 *:bootpc *:*
UNCONN 0 0 ::1:323 :::*
UNCONN 0 0 ::1:domain :::*

On ajoute l’argument -a pour ajouter les ports en écoute en plus des connexions établies L’option -4 permet d’obtenir uniquement les connexions IPv4. -6 pour IPv6.

[root@localhost ~]# ss -u -a -4
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 127.0.0.1:domain *:*
UNCONN 0 0 *:bootpc *:*

[root@localhost ~]# ss -t -a -4
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:http *:*
LISTEN 0 10 127.0.0.1:domain *:*
LISTEN 0 128 *:ssh *:*

Il est possible d’afficher plus précisément les états des connexions avec l’option state. Voici ce que propose l’aide:

[root@localhost ~]# ss --h
Usage: ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
......
......

FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket := {syn-recv|time-wait}
big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}

Exemple d’utilisation de l’attribut filter:

[root@localhost ~]# ss -t state established
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 192.168.1.15:ssh 192.168.1.2:mxomss
[root@localhost ~]#

Affichage des processus et des ports avec l’option -p

[root@localhost ~]# ss -tnp
tcp ESTAB 0 0 192.168.1.15:ssh 192.168.1.2:mxomss users:(("sshd",pid=1513,fd=3))