marionnet.org — a virtual network laboratory
Trois pingouins-marionnettes devant des fenêtres de Marionnet : un laboratoire de réseaux virtuel

Une salle de TP de réseaux sur un seul ordinateur

Marionnet est un logiciel libre qui reproduit un réseau local TCP/IP (Ethernet, et bientôt Wi-Fi) sur un hôte GNU/Linux. Les machines et les routeurs y sont des systèmes autonomes qui démarrent réellement, chacun sur son propre noyau (User Mode Linux) ; les hubs, les switchs et les câbles sont simulés par de petits programmes de l’hôte. On construit le réseau à la souris, puis on administre chaque machine en ligne de commande, comme en salle de TP.

Marionnet est d’abord un outil pédagogique : il sert à enseigner et à apprendre les réseaux et les protocoles TCP/IP. On peut certes y maquetter un réseau d’entreprise, mais ce n’est pas son but, et c’est pourquoi il n’imite pas les équipements du marché. Reproduire fidèlement les équipements d’un constructeur (Cisco, Juniper, Huawei…) ou un système propriétaire (Windows, macOS) demanderait en effet des licences et ferait, dans un cadre universitaire, la publicité de produits commerciaux ; ces systèmes exigeraient en outre une virtualisation complète, comme KVM, bien plus lente et gourmande. En s’en tenant à des systèmes GNU/Linux légers, Marionnet reste rapide et économe.

Démonstration de 2014 (10 min, sans son). L’interface a peu changé depuis ; le moteur, beaucoup.

Guide d’installation rapide Guide d’installation complet

Debian, Ubuntu, Fedora, Rocky Linux, AlmaLinux et openSUSE Leap 16 : par apt, dnf ou zypper, ou par l’installeur.

Marionnet renouvelé

En 2026, Marionnet s’installe depuis des dépôts apt et dnf signés, ou par un installeur. Il sort sur le réseau réel par un NAT bridge, IPv6 compris, ou par un LAN bridge ; il peut se piloter par script ou par une IA, et il propose un mode examen. Un noyau Linux 6.12 et une image Debian 13 s’ajoutent aux anciens.

Toutes les nouveautés

Des machines GNU/Linux

Chaque machine démarre son propre noyau Linux sur son propre système de fichiers. On y trouve donc ip, ping ou tcpdump, mais aussi des logiciels graphiques comme Wireshark ou un navigateur web, et on peut y lancer des services.

Câbler à la souris

La palette propose des hubs, des switchs, des routeurs et des câbles droits ou croisés. Comme en salle de TP, un câble se débranche et se rebranche ailleurs pendant que le réseau fonctionne.

Sortir sur Internet

Un NAT bridge ou un LAN bridge relie le réseau virtuel au réseau de l’hôte. Marionnet crée lui-même le pont nécessaire ; l’administrateur de l’hôte l’y autorise une seule fois, par une règle sudoers.

Pour enseigner

On peut injecter des défauts sur les ports des équipements, comme une perte de paquets. Le mode examen enregistre la séance de chaque étudiant, et un TP peut ensuite être rejoué puis noté par un script.

Piloter Marionnet par script, ou par une IA

Lancé avec l’option --control-socket, Marionnet ouvre sa fenêtre comme d’habitude, et la souris y reste utilisable. Mais il accepte en même temps des commandes écrites, envoyées depuis un terminal par mrnctl : créer des machines, les câbler, leur donner une adresse, les démarrer, lire ce qui s’y passe. Chaque commande se voit aussitôt dans la fenêtre, exactement comme si on avait fait le geste à la souris. Chaque réponse est une ligne JSON, si bien qu’un script peut conduire Marionnet, mais aussi un agent d’IA capable de lancer des commandes. L’enseignant n’a donc pas besoin de connaître ces commandes : l’IA les écrit, et lui suit le déroulement sur son écran. Pour guider l’IA, Marionnet fournit un skill, c’est-à-dire un guide écrit pour l’agent, qui l’aide à concevoir un TP avec l’enseignant, à le jouer, puis à noter les séances des étudiants, mode examen compris.

Pilotage et IA : les guides →

$ marionnet --control-socket /tmp/marionnet.sock &
$ mrnctl new /tmp/demo.mar
$ mrnctl add machine m1
$ mrnctl add machine m2
$ mrnctl add switch s1 --ports=4
$ mrnctl connect c1 m1:eth0 s1:port1
$ mrnctl connect c2 m2:eth0 s1:port2
$ mrnctl ifconfig-set m1 eth0 ipv4-address 10.0.0.1/24
$ mrnctl ifconfig-set m2 eth0 ipv4-address 10.0.0.2/24
$ mrnctl start-all
$ mrnctl exec m1 -- ping -c 3 10.0.0.2
Copie d’écran : à gauche, la fenêtre de Marionnet dessine deux machines reliées à un switch ; à droite, un terminal montre les commandes mrnctl qui ont construit ce réseau, l’ont démarré, puis ont fait pinguer m2 depuis m1.
Une séance pilotée : le terminal à droite, Marionnet à gauche.

Un projet universitaire depuis 2005

Marionnet est né au LIPN, le laboratoire d’informatique de l’université Paris 13 (aujourd’hui Sorbonne Paris Nord), pour enseigner les réseaux à l’IUT de Villetaneuse et à l’Institut Galilée. Il est écrit par Jean-Vincent Loddo et Luca Saiu. Utilisé en TP depuis 2007 dans ces deux composantes, il l’a été ensuite dans d’autres composantes et universités en France, et il a aussi servi à l’étranger, de l’Italie au Brésil et aux États-Unis. Son interface est aujourd’hui disponible en treize langues, l’anglais d’origine et douze traductions : des bénévoles avaient amorcé une dizaine de ces traductions, qui ont été complétées en 2026, et celles qui manquaient ont été ajoutées à cette occasion.

Le projet et l’équipe →

Dessin de Silviu Bârsanu : trois étudiants manipulent des pingouins-marionnettes au-dessus du mot marionnet
Dessin de Silviu Bârsanu (1965-2021)