Quelques outils open-source pour administrer son réseau

Date: 2/06/2008 | Catégories: Open-source,Reseau | Tags:

hhx1ymxs.jpgDe nos jours, l'administration d'un réseau nécessite une bonne connaissance des couches Ethernet (OSI n°2), IP (OSI n°3) et TCP/UDP (OSI n°4), mais pas seulement... En effet, l'adage qui dit que "l'on reconnaît un bon ouvrier à ces outils", est aussi vrai dans le domaine informatique. Je vous propose donc dans ce billet une liste non exhaustive de logiciels open-source pour s'acquitter, au mieux, de cette lourde tache.

J'écarterai de ce billet les outils de monitoring réseau tel que Nagios, Cacti, MRTG dont je parle assez souvent dans ce blog et je me focaliserai plutôt sur les logiciels "couteaux Suisse" permettant de "déboguer" une situation donnée:

  • ifconfig
  • netstat
  • dig
  • tcpdump
  • iftop
  • iperf
  • nmap
  • ... et les autres... (avec 1 backlink à gagner pour les propositions les plus intéressantes, voir en bas du billet)

ifconfig

Commençons par le commencement. ifconfig est une commande universelle pour obtenir les informations suivantes sur une les interfaces réseaux d'une machine:

  • Nom de l'interface réseau
    Exemple: eth0
  • Media (ou caractéristique de la liaison Ethernet)
    Exemple: 1000baseT (réseau Gigabit)
  • Adresse MAC (c'est à dire l'adresse Ethernet, ou l'adresse de niveau 2)
    Exemple: 00:17:f2:c5:43:0f
  • Adresse IP (ou adresse de niveau 3)
    Exemple: 172.30.2.131 (pour une adresse IPv4)
    Exemple: fe80::217:f2ff:fec6:410f (pour une adresse IPv6)
  • Masque de réseau
    Exemple: 0xffffff00 ou 255.255.255.0
  • Adresse de broadcast (adresse IP à utiliser pour parler à toutes les machines du réseau en même temps)
    Exemple: 172.30.2.255

On peut (selon les Operating System) trouver d'autres informations comme la taille du MTU (taille maximale des paquets Ethernet), la liste des médias supportés, le statu actuel de l'interface (active ou non).

L'utilisation standard se fait par la commande suivante:

# ifconfig -a

> Pour une liste de toutes les interfaces réseaux présentes sur la machine

# ifconfig interface

> Fournie les informations pour l'interface spécifiée en paramètre

 

netstat

Une fois l'adressage IP de votre réseau connu, la commande netstat va vous venir en aide pour déterminer comment les paquets IP vont être "routés".

Cette commande comporte un nombre d'options est très important (un petit coups de "man netstat" devrait vous en convaincre...).

Pour obtenir la liste des routes IP (IPv4 et IPv6), vous pouvez utiliser la commande suivante:

# netstat -nr

Le résultat se présente sous la forme d'une table. La première colonne représente la destination (c'est à dire le réseau à atteindre). La seconde est la passerelle IP (ou Gateway en Anglais) à utiliser. Les autres colonnes peuvent afficher le nom de l'interface réseau à utiliser, le nombre de fois que cette route a été emprunté...

Par exemple, la ligne suivante:

default 172.30.3.254 UGSc 52 12 en0

dit que la route par défaut est la passerelle 172.30.3.254 et qu'elle est accéssible via l'interface en0. En clair, si un paquet IP est à destination d'un réseau inconnu de la table de routage, le paquet sera envoyé à la machine d'adresse IPS 172.30.3.254 qui se chargera de le véhiculer à bon port.

Si votre réseau supporte le multicast, l'option -g devrait vous être utile en affichant les tables de routage multicast:

# netstat -g

 

/etc/resolv.conf & dig

La résolution de nom (c'est à dire le mécanisme permettant de faire la correspondance entre un nom de machine et une adresse IP, et inversement) est, sous les systèmes basés sur Unix, configuré dans le fichier /etc/resolv.conf. Une simple commande cat sur ce fichier va vous donner les informations suivantes:

  • Nom du domaine
    Exemple: monbodomaine.com
  • Adresses IP des serveurs DNS a utiliser (une adresse IP par serveur et par ligne)
    Exemple: 172.30.3.254

Voici donc le fichier resolv.conf correspondant :

# cat /etc/resolv.conf
domain monbodomaine.com
nameserver 172.30.3.254

Le compagnon idéal de ce fichier de configuration pour la validation DNS de votre réseau est l'utilitaire dig. Ce dernier, assez récent, est là pour prendre la relève de la bonne vieille commande nslookup.

Par exemple, pour connaître la liste des serveurs DNS d'un réseau (pas forcement le votre...) vous pouvez utiliser les options suivantes:

# dig monbodomaine.com ns
...
;; QUESTION SECTION:
;monbodomaine.com. IN NS
;; ANSWER SECTION:
monbodomaine.com. 172800 IN NS ns.monbodomaine.com.
;; ADDITIONAL SECTION:
monbodomaine.com. 172800 IN A 172.30.3.254
...

On pose donc la question au serveur DNS se trouvant dans le fichier /etc/resolv.conf (mais il est possible d'intéroger n'importe quel serveur DNS en utilisant l'option @adresse-ip-serveur-dns): quels sont les serveurs DNS (NS) du domaine monbodomaine.com. Le serveur répond: ns.monbodomaine.com et 172.30.3.254.

On peut aller plus loin en demandant par exemple la liste des serveur de messagerie d'un réseau:

# dig monbodomaine.com mx

 

tcpdump

Avec ces trois premiers utilitaires (ifconfig, netstat et dig), vous devez maintenant avoir une connaissance plus ou moins précise de la configuration de votre réseau. tcpdump permet de voir et de capturer les paquets qui y transitent. Pour cela, il est indispensable de ce mettre sur un noeud du réseau ou l'on va voir le maximum de chose. En effet avec "les réseaux switchés" actuels, une simple machine cliente ne voit que le trafic qui lui est destiné et celui de broadcast (ce qui n'est pas plus mal niveau sécurité...). Donc une fois ce noeud identifié (c'est souvent une machine faisant office de routeur central), il ne reste plus qu'a y lancer la commande tcpdump.

Cette première commande va lancer tcpdump sur 'linterface eth0 de votre machine et afficher la liste des paquets IP qu'elle voit passer, sans faire de résolution de nom (-n).

# tcpdump -i eth0 -n

Une des lignes résultant de cette commande pourra être:

16:54:49.465168 IP 172.30.2.131.50724 > 172.30.3.254.443

Le paquet d'adresse IP source 172.30.2.131 et de destination 172.30.3.254 sur le 443 (HTTPs) vient de transiter par l'interface eth0.

Pour avoir plus d'informations pour pouvez ajouter l'option -v. Le résultat sera alors le suivant:

16:56:17.033836 IP (tos 0x0, ttl 64, id 19599, offset 0, flags [DF], proto TCP (6), length 1190) 172.30.3.254.443 > 172.30.2.131.50728: P 7379:8517(1138) ack 838 win 1716 <nop,nop,timestamp 370920361 368797944>

Ce billet n'ayant pas pour but de vous former sur tcpdump, je vous conseille la lecture des liens suivants:

 

iftop

Iftop permet d'afficher à l'écran la liste des connexions IP générant les débits les plus importants. Ce logiciel est particulièrement utile quand il est lancé sur un routeur d'accès à Internet (ou routeur WAN), il est alors possible d'avoir en un coup d'oeil les flux les plus consommateurs de bande passante...

iftop.jpg

iperf

Iperf est un outil que j'utilise régulièrement pour tester mon réseau. Ce logiciel, de type client/serveur, permet de générer des paquets IP sur un réseau et permet simplement d'effectuer les taches suivantes entre deux points du réseau:

  • tester les règles d'un Firewall ou d'un routeur filtrant (bien qu'on puisse lui préférer nmap pour ce besoin)
  • calculer le débit moyen, minimum et maximum sur une période donnée
  • évaluation de la qualité de la liaison (latence, gigue et paquets perdus)

Par exemple pour faire un test de de charge TCP entre deux machines C et S, il suffit de lancer les commandes suivantes:

Sur la machine S d'adresse IP 192.168.0.1:

# iperf -s

Puis, sur la machine C:

# iperf -c 192.168.0.1

Le résultat sera affiché 10 secondes plus tard (c'est le temps par défaut mais il est configurable) et affichera le débit réel IP à l'instant t entre C et S.

Iperf permet de configurer assez finement les paquets IP utilisés pour ces tests, je vous propose, pour en apprendre d'avantage, de lire les billets suivants:

Il existe également une interface graphique écrite en Java pour facilité le lancement de Iperf (sans avoir à connaître toutes les options). Ce programme s'appelle XJperf.

En ce qui concerne le calcul de la gigue d'un réseau, j'utilise égalment un logiciel open-source maison nommé SJitter. Il fonctionne sur le même principe que Iperf (c'est à dire que c'est un client serveur). Vous pouvez le télécharger ici.

nmap

nmap est un outil fort utile pour tester quel ports sont ouverts et accessibles sur une machine donnée. Contrairement à iperf, nmap n'a besoin que d'une partie "cliente". Il utilise les messages (ICMP et autres) renvoyées par le réseau pour analyser l'état des ports TCP ou UDP.

Vous pouvez trouver ici une introduction à nmap.

et les autres...

Merci à Yann, Pec, Jahman, Borkmadjai, Dup, Nookie et Pischack qui ont posté un commentaire pour nous faire découvrir de nouveaux utilitaires. Comme convenu, voici une liste:

  • ping: c'est clairement l'outil de base pour tester un réseau (télément évident que je ne l'avais pas mentionné...;))
  • arping: une variante de ping mais qui fonctionne avec des trames ARP et non ICMP
  • traceroute: là aussi un grand classique pour savoir comment les paquets IP sont routés.
  • tcptraceroute: un bon complément à traceroute si le protocole ICMP est filtré par votre réseau. En effet, cet utilitaire se base sur le protocole TCP.
  • ettercap: un outil bien connu des hackers pour sniffer ce qui se passe sur un réseau.
  • jnettop: un clone de iftop
  • arpwatch: un très bon utilitaire pour découvrir les machines présentes sur un réseau en écoutant les requêtes ARP

J'imagine que vous utilisez d'autres outils open-source du même acabits ? si oui merci de poster un petit commentaire pour en en faire profiter la communauté ;).

  • Super ! J’étais justement entrain de me documenter la dessus !
    Dans la même lignée de tcpdump, il y a wireshark qui peut être utilisé avec pour visionner les paquets capturés et mieux les analyser

  • Poischack

    Traceroute, pour suivre le cheminement d’un paquet ip.
    nc, permet de gérer des clients/serveurs simple, pratique pour transférer rapidement des trucs.
    Voilà les deux qui me passent par la tete.

  • Super, je ne me lasse pas de découvrir des petits outils comme ceux la.

    Merci pour iftop qui est assez classe. J’utilisais nload pour voir la charge réseau avant, il n’est vraiment pas à la hauteur de iftop qui différentie les flux by host. Peut être qu’il n’est pas destiné à la même utilisation…

    Connais-tu htop? Il n’est pas orienté réseau mais un réseau est composé de machines 😉 . C’est un top amélioré qui permet un tas d’opérations sur les processus et qui est assez joli de surcroit.

    Kismet est assez joli aussi pour observer un réseau wifi.

    Ettercap est un sniffer/injecteur/logger. Il permet d’effectuer des attaques dont celle du « man in the middle » sur un réseau local. On peut l’utiliser aussi pour capter tout le traffic d’un poste vers la passerelle.

    Fail2ban est un daemon qui bannit les méchants attaquants éventuels au bout de x tentatives de connexion échouées. La conf est plutot simple.

    Fusesmb et sshfs sont des programmes utilisant la lib fuse pour vous faciliter la vie. Grace à elle, on peut monter des partitions en tant qu’utilisateur.
    fusesmb explore les alentours en smb tout seul. Il crée tout seul une arborescence de dossiers (liste des workgroup, liste des ordis…)
    sshfs permet de monter n’importe quel répertoire d’un système possédant un serveur ssh! pratique et rapide et surtout crypté!

    Tous ces softs sont dans les dépots de la plupart des distrib. have fun

  • Et sans oublier netcat 😉

    Un remplacant de nmap émerge mais que je n’ai pas encore testé PortBunny
    mais dont on peut avoir une présentation ici : http://www.haypocalc.com/blog/index.php/2008/03/04/133-scanneur-de-ports-portbunny

  • je rajouterais nettop et jnettop à la liste

  • Jahman

    Salut,

    L’outil arpwatch est assez utile aussi. Il regarde et log les requetes ARP pour voir quelles machines sont présentes dan un LAN.

    tcptraceroute pour faire des tracerousur du TCP, pratique si l’icmp est filtré.

    netwag et netwox: une collection d’outil réseau en francais (que demande le peuple)

    arping : permet de « pinguer » une @IP qui ne repondrait pas en ICMP

    DNS2TCP : permet de creer un tunnel TCP sur DNS (tres pratique pour les hotspot 😉

    PS: pour netstat, je rajouterais avec les options ‘netstat -tnlup », cela permet de connaitre les ports ouverts et avec l’option p affiche les processus associés (nécessite les droits root)

  • Moi je propose host.
    Outil peu connu qui permet, d’autoriser ou de bannir des plages IPs, des DNS, de changer le protocole ipv.
    Un petit tour dans /etc/host.deny pour banir des IPs, dans host.allow pour en autorisé. Cette outil permet de gérer les connections entrantes de manière simple, avec un éditeur de texte.

  • yann

    Tu oublies le ping aussi!

  • Pingback: Le grand YAKA ! » Blog Archive » links for 2008-06-03()

  • be_io

    Un fantastique utilitaire réseau est mtr (My TraceRoute), idéal pour suivre les paquets et déterminer les bottlenecks des routeurs

  • victor

    Bonjour,

    Tres interessant ces rappels de noms d’outils,
    N’oublierai t’on pas notre historique telnet qu’il nous permet de tester si le port distant n’est pas bloquer pas un firewall 😉
    Sinon j’ajouterai egalement netperf (equivalent de iperf ).

    Victor.

  • Pingback: Outils libres pour l'analyse de son réseau | BarbUk's Web log.()

  • Pingback: Tweets that mention Quelques outils open-source pour administrer son réseau -- Topsy.com()

  • Salut!

    Pour ce qui est du backlink (hoho 😉 ), je propose Nikto, qui permet vraiment de faire un audit complet et intéressant.

    Voilà. Merci pour l’initiative, j’aime ce genre de « tool-list »

    ++ Tixlegeek.

  • Pingback: Tester le débit de votre liaison réseau en fonction de la taille des paquets()

  • Pingback: Mesurer le débit dans son réseau avec NutTCP()

  • antoine

    Super idée de parge, merci pour tout ce puit d’infos 🙂 🙂

  • Fred

    J’ai testé iperf, j’ai un réseau Windows, j’aurai bien testé jperf. Je me suis rendu sur le site mais j’ai un peu de mal à comprendre comment cela fonctionne!?
    Quelqu’un pourrait il m’aidé.
    Merci.

  • Bakbasst

    Tous Merci pour votre travail.
    j’ai également pensé a PATHPING.
    à ma connaissance il n’existe que sur Windobe

    La commande pathping est un outil de traçage d’itinéraire qui associe les fonctions des commandes ping et tracert à des informations supplémentaires qu’aucun de ces deux outils ne fournit.

  • Philippe Petrinko

    Félicitations pour votre blog, et merci pour cet article.

    Petite question: Quelles sont les sources qui indiquent l’existance d’un paramètre [-i] comme vous l’écrivez? Je n’en trouve pas trace.

    • Philippe Petrinko

      hem existence, pas existance 😀

    • Philippe Petrinko

      Holà je fatigue. J’ai oublié de préciser que je parlais de
      # ifconfig -i interface

      je ne connais pas cette option [-i]

      • C’est une erreur, il ne faut pas de -i