Bonjour !
Dans la leçon précédente, nous avons vu comment utiliser ping et traceroute pour déterminer si une machine distante est accessible sur le réseau et pour tracer le chemin que prennent les données pour l'atteindre. Vous savez maintenant poser les questions : "Es-tu là ?" et "Par où dois-je passer pour te joindre ?".
Aujourd'hui, nous allons répondre à la question suivante, qui est une étape essentielle dans la méthodologie de dépannage : "La connectivité réseau est bonne, mais pourquoi mon service ne répond-il pas ?". L'objectif de cette leçon est d'apprendre à inspecter les connexions réseau actives avec la commande ss.
Cet outil vous permettra de regarder "à l'intérieur" de votre serveur pour voir exactement quels services sont en attente de connexions, qui est actuellement connecté, et quel processus est responsable de chaque connexion. Pour un administrateur systèmes et réseaux, c'est un outil de diagnostic de premier ordre.
1. ss : Le successeur moderne de netstat
Avant d'entrer dans les commandes, il est important de savoir que ss (qui signifie Socket Statistics) est l'outil moderne pour inspecter les sockets réseau sous Linux. Il remplace la commande netstat, plus ancienne et plus lente. Dans un environnement professionnel, on attendra de vous que vous maîtrisiez ss.
Diagnostic réseau Linux : guide pratique par scénario
Pour commencer, lisez ce court extrait du guide de Stéphane Robert, que nous avons déjà utilisé. Il positionne clairement ss comme l'outil moderne à privilégier.
Dans le document, trouvez le tableau intitulé "Commandes modernes vs héritées". Notez simplement la ligne concernant netstat et ss et la raison du changement : ss est bien plus rapide et puissant.
2. Comprendre les états d'une connexion
Pour utiliser ss efficacement, il faut comprendre les deux états principaux d'une connexion réseau du point de vue d'un serveur :
LISTEN(en écoute) : Un service sur le serveur a ouvert un port et attend passivement que des clients tentent de s'y connecter. C'est comme un magasin dont la porte est ouverte et la caissière attend les clients. Un serveur web est enLISTENsur le port 80 (HTTP) ou 443 (HTTPS).ESTABLISHED(établie) : Une connexion active est en cours entre un client et le serveur. Un "dialogue" a lieu. C'est votre session SSH actuelle, ou un visiteur qui télécharge une page de votre site web. Le client est entré dans le magasin et discute avec la caissière.
Votre rôle en tant qu'administrateur sera souvent de vérifier :
- Que le service que vous voulez rendre disponible est bien en état
LISTENsur le bon port. - Qui est en état
ESTABLISHEDavec votre serveur, pour surveiller l'activité ou diagnostiquer un problème.
3. Les commandes ss essentielles : une visite guidée
La meilleure façon d'apprendre ss est de le voir en action. Nous allons utiliser une vidéo très claire qui démontre les options les plus importantes.
CMDécouverte : ss pour lister les connexions TCP UDP (remplaçant de netstat)
Regardez cette vidéo de la chaîne Adrien Linuxtricks. Elle va vous guider à travers les options fondamentales de la commande ss. Je vous indiquerai les segments précis à regarder.
Pour l'instant, ne regardez pas la vidéo en entier. Nous allons la découper en plusieurs parties pour analyser chaque concept.
a) Lister les ports en écoute (LISTEN)
C'est souvent la première chose que l'on vérifie. Mon service SSH est-il bien démarré et en écoute ?
ss -l (pour listening)
Cette commande affiche tous les sockets en état d'écoute. Pour être plus précis, on combine souvent les options :
-tpour filtrer sur les connexions TCP.-upour filtrer sur les connexions UDP.-npour afficher les numéros de port en format numérique (ex:22) au lieu de leur nom de service (ex:ssh). C'est plus rapide et souvent plus clair.-ppour afficher le processus qui utilise le socket. C'est extrêmement utile !
La combinaison la plus courante est donc ss -tlnp : "Affiche tous les ports TCP en écoute (listening), avec les numéros de port (numeric) et les noms des processus associés".
Action :
- Ouvrez un terminal sur votre machine virtuelle Ubuntu.
- Tapez la commande
ss -tlnpet analysez le résultat.

Dans votre sortie, vous devriez voir une ligne pour sshd, qui est le service SSH. Vous voyez qu'il est en LISTEN sur le port 22. Cela confirme que votre serveur est prêt à accepter des connexions SSH.
CMDécouverte : ss pour lister les connexions TCP UDP (remplaçant de netstat)
Maintenant, regardez les passages de la vidéo qui expliquent comment lister toutes les connexions et se concentrer sur celles qui sont en écoute.
Regardez de 05:18 à 07:05. L'auteur y présente l'option -a (all) puis l'option -l (listen) pour filtrer uniquement les services en écoute.
b) Afficher les connexions établies (ESTABLISHED)
Maintenant, voyons qui est activement connecté à notre serveur.
ss -t
Sans l'option -l, ss -t affiche par défaut les connexions TCP établies. Votre propre connexion SSH devrait apparaître ici !
Action :
- Dans votre terminal, tapez
ss -tnp. - Repérez la ligne correspondant à votre session.
Local Address:Portsera l'adresse IP de votre serveur avec le port22.Peer Address:Portsera l'adresse IP de votre machine physique (le client) avec un port aléatoire.- La colonne
Processmontrerasshd.
CMDécouverte : ss pour lister les connexions TCP UDP (remplaçant de netstat)
Visionnez maintenant la première démonstration pratique de la vidéo qui porte sur les connexions établies.
Regardez de 02:23 à 04:17. Concentrez-vous sur l'explication des colonnes State, Local Address:Port et Peer Address:Port.
c) Identifier le processus derrière une connexion
L'option -p est votre meilleure alliée pour la sécurité et le dépannage. Imaginez que vous voyez une connexion sur un port inconnu. Comment savoir quel programme l'a ouverte ?
CMDécouverte : ss pour lister les connexions TCP UDP (remplaçant de netstat)
Pour finir avec la vidéo, regardez les parties qui expliquent comment afficher les numéros de port et, surtout, les processus associés.
Regardez de 07:05 à 09:52. Notez bien l'utilité de l'option -n pour éviter la traduction des noms de service et l'importance cruciale de l'option -p pour savoir "qui fait quoi".
4. ss dans une méthodologie de dépannage
Revenons à notre scénario : la connexion SSH vers un serveur ne fonctionne pas, mais le ping passe.
Diagnostic réseau Linux : guide pratique par scénario
L'article de Stéphane Robert, que vous connaissez bien, intègre parfaitement ss dans un flux de dépannage. Voyons comment un professionnel l'utiliserait.
Lisez la section intitulée "Le port ne répond pas". Suivez la logique : après avoir testé la connectivité au port (avec nc), l'étape 2 consiste à vérifier si le service écoute sur le serveur avec ss. C'est exactement le cas d'usage que nous étudions. Regardez aussi la section juste en dessous, "Commandes ss essentielles", qui est un excellent aide-mémoire.
La démarche est la suivante :
- Le
pingvers192.168.1.100fonctionne. La connectivité réseau est OK. - La commande
ssh user@192.168.1.100échoue avec "Connection refused". - Hypothèse : Le service SSH (
sshd) n'est pas démarré sur le serveur ou n'écoute pas sur le port 22. - Vérification (sur le serveur
192.168.1.100) :ss -tlnp | grep :22- Si la commande ne retourne rien : Le service
sshdn'est pas en cours d'exécution ou n'a pas réussi à ouvrir le port 22. Vous devriez vérifier son statut avecsystemctl status sshd. - Si la commande retourne
127.0.0.1:22: Le service écoute, mais uniquement sur l'interface locale. Il n'accepte pas de connexions de l'extérieur. Il faudrait corriger sa configuration. - Si la commande retourne
0.0.0.0:22ou:::22: Le service écoute correctement sur toutes les interfaces. L'échec de connexion est probablement dû à un pare-feu qui bloque le port 22.
- Si la commande ne retourne rien : Le service
Cette méthode vous permet d'isoler rapidement et précisément la cause du problème.
Conclusion
Vous avez maintenant ajouté un outil de diagnostic réseau puissant à votre arsenal. Après avoir vérifié la connectivité globale avec ping et traceroute, ss vous permet de zoomer sur les services et les connexions au niveau du système d'exploitation.
Points clés à retenir :
ssest l'outil moderne pour inspecter les sockets réseau, remplaçantnetstat.- Les états les plus importants à surveiller sont
LISTEN(le service attend) etESTABLISHED(une connexion est active). - La commande
ss -tlnpest un réflexe à développer : elle vous donne un aperçu rapide de tous les services TCP qui écoutent sur votre serveur. - L'option
-pest essentielle pour identifier quel processus est à l'origine d'une connexion. - Dans une démarche de dépannage,
sspermet de confirmer si un service est bien démarré et configuré pour accepter les connexions avant de suspecter un problème de pare-feu.
Dans la prochaine leçon, nous prendrons encore un peu de recul. Nous avons vu comment les paquets voyagent (traceroute) et comment les services les attendent (ss). Il est temps de nous intéresser aux équipements physiques qui constituent le réseau : nous apprendrons à distinguer les rôles d'un commutateur (switch) et d'un routeur.