Découvrez la Commande netstat

La commande netstat est un outil puissant pour surveiller et diagnostiquer le réseau sous Unix/Linux. Elle permet d’afficher diverses informations réseau, telles que les connexions, les tables de routage, et les statistiques d’interface. Cet article vous guidera à travers ses diverses options et comment l’utiliser dans vos scripts.

Utilisation de Base de netstat

Pour commencer, la commande de base netstat s’utilise simplement en tapant :

netstat

Cela affichera un résumé des connexions réseau actuelles, mais netstat peut faire beaucoup plus avec quelques options supplémentaires.

Options Courantes de netstat

Voici quelques-unes des options les plus couramment utilisées :

  • netstat -a : Affiche toutes les connexions réseau et les sockets d’écoute.
  netstat -a

Exemple :

  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  tcp        0      0 localhost:domain        *:*                     LISTEN
  udp        0      0 *:bootpc                *:*
  • netstat -t : Affiche uniquement les connexions TCP.
  netstat -t

Exemple :

  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  tcp        0      0 localhost:domain        *:*                     LISTEN
  tcp        0      0 192.168.1.5:ssh         192.168.1.10:54321      ESTABLISHED
  • netstat -u : Affiche uniquement les connexions UDP.
  netstat -u

Exemple :

  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  udp        0      0 *:bootpc                *:*
  udp        0      0 192.168.1.5:ntp         *:*
  • netstat -l : Affiche uniquement les sockets d’écoute.
  netstat -l

Exemple :

  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  tcp        0      0 localhost:domain        *:*                     LISTEN
  tcp        0      0 *:http                  *:*                     LISTEN
  udp        0      0 *:bootpc                *:*
  • netstat -s : Affiche les statistiques globales du réseau.
  netstat -s

Exemple :

  Ip:
      12014 total packets received
      0 forwarded
      0 incoming packets discarded
      12014 incoming packets delivered
  Tcp:
      234 active connections openings
      123 passive connection openings

Utilisation de netstat dans les Scripts

La commande netstat est également très utile dans les scripts shell pour surveiller et diagnostiquer les problèmes réseau. Voici un exemple simple de script utilisant netstat (attribuer les bons privilèges au script) :

#!/bin/bash

# Afficher les connexions TCP en cours
echo "Connexions TCP en cours :"
netstat -t

# Afficher les sockets d'écoute
echo "Sockets d'écoute :"
netstat -l

# Afficher les statistiques réseau globales
echo "Statistiques réseau :"
netstat -s

Exemple Pratique

Supposons que vous souhaitiez surveiller les connexions entrantes à un serveur web et vérifier les adresses IP qui se connectent le plus fréquemment. Voici un script qui utilise netstat pour accomplir cela (attribuer les bons privilèges au script) :

#!/bin/bash

# Afficher les connexions HTTP en cours
echo "Connexions HTTP en cours :"
netstat -an | grep ':80' | grep 'ESTABLISHED'

# Extraire les adresses IP et compter les occurrences
echo "Adresses IP des connexions HTTP :"
netstat -an | grep ':80' | grep 'ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

Explication :

  • netstat -an : Affiche toutes les connexions réseau avec des adresses numériques.
  • grep ':80' : Filtre les connexions sur le port 80 (HTTP).
  • grep 'ESTABLISHED' : Filtre les connexions établies.
  • awk '{print $5}' : Extrait la cinquième colonne (adresse IP distante).
  • cut -d: -f1 : Supprime les numéros de port pour ne conserver que les adresses IP.
  • sort | uniq -c | sort -nr : Trie les adresses IP, compte les occurrences, et les trie par ordre décroissant.

Exemple :

Connexions HTTP en cours :
tcp        0      0 192.168.1.5:80          192.168.1.10:54321       ESTABLISHED
tcp        0      0 192.168.1.5:80          192.168.1.11:54322       ESTABLISHED

Adresses IP des connexions HTTP :
2 192.168.1.10
1 192.168.1.11

Conclusion

La commande netstat est un outil essentiel pour surveiller et diagnostiquer le réseau sous Unix/Linux. En combinant ses différentes options et en l’intégrant dans des scripts, vous pouvez automatiser efficacement vos tâches de surveillance réseau. Essayez ces commandes et scripts pour mieux maîtriser votre environnement de travail ! 🚀