Comment vérifier si une socket réseau spécifique est ouverte sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si une socket réseau spécifique est ouverte sous Linux. Comprendre comment identifier et inspecter les sockets réseau actives est une compétence fondamentale pour la résolution de problèmes et la surveillance réseau.

Grâce à des exercices pratiques, vous utiliserez des outils en ligne de commande puissants tels que ss et netstat pour lister et filtrer les connexions réseau. Vous explorerez également le système de fichiers /proc/net pour obtenir des informations plus détaillées sur les sockets, offrant ainsi une approche complète pour vérifier l'état des sockets réseau sur votre système.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/cat -.-> lab-558761{{"Comment vérifier si une socket réseau spécifique est ouverte sous Linux"}} linux/netstat -.-> lab-558761{{"Comment vérifier si une socket réseau spécifique est ouverte sous Linux"}} end

Vérifier les sockets avec ss -tuln

Dans cette étape, vous apprendrez à utiliser la commande ss pour inspecter les sockets réseau sur votre système Linux. Les sockets sont les points terminaux pour l'envoi et la réception de données sur un réseau. Comprendre comment afficher les sockets actives est crucial pour la résolution de problèmes et la surveillance réseau.

La commande ss est un outil puissant pour examiner les sockets. Nous l'utiliserons avec les options suivantes :

  • -t : Afficher les sockets TCP.
  • -u : Afficher les sockets UDP.
  • -l : Afficher les sockets en écoute (les sockets en attente de connexions).
  • -n : Ne pas résoudre les noms de services (afficher les numéros de port à la place).

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

ss -tuln

Vous verrez une sortie similaire à celle-ci :

Netid State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
tcp   LISTEN     0      128    0.0.0.0:22                       0.0.0.0:*
tcp   LISTEN     0      128    127.0.0.1:631                    0.0.0.0:*
tcp   LISTEN     0      128    0.0.0.0:5900                     0.0.0.0:*
tcp   LISTEN     0      128    127.0.0.1:25                     0.0.0.0:*
tcp   LISTEN     0      128    [::]:22                          [::]:*
tcp   LISTEN     0      128    [::1]:631                        [::]:*
tcp   LISTEN     0      128    [::]:5900                        [::]:*
tcp   LISTEN     0      128    [::1]:25                         [::]:*
udp   UNCONN     0      0      127.0.0.1:323                    0.0.0.0:*
udp   UNCONN     0      0      0.0.0.0:631                      0.0.0.0:*
udp   UNCONN     0      0      [::1]:323                        [::]:*
udp   UNCONN     0      0      [::]:631                         [::]:*

Décortiquons la sortie :

  • Netid : Le type de socket (par exemple, tcp, udp).
  • State : L'état de la socket (par exemple, LISTEN signifie qu'elle est en attente d'une connexion).
  • Recv-Q : Le nombre d'octets reçus dans la file d'attente.
  • Send-Q : Le nombre d'octets envoyés dans la file d'attente.
  • Local Address:Port : L'adresse IP locale et le numéro de port auxquels la socket est liée. 0.0.0.0 et [::] indiquent que la socket écoute sur toutes les interfaces réseau disponibles (IPv4 et IPv6 respectivement).
  • Peer Address:Port : L'adresse IP distante et le numéro de port auquel la socket est connectée. * indique que la socket écoute les connexions provenant de n'importe quelle adresse distante.

Cette sortie vous montre quels services sont en cours d'exécution et en attente de connexions sur votre système. Par exemple, vous pouvez voir que SSH (port 22), CUPS (port 631), VNC (port 5900) et le serveur de messagerie (port 25) sont en écoute.

Comprendre cette sortie est la première étape pour diagnostiquer les problèmes de connectivité réseau ou identifier les services potentiellement indésirables en cours d'exécution sur votre système.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les sockets avec netstat -tuln

Dans cette étape, vous utiliserez une autre commande, netstat, pour vérifier les sockets réseau. netstat est une commande plus ancienne que ss, mais elle est toujours largement utilisée et fournit des informations similaires sur les connexions réseau, les tables de routage et les statistiques des interfaces.

Nous utiliserons netstat avec les mêmes options que ss pour afficher les sockets TCP et UDP en écoute sans résoudre les noms de services :

  • -t : Afficher les sockets TCP.
  • -u : Afficher les sockets UDP.
  • -l : Afficher les sockets en écoute.
  • -n : Ne pas résoudre les noms de services.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

netstat -tuln

Vous verrez une sortie similaire à celle-ci :

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN
tcp6       0      0 :::5900                 :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp        0      0 0.0.0.0:631             0.0.0.0:*
udp6       0      0 ::1:323                 :::*
udp6       0      0 :::631                  :::*

Notez que la sortie de netstat -tuln est très similaire à celle de ss -tuln. Les deux commandes fournissent des informations sur le protocole (Proto), l'adresse et le port locaux (Local Address), l'adresse et le port distants (Foreign Address) et l'état de la connexion (State).

Bien que ss soit généralement considéré comme plus rapide et plus informatif pour les scénarios complexes, netstat reste un outil précieux à avoir dans votre arsenal de commandes Linux. Il est bon de se familiariser avec les deux.

Vous avez maintenant utilisé avec succès ss et netstat pour afficher les sockets en écoute. C'est une compétence fondamentale pour comprendre l'activité réseau sur votre système.

Cliquez sur Continuer pour passer à l'étape suivante.

Inspecter les détails des sockets dans /proc/net

Dans cette étape, vous allez explorer le répertoire /proc/net, qui fournit des informations détaillées sur la pile réseau et les protocoles réseau dans le noyau Linux. C'est là que des commandes comme ss et netstat obtiennent leurs données.

Le système de fichiers /proc est un système de fichiers virtuel qui fournit des informations sur les processus et d'autres informations système. C'est un moyen puissant d'inspecter l'état interne du noyau.

À l'intérieur de /proc/net, vous trouverez des fichiers qui contiennent des données brutes sur les connexions réseau. Par exemple, tcp, udp, tcp6 et udp6 contiennent des informations sur les sockets TCP et UDP actives (respectivement IPv4 et IPv6).

Regardons le contenu du fichier tcp. Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

cat /proc/net/tcp

Vous verrez une sortie qui ressemble à ceci :

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops
   0: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12345 1 0000000000000000 0
   1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 67890 1 0000000000000000 0
   ... (more lines)

Cette sortie est moins lisible pour l'homme que celle de ss ou netstat car il s'agit de données brutes du noyau. Chaque ligne représente une socket TCP et contient différents champs, notamment :

  • sl : L'index de la liste des sockets.
  • local_address : L'adresse IP locale et le port au format hexadécimal. 0100007F est la représentation hexadécimale de 127.0.0.1 (adresse de bouclage), et 0019 est la représentation hexadécimale du port 25.
  • rem_address : L'adresse IP distante et le port au format hexadécimal.
  • st : L'état de la socket (par exemple, 0A représente LISTEN).
  • tx_queue : La taille de la file d'attente d'envoi.
  • rx_queue : La taille de la file d'attente de réception.
  • uid : L'identifiant utilisateur propriétaire de la socket.
  • inode : Le numéro d'inode de la socket.

Vous pouvez également afficher les sockets UDP en consultant le fichier /proc/net/udp :

cat /proc/net/udp

Et pour les sockets IPv6, vous pouvez vérifier /proc/net/tcp6 et /proc/net/udp6.

Bien que vous n'analysiez généralement pas directement ces fichiers au quotidien, comprendre que c'est là que proviennent les informations réseau offre une meilleure compréhension de la gestion des connexions réseau par Linux. Des commandes comme ss et netstat lisent essentiellement et formatent les données de ces fichiers pour faciliter leur compréhension.

Vous avez maintenant exploré les informations brutes sur les sockets disponibles dans le système de fichiers /proc/net.

Cliquez sur Continuer pour terminer le lab.

Résumé

Dans ce lab, vous avez appris à vérifier si une socket réseau spécifique est ouverte sous Linux en utilisant divers outils en ligne de commande. Vous avez commencé par utiliser la commande ss avec les options -tuln pour afficher les sockets TCP et UDP en écoute, en comprenant les colonnes de sortie telles que Netid, State, Local Address:Port et Peer Address:Port.

Après avoir utilisé ss, vous avez généralement vérifié les informations sur les sockets à l'aide de la commande netstat, qui fournit des statistiques réseau similaires. Enfin, vous avez exploré comment inspecter les informations détaillées sur les sockets directement à partir du système de fichiers /proc/net, qui offre une vue de bas niveau de la pile réseau. Ces étapes fournissent une approche complète pour identifier et examiner les sockets réseau ouvertes sur un système Linux.