Comment utiliser la commande ss : Un guide complet

Utilisation de la commande ss Linux Debian Ubuntu centos almalinux

Si vous êtes comme moi, vous vous accrochez encore à des commandes bientôt obsolètes comme ifconfignslookup et netstat. Les nouveaux remplaçants sont respectivement ipdig et ss. Il est temps de (à contrecœur) laisser tomber les utilitaires hérités et d’aller vers l’avenir avec ss. La commande ip mérite d’être mentionnée ici car une partie de la fonctionnalité de netstat a été remplacée par ip. Cet article couvre l’essentiel de la commande ss pour que vous n’ayez pas à chercher (sans jeu de mots) ces informations.

Introduction à ss

Formellement, ss (statistiques de socket) est un utilitaire en ligne de commande utilisé pour examiner les sockets. C’est le remplaçant moderne de l’ancien outil netstat. Le principal avantage de ss par rapport à netstat est sa capacité à fournir des informations plus détaillées et plus étendues sur les connexions réseau, ce qui en fait un outil essentiel pour les administrateurs et ingénieurs réseau.

Michael Prokop, le développeur de ss, l’a conçu pour faciliter la transition depuis netstat en permettant à certaines options de netstat de fonctionner de manière similaire dans ss. Cette compatibilité aide les utilisateurs à faire la transition sans avoir besoin d’apprendre un ensemble entièrement nouveau de commandes à partir de zéro.

Utilisation de base

Affichage des sockets TCP

L’une des utilisations les plus courantes de netstat est d’afficher les sockets TCP. Voici comment vous pouvez le faire avec netstat et ss :

Avec netstat :

$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 rhel8:ssh               khess-mac:62036         ESTABLISHED

Avec ss :

$ ss -t
State         Recv-Q          Send-Q                    Local Address:Port                   Peer Address:Port
ESTAB         0               0                          192.168.1.65:ssh                    192.168.1.94:62036

La sortie des deux commandes fournit des informations similaires, montrant les connexions TCP actives.

Résolution des noms d’hôtes

Pour mieux imiter la sortie de netstat, vous pouvez utiliser l’option -r (résoudre) dans ss, qui résout les noms d’hôtes :

$ ss -tr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:ssh                             khess-mac:62036

Affichage des numéros de port

Si vous préférez voir les numéros de port plutôt que leurs noms de service, utilisez l’option -n :

$ ss -ntr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:22                              khess-mac:62036

Affichage de tous les sockets

Pour afficher tous les sockets, y compris ceux en écoute et ceux qui ne le sont pas, utilisez l’option -a :

$ ss -a
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Cette commande liste tous les sockets dans divers états.

Souhaitez-vous que je continue avec la traduction des sections suivantes ?

Filtrage par état

Vous pouvez filtrer la sortie pour n’afficher que les sockets dans un état spécifique. Par exemple, pour montrer uniquement les sockets en écoute :

$ ss -l
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
LISTEN      0           128                  [::]:22                           [::]:*

Affichage des sockets de domaine Unix

Pour afficher les sockets de domaine Unix, utilisez l’option -x :

$ ss -x
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  /run/user/0/systemd/private       * 0
LISTEN      0           128                  /var/lib/sss/pipes/private/sbus-dp_implicit_files.642  * 0

Affichage des statistiques récapitulatives

Pour voir les statistiques récapitulatives de toutes les connexions socket, utilisez l’option -s :

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW      1         0         1
UDP      3         2         1
TCP      3         2         1
INET     7         4         3
FRAG     0         0         0

Utilisation avancée

Filtrage par adresse et port

Vous pouvez filtrer les sockets en fonction des adresses et des ports locaux ou distants. Par exemple, pour montrer tous les sockets connectés au port 22 :

$ ss -at '( dport = :22 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Pour filtrer par adresse locale :

$ ss -at '( src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Combinaison de filtres

Vous pouvez combiner plusieurs filtres pour affiner votre recherche. Par exemple, pour montrer toutes les connexions TCP vers le port 22 sur une adresse IP spécifique :

$ ss -at '( dport = :22 and src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Affichage des états de connexion

Pour afficher les sockets dans des états spécifiques tels que ESTABLISHEDLISTEN, ou CLOSE-WAIT :

$ ss state established
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Affichage des interfaces réseau

Pour afficher des informations sur les interfaces réseau, utilisez l’option -i :

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

Voulez-vous que je continue avec la traduction des sections suivantes ?

Comparaison avec netstat

Affichage des appartenances aux groupes

Certaines fonctionnalités de netstat ont été déplacées vers la commande ip. Par exemple, pour afficher les appartenances aux groupes :

Avec netstat :

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

Avec ip :

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

Affichage des statistiques réseau

netstat fournit des statistiques réseau détaillées, ce que ss ne propose pas actuellement :

Avec netstat :

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<tronqué>

Avec ss :

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	 	  1         0         1
UDP	 	  3         2         1
TCP	 	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

Comme vous pouvez le constater, ss fournit un résumé plus concis des statistiques par rapport à la répartition détaillée offerte par netstat. Pour ceux qui ont besoin de statistiques granulaires, cela peut être une limitation de ss.

Exemples pratiques

Surveillance des connexions réseau

Une utilisation pratique de ss est de surveiller les connexions réseau actives en temps réel. Cela peut être particulièrement utile pour résoudre les problèmes de réseau ou s’assurer que les services fonctionnent comme prévu.

Pour observer les connexions actives, vous pouvez utiliser watch avec ss :

$ watch -n 1 'ss -t -a'

Cette commande met à jour l’affichage toutes les secondes, vous montrant l’état actuel des connexions TCP.

Vérification des ports en écoute

Pour voir quels ports sont écoutés par divers services sur votre système, utilisez :

$ ss -ltn
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
LISTEN     0      128     0.0.0.0:22           0.0.0.0:*
LISTEN     0      128     [::]:22              [::]:*

Cette commande aide à identifier tous les ports TCP en écoute et les services qui y sont liés, ce qui est utile pour s’assurer que les services requis sont opérationnels.

Souhaitez-vous que je continue avec la traduction des sections restantes ? Très bien, je vais poursuivre avec la traduction des sections restantes.

Diagnostic des problèmes réseau

Lors du diagnostic de problèmes réseau, ss peut être utilisé pour filtrer les connexions selon divers paramètres afin d’identifier précisément les problèmes.

Par exemple, si vous suspectez un problème avec les connexions vers un serveur spécifique, vous pouvez filtrer par l’adresse distante :

$ ss -t dst 192.168.1.94
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
ESTAB      0      0       192.168.1.65:ssh     192.168.1.94:62036

Cette commande montre toutes les connexions TCP vers l’adresse distante spécifiée.

Analyse du trafic sur des ports spécifiques

Pour analyser le trafic sur un port spécifique, comme le port 80 (HTTP), vous pouvez utiliser :

$ ss -o state established '( dport = :80 or sport = :80 )'
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Timer
ESTAB      0      0       192.168.1.65:49852   93.184.216.34:80   on (5.34/8.74)

Cette commande montre les connexions établies impliquant le port 80, donnant un aperçu du trafic web.

Transition de netstat à ss

La transition de netstat à ss peut être fluide si vous comprenez les options et commandes équivalentes. Voici quelques commandes courantes de netstat et leurs équivalents ss :

Affichage des statistiques d’interface réseau

Avec netstat :

$ 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   983   0      0      0      879   0      0      0      BMRU
lo         65536  8821  0      0      0      8821  0      0      0      LRU

Avec ss :

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

Affichage de la table de routage

Avec netstat :

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG      0   0        0   eth0
192.168.1.0     0.0.0.0         255.255.255.0   U       0   0        0   eth0

Avec ip :

$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.65

Affichage des appartenances aux groupes multicast

Avec netstat :

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

Avec ip :

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

Affichage des statistiques de protocole réseau

Avec netstat :

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<tronqué>

Avec ss :

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	  	  1         0         1
UDP	  	  3         2         1
TCP	  	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

Comme vous pouvez le voir, ss fournit un résumé plutôt qu’une répartition détaillée. Bien que cela puisse être utile pour des aperçus rapides, cela pourrait ne pas fournir la profondeur d’information nécessaire pour des diagnostics réseau approfondis.

Conclusion

La commande ss est un outil puissant et polyvalent qui a efficacement remplacé netstat pour l’investigation des statistiques de socket. Bien qu’elle offre de nombreuses fonctionnalités similaires à netstat, elle introduit également de nouvelles fonctionnalités et des options de sortie plus détaillées. La transition vers ss depuis netstat est facilitée par les options et commandes similaires, permettant aux utilisateurs de poursuivre leurs activités de surveillance et de dépannage réseau avec un minimum d’ajustements.

En apprenant et en maîtrisant ss, vous pouvez tirer parti de ses capacités pour gérer et diagnostiquer les connexions réseau plus efficacement. Que vous surveilliez les connexions actives, vérifiez les ports en écoute, diagnostiquiez des problèmes réseau ou analysiez le trafic, ss fournit un ensemble robuste d’options pour vous aider à accomplir votre tâche.

Alors, embrassez l’avenir des statistiques réseau avec ss et tirez parti de ses puissantes fonctionnalités pour améliorer vos tâches d’administration réseau.

Laisser un commentaire