Une introduction à la commande ss

Apprenez à obtenir des informations sur le réseau à l’aide de la commande ss dans ce tutoriel tiré des archives.

Linux comprend un éventail assez massif d’outils disponibles pour répondre à presque tous les besoins. Du développement à la sécurité en passant par la productivité et l’administration… si vous devez le faire, Linux est là pour vous servir. L’un des nombreux outils auxquels les administrateurs ont fréquemment recours est netstat. Cependant, la commande netstat a été dépréciée au profit de la commande ss, plus rapide et plus lisible par l’homme.

La commande ss est un outil utilisé pour vider les statistiques de socket et affiche des informations de manière similaire (bien que plus simple et plus rapide) à netstat. La commande ss peut également afficher encore plus d’informations TCP et d’état que la plupart des autres outils. Parce que ss est le nouveau netstat, nous allons jeter un coup d’œil à la façon d’utiliser cet outil afin que vous puissiez plus facilement obtenir des informations sur votre machine Linux et sur ce qui se passe avec les connexions réseau.

L’utilitaire de ligne de commande ss peut afficher des statistiques pour des éléments comme PACKET, TCP, UDP, DCCP, RAW et les sockets de domaine Unix. Le remplaçant de netstat est plus facile à utiliser (comparez les pages de manuel pour avoir une idée immédiate de la facilité de ss). Avec ss, vous obtenez des informations très détaillées sur la façon dont votre machine Linux communique avec d’autres machines, réseaux et services ; des détails sur les connexions réseau, les statistiques des protocoles réseau et les connexions des sockets Linux. Avec ces informations en main, vous pouvez beaucoup plus facilement dépanner divers problèmes de réseau.

Faisons le point sur ss, pour que vous puissiez le considérer comme un nouvel outil dans votre kit d’administrateur.

Utilisation de base

La commande ss fonctionne comme n’importe quelle commande sur la plateforme Linux : Emettez la commande exécutable et faites-la suivre de n’importe quelle combinaison des options disponibles. Si vous jetez un coup d’œil à la page de manuel de ss (émettez la commande man ss), vous remarquerez qu’il y a loin des options trouvées pour la commande netstat ; cependant, cela n’équivaut pas à un manque de fonctionnalité. En fait, ss est assez puissant.

Si vous émettez la commande ss sans aucun argument ou option, elle retournera une liste complète des sockets TCP avec des connexions établies (Figure 1).

Figure 1 : Une liste complète de toutes les connexions TCP établies.

Parce que la commande ss (sans options) affichera une quantité importante d’informations (tous les détails des connexions tcp, udp, et unix socket), vous pourriez également envoyer la sortie de cette commande dans un fichier pour une visualisation ultérieure comme suit :

ss > ss_output

Bien sûr, une commande très basique n’est pas si utile pour toutes les situations. Que faire si nous voulons seulement voir les sockets d’écoute actuels ? C’est simple, ajoutez l’option -l comme suit :

ss -l

La commande ci-dessus ne produira qu’une liste des sockets d’écoute actuels.

Pour être un peu plus spécifique, pensez-y de cette façon : ss peut être utilisé pour visualiser les connexions TCP en utilisant l’option -t, les connexions UDP en utilisant l’option -u, ou les connexions UNIX en utilisant l’option -x ; donc ss -t, ss -u, ou ss -x. L’exécution de l’une ou l’autre de ces commandes affichera de nombreuses informations que vous pourrez passer au peigne fin (Figure 2).

Figure 2 : L’exécution de ss -u sur Elementary OS offre un affichage rapide des connexions UDP.

Par défaut, l’utilisation des options -t, -u ou -x seules n’affichera que les connexions établies (ou connectées). Si nous voulons récupérer les connexions qui sont en écoute, nous devons ajouter l’option -a comme:

ss -t -a 

La sortie de la commande ci-dessus inclura toutes les sockets TCP (Figure 3).

Figure 3 : Remarquez que la dernière socket est ssh en écoute sur le périphérique.

Dans l’exemple ci-dessus, vous pouvez voir que des connexions UDP (dans des états variables) sont établies depuis l’adresse IP de ma machine, à partir de divers ports, vers diverses adresses IP, à travers divers ports. Contrairement à la version netstat de cette commande, ss n’affiche pas le PID et le nom de la commande responsable de ces connexions. Malgré cela, vous disposez de nombreuses informations pour commencer le dépannage. Si l’un de ces ports ou l’une de ces URL est suspect, vous savez maintenant quelle adresse IP ou quel port établit la connexion. Avec cela, vous avez maintenant les informations qui peuvent vous aider dans les premières étapes de dépannage d’un problème.

Filtrage de ss avec les états TCP

Une option très pratique disponible pour la commande ss est la possibilité de filtrer en utilisant les états TCP (les « étapes de vie » d’une connexion). Avec les états, vous pouvez plus facilement filtrer les résultats de votre commande ss. L’outil ss peut être utilisé en conjonction avec tous les états TCP standard :

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Les autres identifiants d’état disponibles que ss reconnaît sont :

  • all (tous les états ci-dessus)

  • connected (tous les états à l’exception de listen et closed)

  • synchronized (tous les états connectés à l’exception de syn-sent)

  • bucket (états qui sont maintenus en tant que minisockets, par exemple time-wait et

  • syn-recv)

  • big (opposé à l’état bucket)

La syntaxe pour travailler avec les états est simple.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Où FILTER est le nom de l’état que vous voulez utiliser.

Disons que vous voulez voir toutes les sockets IPv4 en écoute sur votre machine. Pour cela, la commande serait :

ss -4 state listening

Les résultats de cette commande ressembleraient à la Figure 4.

Figure 4 : Utilisation de ss avec un filtre d’état d’écoute.

Show connected sockets from specific address

Une tâche pratique que vous pouvez attribuer à ss est de lui faire signaler les connexions effectuées par une autre adresse IP. Disons que vous voulez savoir si/comment une machine à l’adresse IP 192.168.1.139 s’est connectée à votre serveur. Pour cela, vous pourriez lancer la commande:

ss dst 192.168.1.139

Les informations résultantes (Figure 5) vous informeront du Netid, de l’état, de l’IP:port local, et de l’IP:port distant de la socket.

Figure 5 : Une machine distante a établi une connexion ssh avec notre machine locale.

Faites-le travailler pour vous

La commande ss peut faire pas mal de choses pour vous aider à résoudre les problèmes de votre serveur Linux ou de votre réseau. Il serait bon que vous preniez le temps de lire la page de manuel ss (lancez la commande man ss). Mais, à ce stade, vous devriez au moins avoir une compréhension fondamentale de la façon d’utiliser cette commande indispensable.

Apprenez-en davantage sur Linux grâce au cours gratuit « Introduction à Linux » de la Fondation Linux et de edX.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.