NetDemo : Un réseau virtuel

par Joseph Razik, le 2022-01-14

NetDemo est un ensemble de machines virtuelles sous VirtualBox qui permet de simuler un réseau complet. Le réseau est actuellement composé de 4 machines virtuelles : client, server, internalnet et externalnet. L'architecture du réseau est la suivante:

plan du reseau


Pour pouvoir expérimenter sans crainte, nous ne travaillerons pas sur les originaux des machines virtuelles mais sur des clones. Par défaut, les « originaux » (master) des machines virtuelles se trouvent dans /home/partage/I42/VBOX_I42/ et les copies de travail (clone) dans /scratch/${USER}/vbox/ (pour travailler chez vous le plus simple est de créer ces répertoires, USER étant login). En cas de problèmes, il suffit de supprimer la copie. Cela se fait soit avec le script ou soit directement avec virtualbox (pensez à supprimer les médias dans le gestionnaire) ; puis en supprimant le fichier .vdi du répertoire travail.

Pour installer et faire fonctionner le réseau virtuel, des images (.vdi) des machines sont donc fournies, ainsi qu'un script permettant la création et la suppression des configurations des machines et des réseaux :

./managevirtualmachines.sh
usage : ./managevirtualmachines.sh [install|start|stop|remove|info|clone|create] all|[client|internalnet|server|externalnet]+

Note

Lancer virtualbox et vérifier dans Fichier>Paramètres qu'il existe un réseau privé hôte qui s'appelle vboxnet0, sinon l'ajouter.

1   Mise en place rapide

Dans les salles de TP, il n'y a rien à modifier. Les modifications indiquées ici sont utiles si vous vous voulez utiliser les images dans d'autres répertoires que ceux par défaut.

Editer le script précédent pour fixer les paramètres de base : « répertoire des images, mémoire allouée aux machines et usage de VT ».

Deux utilisations sont possibles soit en utilisant directement les .vdi, soit en les clonant d'abord pour garder une copie fonctionnelle.

Dans les salles de TP, les images d'origines sont dans le répertoire local à chaque machine /home/partage/I42/VBOX_I42/, les clones pour chaque utilisateur sont dans /scratch/${USER}/vbox/ (préfixée par ${USER}).

Vous pouvez exécuter l'interface graphique de VirtualBox en parallèle.

1.1   Installer les machines

./managevirtualmachines.sh install all

Cette commande va effectuer deux principales opérations: le clonage des machines virtuelles de départ et leur configuration.

1.2   Démarrer les machines

Les machines peuvent être démarrées depuis l'interface (d'abord la machine internalnet qui héberge les serveurs DHCP et DNS).

La commande suivante démarre toutes les machines virtuelles dans le bon ordre:

./managevirtualmachines.sh start all

1.3   Stopper les machines

Toutes la machines peuvent être stoppées proprement via l'ACPI avec la commande :

./managevirtualmachines.sh stop all

1.4   Supprimer les machines

La commande suivante supprime les configurations et les .vdi de travail.

./managevirtualmachines.sh remove all

1.5   Cloner les machines

./managevirtualmachines.sh clone all

Ceci permet de créer un clone de chacune des machines pour le réseau virtuel que vous allez utiliser pour travailler, sans modifier le réseau d'origine. Cette opération est appelée par install.

1.6   Enregistrer et paramétrer les machines dans VirtualBox

Attention, vérifier dans l'interface graphique qu'il ne reste pas de configuration de machines avec le même nom ou de disques déclarés dans le gestionnaire de media.

./managevirtualmachines.sh create all

Cette opération est appelée par install.

2   Informations communes

Toutes les machines possèdent que deux comptes root/root et user/user, pas le votre. Toutes les machines et l'hôte sont configurés pour avoir une carte réseau sur un réseau commun : 192.168.56.0. Il est donc possible de se connecter directement depuis l'hôte vers les machines et inversement (vérifier avant l'adresse IP de la destination avec ip ou ifconfig, elle est attribuée par un DHCP propre à VirtualBox). Il est donc possible d'exécuter wireshark sur chaque machine virtuelle en exportant l'affichage sur l'hôte :

ssh -X <ip de la cible> wireshark

En cas de problème d'affichage vous pouvez faire un xhost + (Attention !) avant sur l'hôte.

3   Les machines

3.1   Client

La machine client est un client classique sous Linux TinyCore avec les programmes clients de base telnet, cftp, ssh, lynx pour http, mailx, fetchmail et mutt pour le mail. Elle est auto configurée par internalnet.

3.2   Internalnet

La machine internalnet sert de serveur DHCP, DNS, de passerelles et de firewall (iptables) pour le réseau virtuel local appelé local.demo (celui de client). La machine possède également un serveur ssh.

3.3   Server

La machine server fait fonctionner différents serveurs de services pour le réseau local virtuel:

  • un serveur smtp (postfix)

  • un serveur imap et un serveur pop3 (dovecot)

    • l'utilisateur user/user peut lire ses mails.
  • un serveur web (nginx)

    • une simple page d'accueil
  • un serveur ssh (openssh)

  • un serveur telnet (telnetd)

  • un serveur ftp (bftpd)

3.4   Externalnet

La machine externalnet assure le NAT vers l'extérieur.