La commande netstat (network statistics) affiche les connexions réseau actives, les ports en écoute, la table de routage et les statistiques par protocole. C’est l’outil de diagnostic indispensable pour savoir quel programme parle à quel serveur, repérer un port mal fermé ou un processus suspect. Disponible sous Windows, Linux et macOS. Sous Linux moderne, elle est remplacée par ss, plus rapide mais avec une syntaxe similaire.
Qu’est-ce que netstat ?
netstat liste les sockets ouvertes par le système : connexions TCP établies, ports UDP en attente, connexions sortantes en cours. Pour chaque connexion, vous voyez l’adresse locale (IP + port), l’adresse distante (IP + port), l’état (ESTABLISHED, LISTEN, TIME_WAIT…) et souvent le PID du processus concerné.
Elle est complémentaire de ipconfig / ifconfig (qui montrent les interfaces) et de ping (qui teste la connectivité). netstat montre, lui, les conversations en cours.
Syntaxe de base et options principales
netstat— connexions actives (TCP par défaut).netstat -a— toutes les connexions et tous les ports en écoute.netstat -n— pas de résolution DNS (affiche IP au lieu de noms, plus rapide).netstat -t— TCP uniquement (Linux).netstat -u— UDP uniquement (Linux).netstat -l— uniquement les ports en LISTEN (Linux).netstat -p— afficher le PID/process (Linux) ou le binaire (Windows :-b, nécessite admin).netstat -r— table de routage (équivalentroute printouip route).netstat -s— statistiques par protocole.netstat -i— statistiques par interface (Linux).
Les options se combinent. Commande la plus utile au quotidien : netstat -ano (Windows) ou netstat -tunlp (Linux, admin).
Lire la sortie de netstat
Proto Adresse locale Adresse distante État PID TCP 192.168.1.42:54231 142.250.179.110:443 ESTABLISHED 3456 TCP 192.168.1.42:54232 17.253.144.10:5223 ESTABLISHED 892 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234 TCP [::]:443 [::]:0 LISTENING 1234 UDP 192.168.1.42:53 *:* 5678
- Proto : TCP, UDP, TCP6, UDP6.
- Adresse locale : votre IP + port utilisé.
- Adresse distante : IP + port du serveur en face.
- État : ESTABLISHED (connexion active), LISTENING (port en attente d’une connexion entrante), TIME_WAIT (connexion fermée, attente cleanup), CLOSE_WAIT, SYN_SENT, etc.
- PID : identifiant du processus qui détient cette connexion. Avec
tasklist(Windows) oups -p PID(Linux), vous retrouvez le programme.
États TCP : que veut dire ESTABLISHED, TIME_WAIT…
- LISTEN / LISTENING : un service attend des connexions sur ce port (ex. serveur web sur 80, SSH sur 22).
- ESTABLISHED : la connexion est active et échange des données.
- SYN_SENT : votre PC tente d’ouvrir une connexion, attend la réponse SYN-ACK.
- SYN_RECV : connexion en cours d’établissement (rare côté client).
- FIN_WAIT / CLOSE_WAIT : connexion en cours de fermeture.
- TIME_WAIT : connexion fermée, le système attend que tous les paquets soient traités (typiquement 2 minutes). Normal en grande quantité sur un serveur web actif.
- CLOSED : connexion fermée.
Cas d’usage pratiques
- Voir quel programme utilise le port 443 (Windows admin) :
netstat -ano | findstr :443, lire le PID, puistasklist /FI "PID eq 1234". - Linux équivalent :
sudo netstat -tulnp | grep :443ousudo ss -tulnp | grep :443. - Lister tous les ports en écoute :
netstat -an | grep LISTEN(Linux/macOS) ounetstat -an | findstr LISTENING(Windows). - Auditer ses connexions sortantes :
netstat -an, repérer les IP étrangères et les croiser avec l’outil IP siteweb ou whois. - Détecter une connexion suspecte : combiné avec localiser une IP, on identifie si une session pointe vers un pays inattendu.
- Voir la table de routage :
netstat -rndonne les routes (où passe chaque réseau). Voir NAT et réseau.
ss : la version moderne sous Linux
Sur Linux récent, ss (socket statistics) remplace netstat avec un gain de performance significatif sur les systèmes très chargés. La syntaxe est proche :
ss -tuln— équivalentnetstat -tuln.ss -tunlp— avec process info.ss -s— statistiques résumées.ss state established— filtrer par état (syntaxe plus puissante que netstat).
Sécurité et audit
netstat est une première étape utile pour un audit de sécurité local :
- Identifier les services exposés involontairement (un port LISTEN sur 0.0.0.0 = accessible de tout le LAN, voire d’internet si NAT mal configuré).
- Repérer des connexions sortantes vers des IP suspectes (malware, exfiltration).
- Ne remplace pas un scan externe avec nmap, qui voit ce qu’un attaquant verrait depuis l’extérieur.
- Pour bloquer les connexions indésirables, utiliser le pare-feu Windows ou iptables/nftables sous Linux. fail2ban ajoute du dynamique sur les services SSH/HTTP.
FAQ : netstat
netstat est-elle obsolète ?
Sous Linux, oui officiellement (deprecated au profit de ss). Sous Windows et macOS, elle est maintenue. Pour de nouveaux scripts Linux, préférer ss. Pour un usage interactif quotidien, netstat reste plus universelle.
Pourquoi je vois plein de TIME_WAIT, c’est grave ?
Non, c’est normal après une session web active : chaque requête HTTP fermée laisse une socket en TIME_WAIT ~2 minutes pour s’assurer qu’aucun paquet retardataire ne soit traité. Sur un serveur très chargé, on peut tuner le noyau (net.ipv4.tcp_tw_reuse) mais c’est rare en usage particulier.
Comment identifier le programme derrière un PID ?
Windows admin : tasklist /FI "PID eq 1234". Linux : ps -p 1234 ou cat /proc/1234/cmdline. Le PID seul ne suffit pas — il faut souvent le ligne de commande complète.
netstat affiche-t-elle mon IP publique ?
Pas directement. Elle montre les IP locales de vos cartes (côté « Adresse locale ») et les IP distantes des serveurs (côté « Adresse distante »). Si vous utilisez un VPN, vous verrez l’IP du tunnel VPN. Pour votre IP publique, utiliser Mon adresse IP.
netstat -b ne fonctionne pas, pourquoi ?
L’option -b (Windows) qui affiche le binaire détenteur d’une socket nécessite des droits administrateur. Lancer l’invite de commande en admin (clic droit > Exécuter en tant qu’administrateur) résout le problème.
Outils complémentaires : ping, traceroute, nmap, nslookup. Voir encyclopédie IP.