Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Netstat et grep : guide complet pour analyser votre réseau

⏱️ Temps de lecture estimé : 16 minutes
Accueil Sécurité Netstat et grep : guide complet pour analyser votre réseau

Ce tutoriel a pour but de vous apprendre, étape par étape, à utiliser les commandes netstat et grep. Vous découvrirez ce que sont ces deux outils, à quoi ils servent, leurs avantages et leurs limites, comment les installer, et comment les combiner pour résoudre des problèmes concrets.

Les explications sont conçues pour être accessibles à toute personne disposant d’un accès au terminal sous Linux ou Unix (macOS). Les exemples sont détaillés et commentés afin que vous puissiez reproduire chaque action sur votre machine tout en comprenant.

Ces deux commandes netstat et grep, lorsqu’elles sont associées, permettent d’obtenir rapidement des informations réseau pertinentes et de filtrer les résultats pour isoler ce qui vous intéresse. Ce tutoriel suit une progression claire : découverte de chaque commande, options principales, utilisations combinées, études de cas pratiques, alternatives modernes, bonnes pratiques et exercices pour s’entraîner.

Pourquoi utiliser netstat et grep ensemble ?

netstat fournit une vue complète des connexions réseau, des ports ouverts et des programmes liés aux socketsgrep permet de filtrer ces sorties par mot-clé ou expression régulière. Ensemble, ils transforment une sortie potentiellement très longue en une information précise et exploitables.

Un socket, en informatique, est un point de terminaison pour la communication bidirectionnelle sur un réseau. C’est l’un des moyens les plus courants d’établir une connexion client-serveur sur Internet.

Imaginez un socket comme l’extrémité d’un tuyau. D’un côté, il y a le programme A qui veut envoyer des données (par exemple, un navigateur web), et de l’autre, il y a le programme B qui veut les recevoir (par exemple, un serveur web). Le socket permet à ces deux programmes de communiquer.

Un socket est défini par la combinaison de trois éléments :

  • Adresse IP : L’adresse unique de l’ordinateur sur le réseau.
  • Port : Un numéro qui identifie un service ou une application spécifique sur cet ordinateur (par exemple, le port 80 pour le trafic web HTTP).
  • Protocole : La règle de communication utilisée, comme TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol).

Un socket est l’identifiant unique d’une connexion réseau entre deux programmes, à la fois pour envoyer et recevoir des données.

Pour utiliser netstat et grep, vous devez avoir un accès à un terminal Linux ou Unix (macOS) et, idéalement, des droits administrateur (sudo) pour obtenir toutes les informations, notamment les programmes associés aux connexions. Aucune connaissance avancée n’est requise pour commencer.

Qu’est-ce que netstat ?

Pour bien commencer, il est essentiel de comprendre ce qu’est netstat. Ce terme est la contraction de network statistics, ce qui se traduit par « statistiques réseau ». C’est un utilitaire de ligne de commande qui a pour mission de vous fournir des informations détaillées sur les connexions réseau actives, les ports en écoute sur votre machine, les tables de routage, et même des statistiques d’interface.

Pensez à netstat comme à un rapport de police sur l’activité réseau de votre ordinateur. Il vous dit qui parle à qui, sur quel port, et dans quel état se trouve la conversation. C’est l’outil de base pour toute investigation réseau.

Le principal avantage de netstat est sa capacité à fournir une vue d’ensemble instantanée. En une seule commande, vous pouvez repérer un processus malveillant, identifier une application qui ne fonctionne pas correctement ou simplement vérifier si votre serveur web est bien en train d’écouter les requêtes des clients. Sa simplicité d’utilisation en fait le premier réflexe de tout administrateur pour le diagnostic réseau.

Cependant, il est important de noter que netstat a aussi ses limites. C’est un outil relativement ancien qui, sur les systèmes modernes, est progressivement remplacé par la commande ss (pour socket statistics). Bien que ss soit plus rapide et plus riche en fonctionnalités, netstat reste largement disponible et utilisé, et sa maîtrise est un passage obligé pour quiconque souhaite comprendre les bases des réseaux.

netstat est donc une commande historique qui affiche les connexions réseau, les tables de routage, les statistiques d’interface et les sockets. Elle est utile pour voir quels ports sont ouverts, quelles connexions sont actives et quel programme est associé à une connexion.

Sur de nombreuses distributions, netstat fait partie du paquet net-tools. Certaines distributions modernes privilégient ss du paquet iproute2 qui fournit des informations similaires et est plus rapide. Si netstat n’est pas installé, il est simple à ajouter. Des instructions d’installation pour les distributions principales suivent plus bas.

Syntaxe de base

La syntaxe générale de netstat se présente ainsi : netstat [options].

La plupart des usages pratiques combinent plusieurs options pour obtenir une vue précise.

Options principales de netstat

La combinaison d’options la plus utilisée est -tulpn. Voici ce que signifie chaque lettre :
-t pour les connexions TCP,
-u pour les connexions UDP,
-l pour afficher uniquement les sockets en écoute,
-p pour afficher le PID et le nom du programme associé à chaque socket,
-n pour afficher les adresses et ports sous forme numérique (évite la résolution DNS ou nommage).

Chaque option peut être utilisée seule ou en combinaison selon le besoin. Par exemple, netstat -an affiche toutes les connexions de façon numérique, utile pour un diagnostic rapide sans afficher les programmes.


Une connexion TCP (Transmission Control Protocol) est un protocole de communication qui garantit une transmission de données fiable et ordonnée sur un réseau, notamment Internet. On l’appelle souvent un protocole « orienté connexion » car il établit une liaison avant d’envoyer les données et s’assure qu’elles arrivent correctement.

Pour garantir la fiabilité, une connexion TCP passe par trois phases :

  1. Établissement de la connexion (« handshake » à trois voies) :
    • L’expéditeur envoie un message SYN (synchronisation) au destinataire.
    • Le destinataire répond par un message SYN-ACK (synchronisation-accusé de réception).
    • L’expéditeur confirme par un message ACK (accusé de réception). Cette séquence assure que les deux machines sont prêtes à communiquer.
  2. Transfert des données :
    • Les données sont découpées en petits paquets appelés segments.
    • Chaque segment est numéroté, ce qui permet de les réassembler dans le bon ordre à l’arrivée.
    • Le destinataire envoie des accusés de réception (ACK) pour chaque segment reçu. Si un segment n’est pas accusé de réception dans un certain délai, l’expéditeur le renvoie.
  3. Fermeture de la connexion :
    • Une fois toutes les données transmises et confirmées, la connexion est fermée de manière coordonnée.

Ce processus, plus complexe que d’autres protocoles comme UDP, rend la connexion TCP idéale pour des applications où l’intégrité des données est cruciale, comme la navigation web (HTTP), le transfert de fichiers (FTP) ou l’envoi de courriels.


Une connexion UDP (User Datagram Protocol) est un protocole de communication léger et sans connexion, qui privilégie la rapidité au détriment de la fiabilité. Contrairement à TCP, UDP n’établit pas de « poignée de main » avant de transférer les données et ne vérifie pas si les paquets sont arrivés à destination, dans le bon ordre ou sans erreur.

Pensez à UDP comme à un envoi postal sans accusé de réception. L’expéditeur envoie les paquets de données (appelés datagrammes) à l’adresse de destination, sans se soucier de ce qui se passe après.

Les principales caractéristiques d’UDP sont :

  • Absence de connexion : Il n’y a pas de phase d’établissement de connexion, ce qui réduit la latence.
  • Non-fiable : La réception des datagrammes n’est pas garantie. Les paquets peuvent être perdus, dupliqués ou arriver dans le désordre.
  • Simple : L’en-tête de paquet UDP est beaucoup plus petit que celui de TCP, ce qui le rend plus efficace.

En raison de sa rapidité, UDP est idéal pour les applications où la perte de quelques données est acceptable, mais où la latence doit être minimale. C’est le protocole de choix pour :

  • Le streaming vidéo et audio en direct (comme Netflix ou Spotify).
  • Les jeux en ligne, où un léger décalage est plus pénalisant que la perte d’un paquet.
  • Le DNS (Domain Name System) pour une résolution rapide des noms de domaine.

  • Le PID est un algorithme de contrôle utilisé en automatique et en robotique. L’acronyme PID signifie Proportionnel, Intégral, Dérivé.

L’objectif d’un contrôleur PID est de maintenir une valeur (comme la température, la vitesse ou la pression) aussi proche que possible d’une valeur cible, appelée point de consigne. Pour ce faire, il calcule un signal de correction basé sur trois éléments :

  • P (Proportionnel) : Calcule la correction en fonction de l’erreur actuelle (la différence entre la valeur mesurée et le point de consigne). Plus l’erreur est grande, plus la correction est forte.
  • I (Intégral) : Prend en compte l’erreur accumulée dans le temps pour éliminer les erreurs persistantes et s’assurer que le système atteint précisément le point de consigne.
  • D (Dérivé) : Anticipe les changements futurs en fonction de la vitesse à laquelle l’erreur évolue. Cela permet d’amortir les oscillations et d’éviter que le système ne dépasse son objectif.

En combinant ces trois actions, le contrôleur PID ajuste en permanence une variable de sortie pour réduire l’erreur et stabiliser le système. C’est un mécanisme de contrôle en boucle fermée très efficace et largement utilisé dans des applications variées, du régulateur de vitesse d’une voiture aux systèmes de contrôle de température industriels.

Quand utiliser netstat

Maintenant que vous savez ce qu’est netstat, explorons ses applications concrètes. Son utilité principale réside dans le diagnostic et la surveillance.

1. Diagnostiquer un problème de connectivité : Imaginez que votre serveur web ne soit plus accessible. Avant de vous précipiter pour redémarrer la machine, la première chose à faire est de vérifier si le service écoute bien sur le port 80 ou 443. Une simple commande netstat peut vous le dire en un instant. Si le port n’est pas en état d’écoute, vous savez que le problème vient du service et non du pare-feu ou d’un autre composant.

2. Identifier un processus malveillant : Si vous constatez une activité réseau suspecte, par exemple une connexion vers une adresse IP inconnue, netstat peut vous aider à identifier le processus qui en est à l’origine. En affichant le programme associé à la connexion, vous pouvez rapidement déterminer s’il s’agit d’une application légitime ou d’un logiciel malveillant.

3. Vérifier les connexions en cours : Vous pouvez utiliser netstat pour voir toutes les connexions TCP et UDP actives. C’est un excellent moyen de surveiller l’activité sur un serveur. Vous pouvez ainsi savoir qui est connecté, d’où il vient (son adresse IP) et sur quel port.

Exemples pratiques simples

Exemple 1netstat -tulpn

Cette commande, exécutée avec sudo, affiche les services qui écoutent sur la machine, le protocole (tcp/udp), l’adresse locale et le PID/programme. Interprétez la colonne Local Address pour voir le port et la colonne PID/Program name pour savoir quel binaire est en écoute.

Exemple 2 netstat -an | grep ESTABLISHED

Cette commande liste toutes les connexions actuellement établies. grep est ici utilisé pour filtrer la sortie et ne garder que les lignes où l’état est ESTABLISHED.

Exemple 3 Afficher toutes les connexions actives (-a)

L’option -a est l’une des plus fondamentales. Elle affiche toutes les connexions et tous les ports en état d’écoute, qu’ils soient de type TCP ou UDP.

netstat -a

Lorsque vous exécutez cette commande, vous verrez s’afficher une liste de colonnes : ProtoRecv-QSend-QLocal AddressForeign Address, et State.

  • Proto : Le protocole de la connexion, par exemple TCP ou UDP.
  • Local Address : L’adresse IP et le numéro de port de votre machine.
  • Foreign Address : L’adresse IP et le numéro de port de la machine distante avec laquelle la connexion est établie.
  • State : L’état de la connexion (par exemple ESTABLISHED pour une connexion active ou LISTEN pour un port en attente de connexion).

Exemple 4 : Afficher les statistiques pour les protocoles TCP et UDP (-t-u)

Pour filtrer par protocole, vous pouvez utiliser les options -t pour TCP et -u pour UDP. Souvent, on combine ces options avec -n pour obtenir une sortie plus rapide.

netstat -tn

Cette commande vous affichera toutes les connexions TCP. Le -n indique à netstat de ne pas essayer de résoudre les noms de domaine, ce qui rend la sortie instantanée. C’est une bonne pratique pour éviter les délais liés à la résolution DNS.

Exemple 5 Afficher les ports en écoute et le processus associé (-l-p)

C’est l’une des combinaisons d’options les plus utiles. L’option -l (listen) ne vous montrera que les ports en attente de connexions, tandis que l’option -p (program) vous donnera le nom du programme et son identifiant de processus (PID) qui est associé à chaque port.

netstat -tulpn

Décortiquons cette commande :

  • -t : Affiche les connexions TCP.
  • -u : Affiche les connexions UDP.
  • -l : Affiche seulement les sockets en état d’écoute.
  • -p : Affiche l’ID du processus et le nom du programme.
  • -n : Affiche les adresses numériques au lieu des noms d’hôtes.

L’exécution de cette commande est un excellent moyen de vérifier quels services tournent sur votre machine. Par exemple, si un serveur web comme Nginx est en cours d’exécution, vous devriez voir une ligne avec le port 80 ou 443 en état d’écoute, avec le nom du processus Nginx à côté.

Exemple 6 Afficher la table de routage (-r)

La table de routage est un ensemble de règles qui indique comment les paquets de données doivent être acheminés vers leur destination. La commande netstat -r vous permet de l’afficher.

netstat -r

La sortie vous montrera les passerelles par défaut, les chemins vers les sous-réseaux et d’autres informations cruciales pour le routage.

Exemple 6 Afficher les statistiques par interface (-i)

Enfin, si vous voulez des informations sur le trafic réseau passant par vos interfaces, l’option -i est faite pour vous.

netstat -i

Cette commande vous donnera un résumé des paquets envoyés et reçus par chaque carte réseau, ainsi que le nombre d’erreurs. C’est une mine d’informations pour diagnostiquer des problèmes de performance sur le réseau.

Les principales commandes de netstat

Commande netstatDescription
netstatAffiche toutes les connexions réseau actives (TCP/UDP) et les ports écoutés.
netstat -aAffiche toutes les connexions et tous les ports écoutés (TCP et UDP).
netstat -nAffiche les adresses et ports sous forme numérique, sans résolution des noms.
netstat -tAffiche uniquement les connexions TCP.
netstat -uAffiche uniquement les connexions UDP.
netstat -lAffiche uniquement les ports en écoute (listening).
netstat -pAffiche le PID et le nom du programme associé à chaque connexion.
netstat -rAffiche la table de routage du système.
netstat -sAffiche les statistiques réseau pour chaque protocole (TCP, UDP, ICMP…).
netstat -iAffiche les interfaces réseau et leurs statistiques.
netstat -cMet à jour en continu la liste des connexions.
netstat -anpCombine plusieurs options : tout afficher (-a), en mode numérique (-n) et afficher les PID/programmes (-p).
netstat --helpAffiche l’aide complète de netstat avec toutes les options disponibles.

Qu’est-ce que grep ?

grep est un utilitaire de filtrage de texte. Il recherche des motifs (patterns) au sein d’un flux de texte et renvoie seulement les lignes correspondantes. Associé à d’autres commandes comme netstatps ou journalctl, il permet d’isoler l’information pertinente rapidement.

Il existe des variantes de grep : egrep pour les expressions régulières étendues et fgrep pour la recherche littérale. Dans les distributions modernes, egrep et fgrep sont souvent des liens vers grep -E et grep -F.

La syntaxe de base est grep [options] motif [fichier].

Lorsqu’on l’utilise en pipeline (|), on envoie la sortie d’une commande vers grep. Exemple : commande | grep motif.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Options principales de grep

-i rend la recherche insensible à la casse.
-v inverse la sélection (affiche les lignes qui ne correspondent pas).
-r recherche récursive dans les dossiers.
-E active les expressions régulières étendues.
--color met en évidence les correspondances.
Ces options servent à affiner la recherche selon le contexte.

Expressions régulières utiles

Les expressions régulières simples comme ^ pour le début de ligne, $ pour la fin, . pour n’importe quel caractère et \d pour un chiffre peuvent être utiles pour cibler des motifs. Par exemple, grep -E ':[0-9]{1,5}\s' peut aider à repérer un port suivi d’un espace.

Exemples pratiques simples

Exemple 1netstat -tulpn | grep :80
Cette commande filtre pour ne garder que les sockets écoutant sur le port 80.

Exemple 2journalctl -u apache2 | grep -i error
Ici grep met en évidence les erreurs dans les logs d’un service.

Combiner netstat et grep

La sortie de netstat peut être très longue, en particulier sur des serveurs très actifs. grep permet d’aller directement à l’information recherchée sans perdre de temps. Le filtrage réduit le bruit et facilite l’action corrective.

Les commandes principales de grep

Commande grepDescription
grep "mot" fichierRecherche le mot dans le fichier et affiche les lignes correspondantes.
grep -i "mot" fichierRecherche insensible à la casse (majuscules/minuscules).
grep -v "mot" fichierAffiche les lignes qui ne contiennent pas le mot.
grep -r "mot" dossierRecherche récursive dans tous les fichiers d’un dossier et de ses sous-dossiers.
grep -n "mot" fichierAffiche le numéro de ligne pour chaque ligne correspondante.
grep -c "mot" fichierAffiche le nombre de lignes correspondant au mot.
grep -l "mot" fichiers*Affiche les noms de fichiers contenant le mot.
grep -w "mot" fichierRecherche le mot comme mot entier, pas comme sous-chaîne.
`grep -E « mot1mot2″ fichier`
grep -o "mot" fichierAffiche seulement les correspondances, pas la ligne entière.
grep --color "mot" fichierSurligne le mot trouvé dans la sortie pour plus de visibilité.
grep -A 3 "mot" fichierAffiche la ligne correspondante et 3 lignes après (After).
grep -B 3 "mot" fichierAffiche la ligne correspondante et 3 lignes avant (Before).
grep -C 3 "mot" fichierAffiche la ligne correspondante et 3 lignes avant et après (Context).

Les différences entre netstat et nmap

Netstat et Nmap sont deux outils de ligne de commande essentiels, mais ils ont des objectifs et des champs d’action très différents. On peut les comparer à un médecin auscultant un patient (netstat) et à un détective qui enquête sur un suspect (nmap).

Netstat : L’analyse locale

Netstat, pour network statistics, est un outil de diagnostic local. Son objectif est de fournir des informations sur les connexions réseau actives sur l’ordinateur où il est exécuté. Il se concentre sur l’état du système d’un point de vue réseau, en répondant à des questions telles que :

  • Quelles sont les connexions entrantes et sortantes sur ma machine ?
  • Quels ports sont ouverts et écoutent activement les connexions ?
  • Quel processus (application) utilise quel port ?
  • Quelle est la table de routage de mon système ?

Netstat est utilisé pour la surveillance et le dépannage réseau interne. Il est indispensable pour vérifier si un service web est en cours d’exécution, si une application communique avec l’extérieur, ou pour identifier un processus suspect sur votre propre machine.

Nmap : Le balayage externe

Nmap, pour Network Mapper, est un outil d’exploration et d’audit de sécurité réseau. Sa principale fonction est de scanner des machines distantes sur un réseau pour en dresser une carte. Nmap utilise des paquets IP bruts pour déterminer :

  • Quels hôtes (machines) sont actifs sur un réseau donné.
  • Quels ports sont ouverts sur ces hôtes distants.
  • Quels services (FTP, SSH, HTTP, etc.) et quelles versions de ces services sont en cours d’exécution sur les ports ouverts.
  • Quel système d’exploitation tourne sur la machine cible (détection d’OS).

Nmap est utilisé par les administrateurs et les professionnels de la sécurité pour l’audit de sécurité et la cartographie de réseau. Il permet d’identifier les vulnérabilités potentielles en révélant les services exposés publiquement, les configurations par défaut non sécurisées, ou en testant la résilience d’un pare-feu.

Résumé des différences clés

CaractéristiqueNetstatNmap
Champ d’actionLocalDistant
ObjectifDiagnostic et surveillance interneAudit de sécurité et cartographie réseau
Information fournieConnexions, ports et processus sur la machine localePorts ouverts, services et OS sur une machine distante
NatureUtilitaire de diagnosticScanner de sécurité et d’exploration

Cas pratiques d’utilisation de netstat et grep

Trouver si un port précis est utilisé
Étape 1 : Lancez sudo netstat -tulpn pour obtenir la liste des services en écoute.
Étape 2 : Utilisez grep pour filtrer : sudo netstat -tulpn | grep :443. Si la commande renvoie une ligne, cela signifie qu’un service écoute sur le port 443. La colonne PID/Program name vous indique le programme.

Vérifier si un service est en écoute
Étape 1 : Remplacez le port par le nom du service si connu, par exemple sudo netstat -tulpn | grep sshd.
Étape 2 : Si sshd apparaît, le service SSH est actif et le port d’écoute est indiqué.

Identifier l’adresse IP d’un client connecté
Étape 1 : Exécutez netstat -an | grep ESTABLISHED | grep :22 pour voir les connexions SSH établies.
Étape 2 : La colonne Foreign Address montre l’adresse IP du client.

Rechercher un processus lié à une connexion
Étape 1 : sudo netstat -tulpn | grep :3306 pour MySQL.
Étape 2 : Lisez la colonne PID/Program name et utilisez ps -p <PID> -o pid,cmd pour obtenir la commande exacte qui a lancé le processus.

Chaînage avec autres commandes

awk ou cut peuvent compléter grep si vous souhaitez extraire une colonne précise. Exemple : sudo netstat -tulpn | grep :80 | awk '{print $7}' affiche la colonne qui contient le PID/Programme. Si vous souhaitez obtenir seulement le PID, vous pouvez combiner cut -d'/' -f1 après l’extraction.

Études de cas avancées

Détecter un port suspect occupé

Vous suspectez qu’un service inconnu occupe un port critique.
Étape 1 : sudo netstat -tulpn | grep :12345 pour repérer le port.
Étape 2 : Si le PID correspond à un binaire inconnu, notez le PID puis exécutez ps -p <PID> -o pid,uid,gid,cmd pour plus d’informations.
Étape 3 : Inspectez les fichiers binaires et la provenance du programme. Si nécessaire, isolez la machine du réseau pour éviter toute activité malveillante.

Vérifier les connexions actives d’un serveur web

Le site web répond lentement, vous voulez voir les connexions actives.
Étape 1 : sudo netstat -anp | grep :80 pour lister les connexions vers le port 80.
Étape 2 : Trier par IP et compter les connexions : sudo netstat -anp | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr permet d’identifier si une IP effectue de nombreuses connexions simultanées.

Surveiller en temps réel

Vous voulez surveiller dynamiquement un port.
Étape 1 : Utilisez la commande watch : watch -n 2 "sudo netstat -tulpn | grep :80" qui exécutera la commande toutes les 2 secondes et mettra à jour l’affichage.

Créer un alias ou un script d’automatisation

Il peut être pratique de créer un alias ou un script shell qui résume régulièrement l’état de certains ports. Exemple de script check_ports.sh :

#!/bin/bash
PORTS=(22 80 443 3306)
for P in "${PORTS[@]}"; do
  echo "Port $P :"
  sudo netstat -tulpn | grep ":$P" || echo "Aucun service en écoute sur $P"
done

Rendez le script exécutable puis lancez-le. Ce script est un exemple simple, détaillé étape par étape pour automatiser la vérification des ports critiques.

Exemple : Un script Bash qui alerte si un port est utilisé

Voici un script plus avancé qui envoie un e-mail ou écrit dans un log si un port devient occupé. Ce script vérifie toutes les minutes.

#!/bin/bash
PORT=8080
LOG=/var/log/port_monitor.log
while true; do
  if sudo netstat -tulpn | grep -q ":$PORT"; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') : port $PORT occupé" >> $LOG
  fi
  sleep 60
done

Veillez à adapter la méthode d’alerte selon votre environnement et vos politiques.

Alternatives modernes à netstat

Certaines distributions ont migré vers les utilitaires fournis par iproute2netstat reste disponible mais peut ne pas être installé par défaut. ss est plus rapide et souvent plus précis.

Utiliser ss

ss remplace netstat dans de nombreuses tâches. Les options de ss sont différentes mais les concepts sont similaires. Exemple équivalent à netstat -tulpn : ss -tulpen. L’usage de grep reste identique pour filtrer.

Adapter les filtres grep avec ss

Les commandes ss -tulpen | grep :80 fonctionnent comme avec netstatss possède des options supplémentaires pour filtrer côté socket, mais grep reste une solution simple et portable pour text-processing.

Bonnes pratiques et pièges à éviter

Limites de netstat

netstat ne montre pas toujours les mêmes informations en fonction des droits de l’utilisateur. Sans sudo, la colonne PID/Program name peut être vide. De plus, netstat peut être plus lent que ss sur des listes très longues.

Utiliser sudo quand c’est nécessaire

Pour cartographier précisément les services et leurs PID, exécutez sudo netstat -tulpn. Sans élévation, certaines informations sont cachées pour des raisons de sécurité.

Interpréter LISTEN vs ESTABLISHED

LISTEN indique qu’un programme attend des connexions sur un port.

 ESTABLISHED signifie qu’une connexion est active entre deux machines. Pour le dépannage, distinguez ces états pour comprendre si le problème vient d’un service qui n’écoute pas ou d’une connexion qui n’est pas établie correctement.

Pièges courants avec grep

Grep peut renvoyer des faux positifs si le motif est trop vague. Par exemple, grep 80 peut capturer des occurrences de 8080 ou d’autres contextes. Il est conseillé d’utiliser des motifs précis, par exemple grep ':80\>' ou grep -E ':[[:digit:]]{1,5}\s' selon le besoin.

Performance et machine 8 Go de RAM

Sur une machine disposant de 8 Go de RAM, netstat et grep consomment très peu de mémoire. Les problèmes de performance apparaissent généralement lorsque la sortie est redirigée vers des opérations lourdes (analyse massive de logs, tri/tri répétitif). Pour un usage courant, 8 Go est pleinement suffisant. Si vous prévoyez d’analyser des millions de lignes de logs, privilégiez des outils optimisés (awk, perl, outils dédiés) ou effectuez l’analyse par lots.

Exercices pratiques

Vérifier si MySQL écoute sur le port 3306

Étape 1 : Exécutez sudo netstat -tulpn | grep :3306.
Étape 2 : Si une ligne apparaît, examinez la colonne PID/Program name.
Étape 3 : Utilisez ps -p <PID> -o pid,cmd pour avoir le chemin complet du binaire. Cette méthode vous permet de confirmer que MySQL (ou MariaDB) est bien celui qui écoute.

Trouver toutes les connexions SSH actives

Étape 1 : netstat -an | grep :22 | grep ESTABLISHED liste les connexions SSH établies.
Étape 2 : Pour obtenir les IP clients en nombre, enchaînez : netstat -an | grep :22 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr.

Lister uniquement les processus liés à Apache/Nginx

Étape 1 : sudo netstat -tulpn | grep :80 pour le port 80.
Étape 2 : Filtrez par le nom du programme : sudo netstat -tulpn | grep -E 'apache2|nginx'.

Surveiller l’ouverture/fermeture d’un port

Étape 1 : watch -n 1 "sudo netstat -tulpn | grep :8080" actualise la vue toutes les secondes.
Étape 2 : Remplacez la commande watch par un script si vous avez besoin d’historiser les changements.

Vérifier les connexions réseau actives

Tapez dans le terminal :

netstat -an
  • -a : affiche toutes les connexions et les ports en écoute.
  • -n : affiche les adresses et ports sous forme numérique, sans tenter de résoudre les noms.

Vous verrez une liste avec :

Proto  Recv-Q  Send-Q  Local Address    Foreign Address   State
TCP    0       0       192.168.1.10:22  192.168.1.5:50321 ESTABLISHED
  • Local Address : ton IP + port local.
  • Foreign Address : IP distante + port.
  • State : état de la connexion (ESTABLISHEDLISTENCLOSE_WAIT, etc.).

Vérifier quels ports sont à l’écoute

Pour savoir quels services écoutent sur votre machine :

netstat -tuln
  • -t : TCP
  • -u : UDP
  • -l : écoute seulement
  • -n : numérique

Exemple de sortie :

Proto Local Address   Foreign Address State
tcp   0.0.0.0:80      0.0.0.0:*       LISTEN
tcp   127.0.0.1:3306  0.0.0.0:*       LISTEN

Ici, ça montre que votre serveur web (port 80) et votre base MySQL (3306) sont bien actifs et prêts à recevoir des connexions.

Filtrer pour un port précis

Si vous voulez vérifier un port spécifique (ex. 80 pour un serveur web) :

netstat -an | grep 80

Surveiller les connexions en temps réel

Vous pouvez combiner avec watch pour suivre le trafic :

watch -n 2 "netstat -an"

Met à jour toutes les 2 secondes pour voir si de nouvelles connexions apparaissent.

Alternatives plus modernes

  • ss -tuln : similaire à netstat mais plus rapide et détaillé.
  • lsof -i : montre les processus associés à chaque connexion réseau.
  • nmap : scanner ton réseau pour vérifier les ports ouverts (externe ou interne).

Voici une commande complète que vous pouvez utiliser sur votre Mac pour avoir un aperçu clair des ports ouverts et des connexions actives sur votre réseau :

echo "=== Ports en écoute (services locaux) ===" && sudo lsof -i -P -n | grep LISTEN && \
echo "=== Connexions actives ===" && netstat -an | grep ESTABLISHED

Explications :

  1. sudo lsof -i -P -n | grep LISTEN
    • Liste tous les services locaux qui écoutent sur un port.
    • -P : affiche les numéros de port au lieu des noms.
    • -n : affiche les adresses IP au lieu des noms d’hôte.
    • LISTEN : ne montre que les ports ouverts pour les connexions entrantes.
  2. netstat -an | grep ESTABLISHED
    • Affiche toutes les connexions actives vers ou depuis ta machine.
    • Tu vois quelle IP est connectée à quel port et l’état de la connexion.

Ce guide a couvert les points essentiels pour maîtriser netstat et grep. Vous savez maintenant ce qu’est netstat, pourquoi il est utile, comment l’installer, et comment le combiner avec grep pour filtrer les sorties. Vous avez découvert les options principales, des cas pratiques pour dépanner un service, des scripts simples pour automatiser des vérifications, et des alternatives modernes comme ss. Enfin, vous avez des exercices concrets pour vous entraîner.

En résumé, netstat et grep forment une paire puissante pour l’analyse réseaunetstat donne la vision d’ensemble des sockets et des services et grep affine cette vue pour isoler l’information dont vous avez besoin.

Sur une machine avec 8 Go de RAM, ces outils fonctionnent confortablement pour la plupart des tâches d’administration et de dépannage. Pour des analyses massives, pensez à compléter avec des outils adaptés ou à automatiser le traitement par lots.

Live on Twitch