in

Comment utiliser la commande ss sous Linux

Fatmawati Achmad Zaenuri / Shutterstock

le ss la commande est un remplacement moderne du classique netstat. Vous pouvez l’utiliser sous Linux pour obtenir des statistiques sur vos connexions réseau. Voici comment travailler avec cet outil pratique.

La commande ss contre netstat

Un remplacement pour les obsolètes netstat commander, ss vous donne des informations détaillées sur la façon dont votre ordinateur communique avec d’autres ordinateurs, réseaux et services.

ss affiche les statistiques pour Protocole de contrôle de transmission (TCP), Protocole de datagramme utilisateur (UDP), Unix (interprocessus), et les sockets bruts. Douilles brutes opérer au niveau OSI du réseau, ce qui signifie que les en-têtes TCP et UDP doivent être gérés par le logiciel d’application, et non par la couche de transport. Protocole de message de contrôle Internet (ICMP) et les ping L’utilitaire utilise tous les deux des sockets bruts.

Utilisation de ss

Vous n’avez pas besoin d’installer ss, car il fait déjà partie d’une distribution Linux à jour. Sa sortie, cependant, peut être très longue – nous avons eu des résultats contenant plus de 630 lignes. Les résultats sont également très larges.

Pour cette raison, nous avons inclus des représentations textuelles des résultats que nous avons obtenus, car elles ne rentrent pas dans une capture d’écran. Nous les avons coupés pour les rendre plus faciles à gérer.

Liste des connexions réseau

En utilisant ss sans options de ligne de commande répertorie les sockets qui ne sont pas à l’écoute. Autrement dit, il répertorie les sockets qui ne sont pas dans l’état d’écoute.

Pour voir cela, tapez ce qui suit:

ss

ss dans une fenêtre de terminal

Sortie de ss dans une fenêtre de terminal.

Netid State Recv-Q Send-Q          Local Address:Port Peer Address:Port   Process
u_str ESTAB 0      0                           * 41826           * 41827
u_str ESTAB 0      0 /run/systemd/journal/stdout 35689           * 35688
u_str ESTAB 0      0                           * 35550           * 35551
...
u_str ESTAB 0      0                           * 38127           * 38128
u_str ESTAB 0      0 /run/dbus/system_bus_socket 21243           * 21242
u_str ESTAB 0      0                           * 19039           * 19040
u_str ESTAB 0      0 /run/systemd/journal/stdout 18887           * 18885 
u_str ESTAB 0      0 /run/dbus/system_bus_socket 19273           * 17306
icmp6 UNCONN 0     0                           *:ipv6-icmp       *:*
udp   ESTAB 0      0         192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

Les colonnes sont les suivantes:

  • Netid: Le type de socket. Dans notre exemple, nous avons «u_str», un flux Unix, un «udp» et «icmp6», un socket ICMP IP version 6. Vous pouvez trouver plus de descriptions de Types de socket Linux dans les pages de manuel Linux.
  • Etat: L’état dans lequel se trouve le socket.
  • Recv-Q: Le nombre de paquets reçus.
  • Envoyer-Q: Le nombre de paquets envoyés.
  • Adresse locale: Port: L’adresse locale et le port (ou valeurs équivalentes pour les sockets Unix).
  • Adresse homologue: Port: L’adresse et le port distants (ou des valeurs équivalentes pour les sockets Unix).

Pour les sockets UDP, la colonne «State» est généralement vide. Pour les sockets TCP, il peut s’agir de l’un des éléments suivants:

  • ECOUTEZ: Côté serveur uniquement. Le socket attend une demande de connexion.
  • SYN-SENT: Côté client uniquement. Cette socket a fait une demande de connexion et attend de voir si elle est acceptée.
  • SYN-REÇU: Côté serveur uniquement. Ce socket attend un accusé de réception de connexion après avoir accepté une demande de connexion.
  • ÉTABLI: Serveur et clients. Une connexion fonctionnelle a été établie entre le serveur et le client, permettant le transfert des données entre les deux.
  • FIN-WAIT-1: Serveur et clients. Ce socket attend une demande de fin de connexion du socket distant ou un accusé de réception d’une demande de terminaison de connexion qui a été précédemment envoyée depuis ce socket.
  • FIN-WAIT-2: Serveur et clients. Ce socket attend une demande de fin de connexion de la part du socket distant.
  • CLOSE-WAIT: Serveur et client. Cette socket attend une demande de fin de connexion de l’utilisateur local.
  • FERMETURE: Serveur et clients. Ce socket attend un accusé de réception de demande de terminaison de connexion provenant du socket distant.
  • DERNIER ACK: Serveur et client. Ce socket attend un accusé de réception de la demande de fin de connexion qu’il a envoyée au socket distant.
  • TEMPS D’ATTENTE: Serveur et clients. Ce socket a envoyé un accusé de réception au socket distant pour lui faire savoir qu’il a reçu la demande de terminaison du socket distant. Il attend maintenant de s’assurer que l’accusé de réception a été reçu.
  • FERMÉ: Il n’y a pas de connexion, donc le socket a été terminé.

Liste des prises d’écoute

Pour voir les prises d’écoute, nous ajouterons le -l (écoute), comme ceci:

ss -l

ss -l dans une fenêtre de terminal.

Netid State  Recv-Q Send-Q               Local Address:Port                  Peer Address:Port Process 
nl    UNCONN 0      0                             rtnl:NetworkManager/535                * 
nl    UNCONN 0      0                             rtnl:evolution-addre/2987              * 
...
u_str LISTEN 0      4096          /run/systemd/private 13349                            * 0 
u_seq LISTEN 0      4096             /run/udev/control 13376                            * 0 
u_str LISTEN 0      4096             /tmp/.X11-unix/X0 33071                            * 0 
u_dgr UNCONN 0      0      /run/systemd/journal/syslog 13360                            * 0 
u_str LISTEN 0      4096    /run/systemd/fsck.progress 13362                            * 0 
u_dgr UNCONN 0      0    /run/user/1000/systemd/notify 32303                            * 0

Ces prises sont toutes non connectées et à l’écoute. Le «rtnl» signifie le routage netlink, qui est utilisé pour transférer des informations entre les processus du noyau et de l’espace utilisateur.

Liste de toutes les prises

Pour lister toutes les sockets, vous pouvez utiliser le -a (tout) option:

ss -a

ss -a dans une fenêtre de terminal.

Netid State  Recv-Q Send-Q    Local Address:Port                 Peer Address:Port    Process 
nl    UNCONN 0      0                  rtnl:NetworkManager/535               * 
nl    UNCONN 0      0                  rtnl:evolution-addre/2987 * 
...
u_str LISTEN 0      100       public/showq 23222                            * 0 
u_str LISTEN 0      100      private/error 23225                            * 0 
u_str LISTEN 0      100      private/retry 23228                            * 0 
...
udp   UNCONN 0      0             0.0.0.0:631                         0.0.0.0:* 
udp   UNCONN 0      0             0.0.0.0:mdns                        0.0.0.0:* 
...
tcp   LISTEN 0      128              [::]:ssh                            [::]:* 
tcp   LISTEN 0      5               [::1]:ipp                            [::]:* 
tcp   LISTEN 0      100             [::1]:smtp                           [::]:*

La sortie contient toutes les sockets, quel que soit leur état.

Liste des sockets TCP

Vous pouvez également appliquer un filtre afin que seules les sockets correspondantes soient affichées. Nous utiliserons le -t (TCP), donc seules les sockets TCP seront listées:

ss -a -t

 ss -a -t dans une fenêtre de terminal.

Liste des sockets UDP

le -u (UDP) effectue le même type d’action de filtrage. Cette fois, nous ne verrons que les sockets UDP:

ss -a -u

ss -a -u dans une fenêtre de terminal.

State  Recv-Q Send-Q    Local Address:Port Peer   Address:Port Process 
UNCONN 0      0               0.0.0.0:631         0.0.0.0:* 
UNCONN 0      0               0.0.0.0:mdns        0.0.0.0:* 
UNCONN 0      0               0.0.0.0:60734       0.0.0.0:* 
UNCONN 0      0         127.0.0.53%lo:domain      0.0.0.0:* 
ESTAB 0       0    192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps 
UNCONN 0      0                   [::]:mdns          [::]:* 
UNCONN 0      0                   [::]:51193         [::]:*

Liste des sockets Unix

Pour voir uniquement les sockets Unix, vous pouvez inclure le -x (Unix), comme illustré ci-dessous:

ss -a -x

ss -a -x dans une fenêtre de terminal.

Netid State Recv-Q Send-Q               Local Address:Port  Peer Address:Port    Process 
u_str ESTAB 0      0                                * 41826            * 41827 
u_str ESTAB 0      0                                * 23183            * 23184 
u_str ESTAB 28     0               @/tmp/.X11-unix/X0 52640            * 52639 
...
u_str ESTAB 0      0      /run/systemd/journal/stdout 18887            * 18885 
u_str ESTAB 0      0      /run/dbus/system_bus_socket 19273            * 17306

Liste des prises brutes

Le filtre pour les prises brutes est le -w option (brute):

ss -a -w

ss -a -w dans une fenêtre de terminal.

Liste des prises IP version 4

Les sockets utilisant le protocole TCP / IP version 4 peuvent être répertoriés à l’aide du -4 Option (IPV4):

ss -a -4

ss -a -4 dans une fenêtre de terminal.

Liste des prises IP version 6

Vous pouvez activer le filtre IP version 6 correspondant avec le -6 (IPV6), comme ceci:

ss -a -6

ss -a -6 dans une fenêtre de terminal.

Liste des sockets par état

Vous pouvez lister les sockets par état dans lequel elles se trouvent avec le state option. Cela fonctionne avec des états établis, à l’écoute ou fermés. Nous utiliserons également l’option de résolution (-r), qui tente de résoudre les adresses réseau en noms et les ports en protocoles.

La commande suivante recherchera les connexions TCP établies et ss essaiera de résoudre les noms:

ss -t -r state established

ss -t -r état établi dans une fenêtre de terminal.

Quatre connexions sont répertoriées dans l’état établi. Le nom d’hôte, ubuntu20-04, a été résolu et «ssh» est affiché au lieu de 22 pour la connexion SSH sur la deuxième ligne.

Nous pouvons répéter ceci pour rechercher les sockets en état d’écoute:

ss -t -r state listening

ss -t -r état écoute dans une fenêtre de terminal.

Recv-Q Send-Q Local Address:Port   Peer Address:Port Process 
0      128        localhost:5939        0.0.0.0:* 
0      4096    localhost%lo:domain      0.0.0.0:* 
0      128          0.0.0.0:ssh         0.0.0.0:* 
0      5          localhost:ipp         0.0.0.0:* 
0      100        localhost:smtp        0.0.0.0:* 
0      128             [::]:ssh         [::]:* 
0      5      ip6-localhost:ipp         [::]:* 
0      100    ip6-localhost:smtp        [::]:*

Liste des sockets par protocole

Vous pouvez lister les sockets en utilisant un protocole particulier avec le dport et sport options, qui représentent respectivement les ports de destination et source.

Nous tapons ce qui suit pour lister les sockets utilisant le protocole HTTPS sur un established connexion (notez l’espace après la parenthèse ouvrante et avant la parenthèse fermante):

ss -a state established ‘( dport = :https or sport = :https )’

ss -a état établi '(dport =: https ou sport =: https)' dans une fenêtre de terminal.

Nous pouvons utiliser le nom du protocole ou le port généralement associé à ce protocole. Le port par défaut pour Enveloppe de protection (SSH) est le port 22.

Nous utiliserons le nom du protocole dans une commande, puis le répéterons en utilisant le numéro de port:

ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’

ss -a '(dport =: ssh ou sport =: ssh)' dans une fenêtre de terminal.

Comme prévu, nous obtenons les mêmes résultats.

Liste des connexions à une adresse IP spécifique

Avec le dst (destination), nous pouvons lister les connexions à une adresse IP de destination particulière.

Nous tapons ce qui suit:

ss -a dst 192.168.4.25

ss -a dst 192.168.4.25 dans une fenêtre de terminal.

Identification des processus

Pour voir quels processus utilisent les sockets, vous pouvez utiliser l’option processus (-p), comme indiqué ci-dessous (notez que vous devez utiliser sudo):

sudo ss -t -p

sudo ss -t -p dans une fenêtre de terminal.

State Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Process 
ESTAB 0      0       192.168.4.28:57650  54.218.19.119:https users:(("firefox",pid=3378,fd=151)) 
ESTAB 0      0       192.168.4.28:ssh     192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

Cela nous montre que les deux connexions établies sur les sockets TCP sont utilisées par le démon SSH et Firefox.

Un digne successeur

le ss commande fournit les mêmes informations fournies précédemment par netstat, mais d’une manière plus simple et plus accessible. Vous pouvez consulter le page de manuel pour plus d’options et de conseils.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

La désactivation de l'historique des positions n'empêche pas Google de suivre votre position

La désactivation de l’historique des positions n’empêche pas Google de suivre votre position

Vous êtes-vous déconnecté de Facebook? C’est parce que 50 millions de personnes ont été piratées