Outils pour utilisateurs

Outils du site


Panneau latéral

Mycélium

Documentation

Travaux

Membres

Wiki

documentation:technique:marionnet

Marionnet : Simulateur de réseau

Salut à tous! Je vous présente à travers cet article l'outil Marionnet, qui est un outil permettant de simuler un réseau complet dans votre ordinateur, en démarrant des machines, routeurs, branchant des câbles, des switchs, brefs, tout ce que vous voulez! On peut s'en servir pour imaginer une infrastructure réseau, simuler des pannes, apprendre le routage, l'adressage Ip, bref, plein de trucs…

Le vrai plus de cet outil: Il est sous licence GNU GPL!

Sur le principe technique, le projet est né en France, au sein de l'université Paris 13 où l'un des professeurs à créé un premier programme en ligne de commandes utilisant le langage Ocaml. il utilise les capacités UML du kernel pour créer des instances de machines virtuelles.

Pour toute l'histoire: je vous invite a regarder ceci: https://www.marionnet.org/site/index.php/en/project


Prérequis

Marionnet a besoin d'un système GNU/Linux (meme si on peut utiliser une machine virtuelle pour ca(voir plus bas), accompagné d'un processeur x86 ou x86_64 ( si vous ne connaissez de quel type est votre processeur, ne vous en faites pas: c'est l'un des deux), sur lequel vous avez un accès super-utilisateur (root). Une machine avec 512Mb de RAM devrait suffire. Et bien sûr vous aurez besoin d'une connexion internet.

Le script devrait fonctionner sur n'importe quelle distribution GNU/Linux, mais nous l'avons surtout essayé sur debian, ubuntu et gentoo; sur les distributions Debian, le script peu aussi installer certains paquets plutôt que de compiler depuis les sources (en demandant la permission avant bien sûr).

Installation

Pour installer marionnet, il y a la méthode dure et la méthode simple, et la machine virtuelle. On va commencer par la méthode simple.

Méthode simple

Avant de commencer, il faut savoir que l'installation risque de durer TRES longtemps. Non pas que l'opération soit complexe mais il semblerai que les serveurs qu'ils utilisent pour héberger les images servant à l'émulation soient particulièrement lents…

Et la, je vous propose un magnifique copier coller de la page d'installation:

https://www.marionnet.org/site/index.php/fr/documentation/installation

Vous pouvez exécuter le script http://www.marionnet.org/downloads/marionnet_from_scratch/marionnet_from_scratch/ qui télécharge toutes les ressources nécessaires, les compile et les installe sur votre machine. Ce script est simple d'utilisation et fonctionne avec la dernière version de Marionnet, c'est pourquoi nous recommandons cette méthode.

Méthode par machine virtuelle

https://www.marionnet.org/site/index.php/fr/documentation/demarrage-rapide

Vous voulez tester Marionnet ? Vous êtes utilisateur Windows ou Apple ? Ou vous êtes juste impatient ? Vous pouvez télécharger notre image Virtualbox.

Cette image est basée sur Debian 6 et l'utilisateur trouvera Marionnet déjà installé.

Voici les étapes pour utiliser cette image :

  Activer l'option vt-x/amd-v dans le bios de vôtre machine
  Avoir VirtualBox installé (Windows, Apple or Linux)
  Télécharger l'image
  Importer l'image dans VirtualBox : menu Fichier -> Importer une application virtuelle
  Démarrer la machine virtuelle et se connecter avec le compte "user" et le mot de passe "user"
  Cliquer sur l'icône Marionnet

C'est fait !

Si vous voulez vous connecter en tant que root, le mot de passe est… root.

Méthode complexe

Note de cacatoès : attention biloute, si tu fais ça, ça peut potentiellement te foutre un beau bordel dans ton système, avec risque de remplacer tes librairies par des plus récentes (et d'entraîner tout le reste du système). Aussi si tu retires le dépot du sources.list, tu te retrouves avec un paquet non géré par APT, ça encore c'est pas trop grave. Mais pour éviter cela, Debian propose le pinning, qui consiste à ajouter une ligne dans le fichier /etc/apt/preferences, où le but est d'assigner ici une priorité basse aux paquets émanant de Sid. Ainsi, il ne remplace les librairies par des plus récentes *que si* nécessaire.

Sur une machine GNU/Debian, vous pouvez installer le paquet (sid) “marionnet” (grâce à Lucas Nussbaum). Si vous êtes sur Wheezy stable, vous pouvez proceder comme suit:

Ajouter la ligne suivante dans /etc/apt/sources.list

  deb http://ftp.debian.org/debian/ sid main 

ensuite exécuter:

  aptitude update
  aptitude install marionnet/sid

et enfin supprimer la ligne concernant sid dans /etc/apt/sources.list

Attention, cette méthode installe uniquement l'application Marionnet, mais pas les machines virtuelles. Pour cela, vous devez completer l'installation en utilisant le script marionnet_from_scratch juste pour télécharger (option -O) les images de machine virtuelles et les noyaux qui vont avec :

  wget http: //www.marionnet.org/downloads/marionnet_from_scratch/marionnet_from_scratch 
  chmod +x marionnet_from_scratch
  PREFIX=$(marionn Une fois cela fait, il ne vous reste plus qu'a et --paths | awk '/share.marionnet.filesystem/ {print $3}') 
  PREFIX=${PREFIX%share/marionnet/filesystems}
  ./marionnet_from_scratch -O -p $PREFIX

Installation avancée

Il est possible sous ce logiciel de créer ses propres images et de les utiliser. Il est aussi possible de télécharger les images “Testing”

Marionnet fonctionne avec un fichier de conf généralement placé au à /usr/locala/etc/marionnet/marionnet.conf

Recommandations importantes

Attention: Marionnet est un logiciel assez sensible et il faut s'habituer aux choses suivantes:

  • Ne pas ENREGISTRER le projet avec des machines qui tournent
  • Ne pas mettre un NOM de projet avec des CARACTÈRES SPÉCIAUX
  • Si dans l'une de vos machines virtuelles vous n'arrivez pas a lancer un logiciel graphique comme Wireshark, il vous faudra redémarrer la machine physique. (ou vider si vous y avez accès à /tmp il semblerai que ce problème arrive parfois et qu'il soit dût à un fichier temporaire)
  • Ne pas éteindre la machine physique quand des machines virtuelles sont allumés.
  • Arrêter les machines avec les boutons de l'interface et PAS avec une commande shutdown

Comment le lancer (pas trop fort non plus)

Si vous avez installé ce magnifique logiciel, la commande pour le lancer est… marionnet ! Je vous recommande de le lancer dans un terminal que vous n'utiliserez pas par la suite car même lancé en arrière plan, il a tendance à écrire des choses dans la console! dou coup oubliez pas les redirections à la fin de la commande de la sortie standard et d'erreur vers le trou noir de l'ordinateur!

marionnet >/dev/null 2&>1 &

Utilisation générale

Une fois lancé, vous devriez avoir toute l'interface grisée sauf en haut. Marionnet fonctionne par Projet. C'est ce dernier qui va être enregistré. Cliquez donc sur Projet, puis nouveau. Choisissez l'endroit où vous voulez l'enregistrer. Il faut savoir qu'un petit projet prend moins d'un Mo mais que cela peut monter si vous mettez plein de machines, et que vous faite n'importe quoi avec!

Vous avez maintenant une interface vide et il est temps de faire comme dans l'exemple et d'ajouter des machines. Les différentes machines ajoutables sont des ordinateurs, des switchs, des hubs, et des routeurs. Pour ajouter l'un d'eux, cliquez dessus, puis ajouter. Au moment d'ajouter des machines vous pouvez choisir le nombre d'interface réseau, la quantité de mémoire vive, mais aussi l'image employée…

Maintenant que vous avez ajouté deux machines, et bien il faudrait peut-être les relier! ( sinon c'est pas rigolo )

Commençons par mettre un câble croisé entre les deux. Pour cela, comme pour les machines: On clique sur l’icône puis ajouter. On choisi entre quelle machine et quelle autre on le met et hop on a notre premier réseau!

Seulement voila, l'affichage est sûrement assez moche, il est même probable que vous ayez du texte sur les câbles ext… bref, les étiquettes ne sont pas au bon endroit. Pour déplacer tout le réseau n'essayez pas le click and drag ou même de toucher ce qu'il y a au centre de l'interface, tout ce passe sur le panneau de Droite. N'hésitez pas a toucher a tout jusqu'à ce que vous ayez quelque chose qui vous plaît!

Vous pouvez démarrer vos machines, configurer leurs interfaces (essayez d'apprendre la commande ip au passage) et regarder si elles ping. Si oui, c'est que votre réseau semble fonctionner!

Utilisation des routeurs

Les routeurs ont un OS spécifique qui permet d'utiliser la suite de logiciel de routage quagga. Cette dernière donne une interface en ligne de commande très proche de la norme employée par les routeurs CISCO et leur iOS.

Par contre l'instance n'est pas démarrée par défaut. Pour l'activer il faut paramétrer le routeur en cochant la case pour afficher un terminal, taper les commandes suivantes dans son terminal en tant que root:

/etc/init.d/quagga start

maintenant une instance serveur telnet est démarrée et on doit d'y connecter depuis machine elle même connectée au routeur. Plutôt que de monopoliser le terminal de la machine on va en ouvrir un autre. pour cela dans la machine démarrée (pas le routeur):

xterm &

et on va initialiser le telnet vers le routeur.

telnet *Ip du routeur* 2601

Dans cette environnement, pour vous en sortir malgré ce milieu hostile, vous aurez besoin d'avoir impérativement ces deux touches sur votre clavier: Tabulation et '?'

le point d’interrogation n’importe quand, pour voir ce que vous pouvez faire, et tabulation quand la ligne de commande contient déjà le début d’une commande (mot complet ou pas)

Quagga fonctionne avec deux niveaux de permissions. On est pour le moment en permissions standard et non en mode configuration. On peut lire mais pas modifier les paramètres.

Pour passer vers le mode d’administration:

enable

Il vous demande un mot de passe? c'est zebra .

il reste plus qu'a vous amuser. Quagga implémente les protocoles de routage suivants: OSPF (v2 & v3), RIP (v1, v2 & v3), BGP (v4) et IS-IS . (il y a de quoi expérimenter!)

Utilisation avancée

Marionnet est un outil puissant et a bien des capacités en réserve et des fonctionnalités bien cachées!

Partage de fichiers entre Hôte et machines Marionnet

Marionnet utilise le hostfs afin de monter un espace partagé, une porte entre l'hote et la machine virtuelle.

Le dossier est le suivant sur l'hote : /tmp/marionnet-XXXXX/nom_du_projet/hostfs/Y/ X et Y sont des nombre pris au hasard. Le meilleur moyen de les connaitre est d'utiliser le joker * au besoin

A l’intérieur, on trouve de base 2 fichiers. IL NE FAUT PAS Y TOUCHER! C'est (très) important!

et coté MV le dossier est dans /mnt/hostfs/

Mettre Internet dans les machines virtuelles

(Pour le moment non fonctionnel mais il s'agit en grande partie d'une recopie du site officiel.) Si vous avez une solution merci de corriger cette partie)

Déja, Pourquoi mettre internet dans les machines virtuelles?

Et bien dans un premier temps, pour avoir accès à apt-get! Et oui! Grâce à ça on peut facilement installer les paquets que l'on veut, et donc par exemple OpenVPN ou ansible!

dans un premier temps, il nous faut un bridge. Si vous en avez déja un sur votre machine, c'est bon, et passez à la suite, sinon voici comment faire:

Création et configuration d'un bridge

(ces commandes doivent être exécutées en tant que root)

creation du bridge:

  brctl addbr br0

ajout de votre interface principale au bridge

  brctl addif br0 *nom_de_votre_interface_principale*

Maintenant on démarre le bridge

  ifup br0
 

vérifiez que le bridge possède un accès vers l'exterieur

  ifconfig br0
 

Démarrage de marionnet avec accès au réseau

Dans un premier temps, vérifiez dans le fichier de config de marionnet que le bon bridge est indiqué. Ce fichier se trouve ici: /usr/local/etc/marionnet.conf A l'interieur, il y a une ligne MARIONNET_BRIDGE

Veillez à mettre le bon nom de votre bridge à droite de l'égalité.

Avant de lancer marionnet, nous allons lancer son démon réseau pour cela, on exécute :

sudo marionnet-daemon >/dev/null 2&>1 &

si votre ordinateur ne connait pas marionnet-daemon essayez avec l'autocompletion:

sudo marionnet-daemon.byte >/dev/null 2&>1 &

Une fois le daemon lancé, on va pouvoir lancer marionnet en lui même.

Pour ca, comme précédemment:

marionnet >/dev/null 2&>1 &

si tout s'est bien passé, si vous executez la commande suivante, il devrai y avoir 2 interfaces connectées au bridge: eth0 et un certain gwtappnnnn ou les nnnn de fin sont un nombre.

Lancer le deamon au lancement de l'ordinateur

Vous en avez marre de relancer le deamon a chaque fois et préfereriez que ce dernier se lance directement:

il suffit d'ajouter (une fois que vous êtes sûr que votre deamon fonctionne) au fichier /etc/rc.local

chmod a+rw /dev/net/tun
/usr/local/sbin/marionnet-daemon.byte &> /dev/null &

Enregistrez et redémarrez.

Si maintenant vous voulez faire du networking plus profond, vous pouvez le trouver comment faire ici:

https://www.marionnet.org/site/index.php/en/92-informations/289-how-to-bring-up-an-ethernet-bridge-for-marionnet

documentation/technique/marionnet.txt · Dernière modification: 2018/12/04 23:08 par cacatoes