Table of Contents
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
-
Mise à jour et mise à niveau du système
sudo apt update sudo apt upgrade
-
Ajout du dépôt GNS3
sudo add-apt-repository ppa:gns3/ppa sudo apt update
-
Installation de GNS3 Server
sudo apt install gns3-server
-
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 ...
-
Démarrage du serveur GNS3
gns3server
-
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
-
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
-
Rendre le script exécutable
sudo chmod +x /usr/local/bin/setup-tap0.sh
-
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"
-
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
-
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
-
Redémarrer systemd-resolved
sudo systemctl restart systemd-resolved
-
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
- Ouvrez le client GNS3 sur votre hôte Windows.
- Accédez à Édition > Préférences.
- 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.
- Nom :
- 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
- Ouvrez le client GNS3 sur votre hôte Windows.
- Accédez à Édition > Préférences.
- Sous GNS3 VM, sélectionnez l’option
Remote
et choisissez la configuration remote précédemment configurée (wsl2
). - La VM Name devrait être récupérée automatiquement depuis la configuration “Server” précédemment configurée.
- 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
-
Ajouter un composant “Cloud” dans GNS3
- Faites glisser un composant “Cloud” depuis la barre d’outils vers votre projet.
-
Configurer le composant “Cloud” pour utiliser tap0
- Faites un clic droit sur le composant “Cloud” et sélectionnez
Configurer
. - Sous l’onglet
Tap interface
, ajouteztap0
. - Appliquez les modifications et fermez la fenêtre de configuration.
- Faites un clic droit sur le composant “Cloud” et sélectionnez
Étape 7 : Connecter un conteneur Docker Ubuntu au composant “Cloud”
-
Ajouter un conteneur Docker Ubuntu
- Faites glisser un conteneur Docker Ubuntu depuis la barre d’outils vers votre projet.
-
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
.
- Faites un clic droit sur le conteneur Docker Ubuntu et sélectionnez
Étape 8 : Configuration du conteneur Docker Ubuntu pour accéder à Internet
-
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
-
Tester la connectivité Internet
- Utilisez
ping
pour vérifier la connectivité Internet :ping www.google.com
- Utilisez
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 :
-
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.
-
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.
-
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.
-
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
-
Installer les dépendances nécessaires
sudo apt install gns3-gui python3-pip pip3 install gns3-server[web-ui]
-
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
-
Redémarrer GNS3 Server
gns3server
-
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
- GNS3 YouTube Channel : Tutoriels vidéo officiels et présentations.
- How-to Guides : Guides pratiques pour des configurations spécifiques et des cas d’utilisation.
- David Bombal YouTube Channel : Tutoriels et cours de réseau utilisant GNS3.
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
- GNS3 Academy : Cours en ligne et formation officielle sur GNS3.
- Cisco Networking Academy : Formation en ligne et certifications Cisco.
- Udemy : Cours en ligne sur GNS3 disponibles sur Udemy.
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
- GNS3 Repository : Code source du client GNS3.
- GNS3 Server Repository : Code source du serveur GNS3.
- GNS3 Appliance Templates : Modèles d’appliances pour GNS3.
Réseaux Sociaux
- GNS3 sur Twitter : Suivez les dernières mises à jour et annonces.
- GNS3 sur Facebook : Rejoignez la communauté Facebook de GNS3.
- GNS3 sur LinkedIn : Connectez-vous avec d’autres professionnels utilisant GNS3.
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.