Virtualisez Votre Réseau et Vos Outils avec GNS3 et WSL2

Découvrez comment virtualiser votre réseau avec GNS3 et WSL2. Apprenez à installer et configurer GNS3 Server, intégrer la GNS3 VM en mode remote, configurer une interface tap0 pour l'accès à Internet et publier vos labs sur une interface Web...

Introduction

GNS3 (Graphical Network Simulator) est un outil open-source incroyablement puissant et flexible qui permet de virtualiser des réseaux complexes. Grâce à GNS3, vous pouvez simuler des réseaux entiers comprenant des routeurs, des commutateurs, des pare-feux et même des serveurs virtuels. L’intégration avec WSL2 (Windows Subsystem for Linux 2) et les conteneurs Docker permet de créer des environnements de test et de développement hautement personnalisés et isolés, sans avoir besoin de matériel physique.

GNS3 est idéal pour apprendre à configurer des commutateurs et effectuer des tests courants comme l’activation de BGP, LLDP, Spanning Tree Protocol, et bien plus encore, sans risquer de causer des interruptions dans un environnement de production. C’est cette capacité à simuler et tester des configurations réseau en toute sécurité qui a attiré de nombreux utilisateurs vers GNS3.

Configuration sous WSL2

Étape 1 : Installation de GNS3 Server

  1. Mise à jour et mise à niveau du système

    sudo apt update
    sudo apt upgrade
    
  2. Ajout du dépôt GNS3

    sudo add-apt-repository ppa:gns3/ppa
    sudo apt update
    
  3. Installation de GNS3 Server

    sudo apt install gns3-server
    
  4. Configuration du port du serveur GNS3

    sudo nano /root/.config/GNS3/2.2/gns3_server.conf
    

    Modifiez le port par défaut de 3080 à 3081 et laissez le reste de la configuration telle qu’elle est :

    [Server]
    ...
    host = localhost
    port = 3081
    ...
    
  5. Démarrage du serveur GNS3

    gns3server
    
  6. Vérification des ports et de l’état du serveur

    sudo lsof -i -P -n | grep LISTEN
    

    Vous devriez voir une ligne indiquant que gns3server écoute sur le port 3081.

Étape 2 : Configuration de l’interface tap0 pour le réseau

  1. Création du script de configuration pour tap0

    sudo nano /usr/local/bin/setup-tap0.sh
    

    Ajoutez le contenu suivant :

    #!/bin/bash
    sudo ip tuntap add dev tap0 mode tap user $(whoami)
    sudo ip addr add 192.168.100.1/24 dev tap0
    sudo ip link set tap0 up
    
  2. Rendre le script exécutable

    sudo chmod +x /usr/local/bin/setup-tap0.sh
    
  3. Configuration du script pour se lancer au démarrage de WSL2

    sudo nano /etc/wsl.conf
    

    Ajoutez les lignes suivantes :

    [boot]
    systemd=true
    nestedVirtualization=true
    command="sudo /usr/local/bin/setup-tap0.sh"
    
  4. Activer le Routage et le NAT

    # Activer le routage IP
    sudo nano /etc/sysctl.conf
    # Décommentez ou ajoutez la ligne suivante
    net.ipv4.ip_forward=1
    # Appliquer les modifications
    sudo sysctl -p
    
    # Configurer le NAT avec iptables
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth0 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i tap0 -o eth0 -j ACCEPT
    
    # Enregistrer les règles iptables (optionnel)
    sudo apt-get install iptables-persistent
    sudo netfilter-persistent save
    

Étape 3 : Configurer systemd-resolved pour écouter sur tap0

  1. Modifier la configuration de systemd-resolved

    sudo nano /etc/systemd/resolved.conf
    

    Ajoutez ou modifiez les lignes suivantes :

    [Resolve]
    DNS=8.8.8.8 8.8.4.4
    DNSStubListener=no
    DNSStubListenerExtra=192.168.100.1
    
  2. Redémarrer systemd-resolved

    sudo systemctl restart systemd-resolved
    
  3. Vérifier l’état de systemd-resolved

    sudo netstat -tulnp | grep :53
    

Configuration du client GNS3 sur l’hôte Windows

Étape 4 : Ajouter une configuration remote pour WSL2

  1. Ouvrez le client GNS3 sur votre hôte Windows.
  2. Accédez à Édition > Préférences.
  3. Dans la section Serveur GNS3, ajoutez une nouvelle configuration remote :
    • Nom : wsl2
    • Hôte : localhost
    • Port : 3081
    • Mot de passe : Le mot de passe admin que vous pouvez retrouver dans /root/.config/GNS3/2.2/gns3_server.conf sur WSL2.
  4. Cliquez sur OK pour enregistrer les modifications.

L’intérêt d’utiliser WSL2 est d’éviter des conflits avec d’autres types d’hyperviseurs, surtout si WSL2 est déjà configuré sur le poste.

Étape 5 : Configuration de la GNS3 VM pour utiliser la configuration remote

  1. Ouvrez le client GNS3 sur votre hôte Windows.
  2. Accédez à Édition > Préférences.
  3. Sous GNS3 VM, sélectionnez l’option Remote et choisissez la configuration remote précédemment configurée (wsl2).
  4. La VM Name devrait être récupérée automatiquement depuis la configuration “Server” précédemment configurée.
  5. Appliquez les modifications et redémarrez le client GNS3 si nécessaire.

Configuration du composant “Cloud” pour accéder à Internet via tap0

Étape 6 : Configuration du composant “Cloud” dans GNS3

  1. Ajouter un composant “Cloud” dans GNS3

    • Faites glisser un composant “Cloud” depuis la barre d’outils vers votre projet.
  2. Configurer le composant “Cloud” pour utiliser tap0

    • Faites un clic droit sur le composant “Cloud” et sélectionnez Configurer.
    • Sous l’onglet Tap interface, ajoutez tap0.
    • Appliquez les modifications et fermez la fenêtre de configuration.

Étape 7 : Connecter un conteneur Docker Ubuntu au composant “Cloud”

  1. Ajouter un conteneur Docker Ubuntu

    • Faites glisser un conteneur Docker Ubuntu depuis la barre d’outils vers votre projet.
  2. Connecter le conteneur Docker Ubuntu au composant “Cloud”

    • Faites un clic droit sur le conteneur Docker Ubuntu et sélectionnez Connecter.
    • Choisissez le composant “Cloud” et connectez-les ensemble en cliquant sur Add a link.

Étape 8 : Configuration du conteneur Docker Ubuntu pour accéder à Internet

  1. Configurer l’adresse IP sur le conteneur Docker Ubuntu

    • Ouvrez une console sur le conteneur Docker Ubuntu.
    • Configurez l’adresse IP, la passerelle par défaut et le serveur DNS pour utiliser tap0 :
      sudo ip addr add 192.168.100.2/24 dev eth0
      sudo ip link set eth0 up
      sudo ip route add default via 192.168.100.1
      echo "nameserver 192.168.100.1" | sudo tee /etc/resolv.conf
      
  2. Tester la connectivité Internet

    • Utilisez ping pour vérifier la connectivité Internet :
      ping www.google.com
      

Cas d’utilisation

GNS3 est extrêmement flexible et peut être utilisé pour une multitude de scénarios de test et de développement. Voici quelques exemples concrets :

  1. Test de déploiement Ansible sur des commutateurs virtuels :

    • Utilisez GNS3 pour créer un réseau de commutateurs virtuels.
    • Déployez des configurations et des scripts Ansible pour automatiser la gestion des commutateurs.
  2. Configuration et test de pare-feux Palo Alto :

    • Intégrez les appliances virtuelles Palo Alto disponibles sur GNS3 Marketplace.
    • Testez et configurez des politiques de sécurité et des règles de pare-feu.
  3. Simulation de réseaux d’entreprise :

    • Créez des topologies réseau complexes pour simuler des environnements d’entreprise.
    • Testez la connectivité, la redondance et la résilience des réseaux.
  4. Test de nouvelles technologies et protocoles :

    • Expérimentez avec de nouvelles technologies et protocoles réseau avant de les déployer en production.
    • Utilisez les appliances disponibles sur GNS3 Marketplace pour simuler différents équipements.

Ressources supplémentaires

  • Appliances disponibles : Explorez les appliances disponibles sur GNS3 Marketplace pour enrichir vos simulations.
  • ISOs des appliances : Téléchargez les ISOs des appliances depuis upw.io pour les utiliser dans vos environnements GNS3.

Publier le lab sur une interface Web

GNS3 offre la possibilité de publier vos labs sur une interface Web, facilitant ainsi l’accès et la gestion à distance.

Configuration de l’interface Web

  1. Installer les dépendances nécessaires

    sudo apt install gns3-gui python3-pip
    pip3 install gns3-server[web-ui]
    
  2. Configurer GNS3 pour activer le Web UI

    sudo nano /root/.config/GNS3/2.2/gns3_server.conf
    

    Activez le Web UI :

    [Server]
    enable_web_ui = true
    web_ui_path = /usr/local/lib/python3.8/dist-packages/gns3server/web
    
  3. Redémarrer GNS3 Server

    gns3server
    
  4. Accéder au Web UI

    Une fois configuré, accédez à l’interface Web de GNS3 via votre navigateur à l’adresse suivante : http://<WSL2_IP>:3081.

    Vous pouvez maintenant gérer et interagir avec vos labs via l’interface Web. Pour plus de détails, vous pouvez consulter ce guide détaillé.

Conclusion

En suivant ce guide, vous serez en mesure d’installer et de configurer GNS3 Server sous WSL2, d’intégrer la GNS3 VM en mode remote, de configurer une interface tap0 pour accéder à Internet, et de publier vos labs sur une interface Web. GNS3 vous permet de tester et de simuler des réseaux complexes, offrant une plateforme flexible pour le développement et le test de configurations réseau. N’hésitez pas à explorer les appliances disponibles et à expérimenter différents scénarios pour tirer le meilleur parti de GNS3.

Ressources

Voici une liste exhaustive de ressources pour tirer le meilleur parti de GNS3 :

Spécificités de Docker sous GNS3

L’utilisation de Docker dans GNS3 présente des spécificités qui diffèrent de l’usage traditionnel de Docker. GNS3 est un outil de simulation de réseau qui intègre des conteneurs Docker pour émuler des dispositifs et services réseau. Contrairement aux déploiements Docker classiques, les conteneurs dans GNS3 doivent souvent être configurés pour interagir avec des topologies réseau complexes, ce qui peut nécessiter des configurations de réseau personnalisées, la mise en place de stockages persistants, et des points d’entrée spécifiques adaptés à la simulation réseau.

GNS3 propose une collection d’images Docker pré-construites, spécialement conçues pour l’émulation réseau, telles que des routeurs, des switches, et divers outils réseau. Ces images sont souvent optimisées pour fonctionner avec une charge minimale, s’intégrer à l’interface de GNS3, et supporter les protocoles et services utilisés dans les simulations réseau.

Pour plus d’informations, vous pouvez consulter la documentation sur le support de Docker dans GNS3 et explorer le répertoire Docker Hub de GNS3.

Documentation Officielle

  • Documentation GNS3 : Guide complet pour l’installation, la configuration et l’utilisation de GNS3.
  • FAQ GNS3 : Réponses aux questions fréquemment posées.

Communauté et Support

  • Forum GNS3 : Communauté active pour obtenir de l’aide, partager des idées et des solutions.
  • GNS3 Reddit : Discussions et support communautaire sur Reddit.

Tutoriels et Guides

Appliances et Images

  • GNS3 Marketplace : Explorez et téléchargez des appliances prêtes à l’emploi pour GNS3.
  • Upw.io : Téléchargez les ISOs des appliances pour les utiliser dans vos environnements GNS3.
  • Cisco VIRL : Cisco Virtual Internet Routing Lab pour des images Cisco.

Formation et Certifications

Blogs et Articles

  • GNS3 Blog : Articles officiels et annonces de GNS3.
  • NetworkLessons.com : Articles et leçons sur les réseaux, y compris l’utilisation de GNS3.
  • PacketLife.net : Ressources et articles sur les réseaux.

Dépôts GitHub

Réseaux Sociaux

En utilisant ces ressources, vous pourrez maximiser votre expérience avec GNS3 et développer vos compétences en réseau de manière significative. N’hésitez pas à explorer ces liens et à participer activement à la communauté GNS3 pour rester à jour avec les dernières avancées et meilleures pratiques.