netstat : comprendre les connexions réseau

Auteur : Publié le

En bref : netstat est un outil en ligne de commande qui affiche les connexions réseau, les ports sur lesquels les programmes attendent du trafic et d’autres informations réseau. Sous Linux, il est généralement fourni par le paquet net-tools : la commande sudo netstat -tulnp affiche les ports TCP et UDP ainsi que les processus associés. Pour examiner les connexions TCP établies, sudo netstat -tnp est utile ; ss constitue une alternative moderne.

Que montre netstat et quand est-il utile ?

netstat permet de vérifier avec quelles adresses l’ordinateur communique et quels programmes fournissent des services réseau. Il aide par exemple à déterminer si un serveur web fonctionne, pourquoi une application ne peut pas utiliser un port ou quel processus maintient une connexion avec un autre appareil.

Un port est un numéro permettant de diriger le trafic réseau vers un service précis. Un programme à l’écoute sur un port attend des communications, tandis qu’une connexion TCP active relie une adresse et un port locaux à l’adresse et au port de l’autre extrémité.

netstat montre l’état observable sur l’ordinateur examiné. Son résultat ne prouve pas à lui seul qu’un service est accessible depuis Internet : un pare-feu, un routeur ou les règles réseau du fournisseur d’infrastructure peuvent en bloquer l’accès.

Comment installer netstat sous Linux ?

Vérifiez d’abord si l’outil fonctionne déjà :

netstat --version

Si le shell indique que la commande est introuvable, installez le paquet net-tools à l’aide du gestionnaire de paquets de votre distribution. Voici les commandes courantes :

DistributionInstallation
Debian, Ubuntusudo apt update && sudo apt install net-tools
Fedorasudo dnf install net-tools
Arch Linuxsudo pacman -S net-tools
openSUSEsudo zypper install net-tools

L’installation nécessite des droits d’administrateur. Sur un serveur administré par un tiers, si vous n’avez pas accès à sudo, demandez à l’administrateur d’effectuer l’installation ou vérifiez si la commande ss est disponible.

Sur de nombreux systèmes Linux modernes, netstat n’est pas installé par défaut. Pour diagnostiquer les connexions, il est recommandé d’utiliser ss, fourni par le paquet iproute2. netstat reste toutefois utile pour suivre des instructions anciennes ou travailler dans des environnements plus anciens.

Comment vérifier les connexions actives ?

Pour afficher les connexions TCP sans les sockets en attente de nouvelles connexions, exécutez :

sudo netstat -tnp

L’option -t sélectionne TCP, -n affiche les adresses et les ports sous forme numérique, sans résolution des noms, et -p ajoute les informations sur les processus. sudo permet aussi de voir les données des processus appartenant à d’autres utilisateurs ; sans les droits nécessaires, certaines informations peuvent être indisponibles.

La colonne State indique l’état de la connexion. ESTABLISHED signifie que la connexion est établie, SYN_SENT qu’une tentative de connexion est en cours, et TIME_WAIT désigne un état après la fermeture de la connexion, pendant lequel le système conserve encore ses données. Une entrée TIME_WAIT ne signale pas, à elle seule, une panne.

Si seules les connexions TCP établies vous intéressent, vous pouvez filtrer le résultat :

sudo netstat -tnp | grep ESTABLISHED

La colonne Local Address contient l’adresse et le port locaux, et Foreign Address l’adresse et le port de l’autre extrémité. UDP n’établit pas de connexions de la même manière que TCP : ses sockets n’ont donc pas d’état équivalent à ESTABLISHED. Pour les examiner, utilisez sudo netstat -unp.

Comment trouver les programmes à l’écoute sur les ports ?

La commande la plus pratique pour examiner les services réseau est :

sudo netstat -tulnp

L’option -l limite le résultat aux sockets en écoute, et -u inclut UDP. Pour TCP, vous verrez l’état LISTEN ; dans le cas d’UDP, il s’agit de sockets recevant des datagrammes, et non d’une attente de connexions au sens de TCP.

Voici un exemple d’entrée simplifiée :

tcp  0  0  127.0.0.1:8080  0.0.0.0:*  LISTEN  2451/python3

Cela signifie que le processus python3, dont le PID est 2451, écoute sur le port 8080, mais uniquement sur l’interface de boucle locale. Le PID est l’identifiant du processus ; il permet de l’examiner plus précisément, par exemple avec la commande ps -p 2451 -f.

L’adresse d’écoute est importante :

Ne considérez pas l’adresse 0.0.0.0:* dans la colonne Foreign Address comme un client distant. Pour un socket en écoute, elle indique qu’aucune autre extrémité n’est spécifiée.

Exemple : une application ne peut pas utiliser le port 8080

Si une application signale que le port 8080 est déjà utilisé, vérifiez les sockets TCP en écoute :

sudo netstat -tlnp | grep ':8080 '

Relevez le PID et le nom du programme, puis examinez le processus avec la commande ps -p PID -f, en remplaçant PID par le numéro trouvé. Déterminez s’il s’agit d’une instance précédente de votre application ou d’un service nécessaire. Arrêtez seulement ensuite le programme concerné selon sa procédure habituelle, ou choisissez un autre port. Ne mettez pas fin à un processus inconnu au seul motif qu’il empêche le démarrage.

Si netstat n’est pas disponible, vous pouvez effectuer une vérification similaire avec :

sudo ss -tulnp

En cas de problème d’accès depuis un autre ordinateur, vérifiez d’abord l’adresse d’écoute et le processus, puis examinez le pare-feu et le routage réseau. Cette démarche permet de distinguer un dysfonctionnement de l’application d’un problème d’accessibilité de son port.

Voir aussi : Nom de domaine et réseaux sociaux : quels éléments doivent être cohérents ?

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.