Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 32

Inspection des connexions réseau avec `ss`

Recommended resources

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 en LISTEN sur 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 :

  1. Que le service que vous voulez rendre disponible est bien en état LISTEN sur le bon port.
  2. Qui est en état ESTABLISHED avec 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 :

  • -t pour filtrer sur les connexions TCP.
  • -u pour filtrer sur les connexions UDP.
  • -n pour 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.
  • -p pour 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 :

  1. Ouvrez un terminal sur votre machine virtuelle Ubuntu.
  2. Tapez la commande ss -tlnp et analysez le résultat.
Output of the `ss` command in a Linux terminal
Cette image montre un exemple de sortie pour la commande `ss -tulnp`. Observez les colonnes : `State` (ici, LISTEN), `Local Address:Port` (l'adresse et le port sur lesquels le service écoute) et `Process` (le nom du processus et son PID).

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 :

  1. Dans votre terminal, tapez ss -tnp.
  2. Repérez la ligne correspondant à votre session.
    • Local Address:Port sera l'adresse IP de votre serveur avec le port 22.
    • Peer Address:Port sera l'adresse IP de votre machine physique (le client) avec un port aléatoire.
    • La colonne Process montrera sshd.

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 :

  1. Le ping vers 192.168.1.100 fonctionne. La connectivité réseau est OK.
  2. La commande ssh user@192.168.1.100 échoue avec "Connection refused".
  3. Hypothèse : Le service SSH (sshd) n'est pas démarré sur le serveur ou n'écoute pas sur le port 22.
  4. Vérification (sur le serveur 192.168.1.100) :
    ss -tlnp | grep :22
    
    • Si la commande ne retourne rien : Le service sshd n'est pas en cours d'exécution ou n'a pas réussi à ouvrir le port 22. Vous devriez vérifier son statut avec systemctl 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:22 ou :::22 : Le service écoute correctement sur toutes les interfaces. L'échec de connexion est probablement dû à un pare-feu qui bloque le port 22.

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 :

  • ss est l'outil moderne pour inspecter les sockets réseau, remplaçant netstat.
  • Les états les plus importants à surveiller sont LISTEN (le service attend) et ESTABLISHED (une connexion est active).
  • La commande ss -tlnp est un réflexe à développer : elle vous donne un aperçu rapide de tous les services TCP qui écoutent sur votre serveur.
  • L'option -p est essentielle pour identifier quel processus est à l'origine d'une connexion.
  • Dans une démarche de dépannage, ss permet 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.