Si vous êtes comme moi, vous vous accrochez encore à des commandes bientôt obsolètes comme ifconfig
, nslookup
et netstat
. Les nouveaux remplaçants sont respectivement ip
, dig
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 ESTABLISHED
, LISTEN
, 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.