Simuler des problèmes réseau avec Clumsy
I. Présentation de Clumsy
Les pannes réseau sont parfois difficiles à prévoir et leurs effets également. Comment savoir comment réagiront vos systèmes, vos applications, vos serveurs en cas de problème ou de dysfonctionnement du réseau ? La pire des choses est bien entendu d'attendre que cela arrive pour le savoir, c'est pourquoi il est utile de connaître Clumsy, un outil qui tourne sous Windows et qui permet de simuler des dysfonctionnements réseau.
II. Télécharger et lancer Clumsy
La première chose à faire est bien entendu de récupérer cet outil sur son site officiel : http://jagt.github.io/clumsy/download.html
Selon votre système, vous pourrez récupérer Clumsy pour Windows 32 ou 64 bits. Une fois cela fait, il suffira de le lancer en cliquant sur l'exécutable. Nous aurons alors cette fenêtre :
III. Utilisation de Clumsy
Comme vous pourrez le voir, Clumsy propose de nombreuses possibilités. On pourra simuler :
- du lag qui est opéré en retardant l'arrivée des paquets
- des pertes de paquet au hasard (Drop)
- un engorgement du réseau (Throttle) qui a pour effet de bloquer le trafic pendant une courte période pour ensuite tout envoyer d'un coup
- une duplication de certains paquets
- un out of order, qui a un changement dans l'ordre d'arrivée des paquets
- un Tamper, qui consiste en l’altération du contenu de certains paquets.
Chacun de ces paramètres peut recevoir un "dosage" plus ou moins accentué une fois qu'il est sélectionné. Également, on pourra utiliser plusieurs de ces dysfonctionnements en même temps :
Pour lancer un dysfonctionnement du réseau, il suffit de cocher les dysfonctionnements que nous souhaitons voir actifs, arranger les valeurs chiffrées comme on le souhaite, puis cliquer sur "Start". Voici en exemple un simple ping que j'ai effectué pendant que je simulais la perte de 50% de mes paquets avec Clumsy :
Une chose dont je ne vous ai pas encore parlé, les Presets. Ceux-ci consistent en des filtres qui permettent, par exemple, de cibler une interface, un sens de flux (entrée, sortie) ou un protocole (comme IPv4 ou IPv6). Certains sont présents par défaut, vous pourrez les trouver dans le dossier où se situe l'exécutable, qui contient également un fichier "config.txt" :
# loopback packets can only be filtered using 'outbound'. localhost ipv4 all: outbound and ip.DstAddr >= 127.0.0.1 and ip.DstAddr <= 127.255.255.255 localhost ipv4 tcp: tcp and outbound and ip.DstAddr >= 127.0.0.1 and ip.DstAddr <= 127.255.255.255 localhost ipv4 udp: udp and outbound and ip.DstAddr >= 127.0.0.1 and ip.DstAddr <= 127.255.255.255 # more general all sending packets: outbound all receiving packets: inbound
Tout cela est possible par l'utilisation de la librairie "WinDivert", un système similaire à NetFilter sous Linux. Voici la documentation du projet : WinDivert
Vous pourrez trouver, au chapitre 7, des indications relatives aux filtres vus plus haut.
C’est vraiment interressant !!!
cet utilitaire a l’air très intéressant comme laboratoire.