10 logiciels libres pour analyser son réseau

Date: 21/01/2010 | Catégories: Open-source,Reseau | Tags: ,,,,

Nous allons dans ce billet étudier quelques outils réseaux open-source qui peuvent être utiles pour analyser un trafic sur un réseau IP (la liste est loin d'être exhaustive mais il est difficile de l'être vu le sujet). Cette analyse peut avoir pour but de caractériser un flux et notamment son débit, les délais de transit/gigue et les éventuelles corruptions de paquets.

Avant d'aller plus loin dans la description des ces outils, il est important de bien comprendre où l'analyse doit se faire. Les réseaux deviennent de plus en plus complexes et la détermination d'un point de capture cohérent est une première étape indispensable. En effet, si on se positionne à un endroit non approprié, on peut passer à coté de noeuds de congestions qui vont perturber les mesures.

Dans une architecture réseau classique composée d'un LAN (là ou se trouve vos postes clients), d'une liaison WAN (par exemple ADSL) et d'une plate-forme de service (là ou se trouve les serveurs, par exemple chez un hébergeur spécialisée), l'analyse peut se faire de deux manière différentes:

  • soit en extrémité de réseau,  en analysant le trafic en sortie du LAN (avant le goulot d'étranglement que représente la liaison WAN),
  • soit au coeur du réseau, en analysant avec des sondes le trafic sur toutes la chaine (en sortie du LAN et coté plate_forme de service). Plus le nombre de points d'analyses est important, plus l'analyse sera fine. Elle nécessite cependant l'installation de sondes sur des équipements que l'on n'administre pas forcement.

Analyse en extrémité de réseau

Nous avons vu que pour que cette méthode soit pertinente le choix du point d'analyse est important. Dans notre architecture, on peut soit la faire sur un PC mis en coupure entre le LAN et le routeur WAN (il faut que le PC soit configuré en mode bridge pour laisser passer tout les flux), soit directement sur le routeur si il tourne sur un système d'exploitation "libre" (GNU/Linux, BSD...).

tcpdump / wireshark / tshark

Ce sont des outils de capture et d'analyse d'une interface réseau. Le principe est simple: on lance le logiciel qui va capturer tout ce qui passe sur une interface (ou une sélection si on utilise un système de filtrage à la source). Ensuite, le résultat de la capture pourra être archivé (par exemple dans un fichier  de type libpcap) puis analysé.

tcpdump est la commande la plus standard que l'on peut trouver dans n'importe quel système d'exploitation digne de ce nom. Un tutoriel sur le sujet peut être trouvé ici.

WireShark (nouveau nom d'Ethereal) propose une interface graphique permettant de guider l'utilisateur dans les étapes de capture, filtrage et analyse. Issue d'une communauté très active, il propose également des plugins permettant d'analyser finement des flux spécifique (SIP / RTP / H.323 ...). On peut facilement avoir des rapports graphiques ou textuel (distribution IP, bande passante, couche protocolaire...). Un tutoriel sur ce logiciel est disponible ici.

Si on ne se trouve pas dans un environnement graphique, le projet Wireshark propose un outil en ligne de commande qui s'appelle tshark et qui permet d'avoir les mêmes fonctions que tcpdump avec une présentation légèrement différente. La documentation est disponible ici (promis je fais un billet sur le sujet quand j'ai un peu de temps)...

Quelques commandes pour capturer/filtrer un trafic réseau

Capturer tout le trafic transitant par l'interface eth0 (-i) et la sauvegarde (-w) dans le fichier /tmp/captureXX.cap. Il faut faire un CTRL-C pour arrêter la capture:

Analyse en temps réel des paquets SIP (il existe aussi des options pour RTP, SMB, H.225...) et affichage des statistiques en fin de capture (après le CTRL-C):

bmon / ifstat / vnstat / ntop / darkstat

Bmon est un logiciel permettant via un terminal texte (pas besoin d'interface graphique) de surveiller en temps réel le débit transitant sur ses interfaces réseaux. Une fois lancé, il suffit de se déplacer avec les touches haut et bas pour sélectionner l'interface à surveiller puis de cliquer sur les touche g et d pour afficher le graphique de charge et le détail. Un bon outil pour voir en un clin d'oeil le débit de ses liaisons Internet:

Dans le même genre, on peut également citer ifstat, il est assez basique mais efficace. Une fois lancé avec l'option (-b), il affiche toutes les interfaces (ou une interface sélectionnée avec l'option -i) et le débit instantané (avec 1 nouvelle ligne par seconde, ce temps étant paramétrable). Par exemple pour afficher le débit de l'interface eth0 toutes les 5 secondes en Kbps, il faut saisir la commande (ifstat -i eth0 -b 5):

Vnstat est également un outil permettant de surveiller la bande passante. En plus des fonctions de supervision temps réel que l'on peut trouver dans bmon et ifstat, il propose de stocker les informations dans une base de données, ce qui lui permet d'afficher des rapports et des graphes. Pour une description plus précise de Vnstat suivi d'une procédure d'installation et d'utilisation, vous pouvez lire ce billet.

NTop a été longtemps un logiciel que j'installai systématiquement sur mes routeurs IP (FreeBSD ou GNU/Linux). Malheureusement, des problèmes de performances et de sécurités m'ont fait petit à petit abandonner ce projet. Les dernières version (>3.0) semblent corriger ces défaut de jeunesse et NTop revient sur le devant de la scène avec des fonctionnalités sympathiques comme le fait d'intégrer un collecteur NetFlow. De plus la communauté Ntop semble très active, comme on peut le voir sur leur site et blog. Vous pouvez consulter ce (vieux) billet sur Ntop (j'en rédige un nouveau si il répond de nouveau à mes attentes).

Darkstat est le petit dernier, découvert grâce à un des blogs de Planet-Libre. Il permet comme Ntop d'accéder aux données récoltées par une interface Web. Il se focalise cependant sur les informations de type bande passante. Lors de mes tests sur une machien Ubuntu 9.10, j'ai constaté un accès trés lent à l'interface Web (sudo darkstat -i eth0 -p 666). A suivre donc.

Analyse en coeur de réseau

Dans ce chapitre, nous allons aborder de manière très superficielle (vous pouvez consulter ce billet sur Netflow pour un peu plus de détails). Le but est de réaliser des mesures sur plusieurs point de la chaine réseau. Pour cela on doit mettre en place des sondes sur les équipements. Ces sondes remontes les informations sur un collecteur. Afin on analyse les données collectées.

Netflow

Deux protocoles sont disponibles. Le plus connu est Netflow (de la société Cisco). Bien que propriétaire, il est devenu un standard sur le marché. Il a donc été repris (par rétro-ingénierie) et adapté à d'autres environnements dont GNU/Linux et BSD.

Un autre protocole compatible avec Netflow a vu le jour: IPFix de l'IETF. Il y a malheureusement peut de projet qui exploite ce protocole. On peut citer le projet Argus.

Sous GNU/Linux et BSD, j'utilise l'implémentation libre NFDump (disponible ici) qui permet de collecter les données et de les analyser, grâce à des scripts, en lignes de commandes. Il existe également des sondes Netflow libres: fProbe ou nProbe (ce dernier est payant, environ 99€, voir le site du projet).

NFdump

Pour revenir à Netflow, il permet de récupérer les mesures suivantes:

  • Durée du flux
  • Protocole réseau (TCP/UDP/ICMP…)
  • Adresses source et destination
  • Ports source et destination
  • Flags TCP
  • Champs Tos (DSCP)
  • Nombre de paquets
  • Taille en octets
  • Nombre de paquets par seconde
  • Débit en bit par seconde
  • Taille en octets par paquets
  • Nombre de flux

Conclusion

Cette petite introduction à l'art de l'analyse réseau nous a permis de voir que les logiciels libres sont bien présents sur ce secteur. J'ai sûrement oublié pas mal d'outils que vous, lecteurs, utilisez tous les jours. Je vous propose donc de laisser un petit commentaire ci-dessous avec votre liste personnelle.