Introduction
J’utilise depuis quelques temps GNS3 pour effectuer quelques maquettes et réviser mes cours Cisco. Afin de maquetter un peu la sécurité ( ACL, ASA), j’ai décidé de prendre un peu de temps pour réaliser une maquette comportant des postes de travail virtuels et ainsi tester en réel l’accès aux ports voulus.
Dans ce document, je montrerais seulement la manière de faire communiquer deux machines virtuelles avec un projet GNS3/Dynamips à partir d’interfaces TAP.
Schéma Cible
Voici ma maquette cible: Deux machines virtuelles (PC1 et PC2) appartenant à deux réseaux différents qui pourront communiquer ensemble via le routeur R0. Ce schéma sera souvent utilisé par la suite.
Schéma 1
Pré-requis :
- GNS3 : Simulateur Cisco ( apt-get install gns3 )
- VirtualBOX : Virtualisation de postes de travail –> http://www.virtualbox.org/wiki/Linux_Downloads
Mise en place des interfaces TAP :
Définition d’une interface TAP :
Une interface TAP permet, dans notre cas, d’établir une communication entre le programme GNS3/Dynamips et les machines virtuelles de VirtualBox. Pour pouvoir créer ces interfaces, nous allons devoir installer les packages bridge-utils et uml-utilities.
Pour plus d’informations, vous pouvez aller consulter ce site : http://www.linux-france.org/prj/inetdoc/articles/vm/vm.network.tun-tap.html
Installation des paquets bridge-utils et uml-utilities :
sudo apt-get install bridge-utils uml-utilities
Maintenant, nous allons pouvoir créer nos interfaces TAP. Pour mon projet, j’ai besoin de deux interfaces TAP pour différentier les communication PC1 ↔ Fa0/0 et PC2 ↔ Fa0/1 comme indiqué sur le schéma 1.
Création d’une interface TAP :
Voici les commandes à taper pour créer les interfaces tap0 et tap1.
Création de l’interface tap0 :
sudo tunctl -t tap0
sudo ifconfig tap0 0.0.0.0 promisc up
Création de l’interface tap1 :
sudo tunctl -t tap1
sudo ifconfig tap1 0.0.0.0 promisc up
Cette configuration est éphémère. Elle disparaît au reboot. Je l’utilise seulement lorsque je fais des maquettes donc ça m’arrange.
Voici ce que j’ai lorsque je tape la commande ifconfig :
tap0 Link encap:Ethernet HWaddr 82:9b:7e:df:7d:9b
adr inet6: fe80::809b:7eff:fedf:7d9b/64 Scope:Lien
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
Packets reçus:2216 erreurs:0 :0 overruns:0 frame:0
TX packets:225 errors:0 dropped:174 overruns:0 carrier:0
collisions:0 lg file transmission:500
Octets reçus:175316 (175.3 KB) Octets transmis:126614 (126.6 KB)
tap1 Link encap:Ethernet HWaddr 02:b4:43:5f:e2:34
adr inet6: fe80::b4:43ff:fe5f:e234/64 Scope:Lien
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
Packets reçus:2237 erreurs:0 :0 overruns:0 frame:0
TX packets:222 errors:0 dropped:6 overruns:0 carrier:0
collisions:0 lg file transmission:500
Octets reçus:175971 (175.9 KB) Octets transmis:127908 (127.9 KB)
Ainsi, les interfaces tap0 et tap1 sont bien reconnu comme interface par ubuntu. Nous allons maintenant pouvoir créer nos machines virtuelles.
Création des machines virtuelles PC1 et PC2 avec VirtualBox :
OS utilisé:
Pour mes maquettes, j’utilise la distribution très légère Microcore Linux. La version que je vous propose de télécharger a été modifiée par les utilisateurs de GNS3 afin d’avoir quelques outils réseaux intéressant comme :
- netcat
- tcpdump
- iperf
Téléchargement :
Voici ou vous pouvez la télécharger : Microcore-linux v2.10 à cette adresse :http://www.gns3.net/download
Conversion img vers vdi:
Le fichier téléchargé est un fichier img. Il n’est pas exploitable directement par VirtualBox. Pour remédier à ce problème, nous allons devoir le convertir en suivant ces étapes :
Installer qemu :
sudo apt-get install qemu-kvm
Convertir IMG vers RAW
qemu-img convert -f qcow2 /home/olivier/Bureau/linux-microcore-2.10.img -O raw /home/olivier/Bureau/linux-microcore-2.10.raw
Convertir RAW en VDI
VBoxManage convertfromraw -format VDI /home/olivier/Bureau/linux-microcore-2.10.raw /home/olivier/Bureau/linux-microcore-2.10.vdi
Voilà, vous avez un beau disque dure compatible avec VirtualBOX.
Création du disque de PC2 :
Pour PC2, il faudra copier le fichier VDI et changer son UUID afin que VirtualBox puisse l’utiliser. Voici la commande permettant de changer l’UUID d’un fichier VDI :
VBoxManage internalcommands setvdiuuid ‘/home/olivier/Bureau/PC2.vdi’
Création sous VirtualBox:
- Nom de la machine : PC1
- Mémoire 128M ( 20 M devrait suffir)
- Disque existant pointant vers le fichier VDI généré précédemment.
Configuration sous VirtualBox :
Une fois la machine Virtuelle Créé, allez dans la configuration et éditez la partie réseau comme ceci :
Pour le PC1, il faudra utiliser un mode d’accès réseau par pont avec l’interface tap0
Pour le PC2, il faudra utiliser un mode d’accès réseau par pont avec l’interface tap1
Une fois que vous avez démarré vos Vms, il vous faut configurer la partie réseau de chaque VM.
Configuration réseau de l’OS
Configuration PC1 :
sudo ifconfig eth0 192.168.0.1
sudo route add default gw 192.168.0.254
sudo hostname PC1
Configuration PC2 :
sudo ifconfig eth0 10.0.0.1
sudo route add default gw 10.0.0.254
sudo hostname PC2
pour arrêter la machine proprement, taper :
sudo halt
Création de la maquette sous GNS3 :
Attention : Pour avoir accès aux interfaces TAP, il est nécessaire de lancer GNS3 en tant que root :
sudo gns3
Ajoutez un routeur et deux nuages comme indiqué sur le schéma 1.
Configurer le premier nuage avec l’interface NIO TAP : tap0
Après l’avoir ajoutée, elle devrait apparaître sous cette forme : nio_tap:tap0
Ceci permet à GNS3 d’utiliser l’interface tap0 pour émettre et recevoir du trafic réseau.
Effectuez la même manipulation pour le second nuage mais cette fois avec tap1 ( C01 → tap1 ).
Configuration du routeur R0 :
Pour cette maquette, j’utilise cette image c3640-a3jk9s-mz.124-3i.bin et j’ai configuré en tant que slot0, le module NM-16ESW afin de transformer mon routeur en switch de niveau3.
Afin de tester la communication, vous pouvez attribuer des ip directement aux interfaces fa0/0 et fa0/1 comme ceci :
en
conf t
ip routing
int fa0/0
no switchport
ip address 192.168.0.254 255.255.255.0
no shut
int fa0/1
no switchport
ip address 10.0.0.254 255.255.255.0
no shut
end
Conclusion :
Avec tout ça si vous essayez de faire des pings entre les pc, ça devrait fonctionner. Je l’ai déjà fais quelques fois et je n’ai jamais de problèmes sauf à l’utilisation de GNS3. Pensez à démarrer Dynamips avant l’ouverture de votre projet. Si vos routeurs consomment trop de cpu, utilisez idle-pc. Pensez à sauvegarder vos conf via tftp. Ça vous sera très utile.
Bon maquettage
Infos supplementaires :
Ecouter un port :
tcp : nc -l -p 80
udp : ns -l -p 53 -u
Sources :
Tutorial Qemu GNS3 : http://docs.google.com/View?id=dfzhd6z4_397g3jjf4db
Conversion IMG vers VDI : http://bber.biz/index.php?m=02&y=09&entry=entry090212-210202
Autre tuto GNS3 – VirtualBox : http://www.firstdigest.com/2010/02/how-to-integrate-gns3-with-virtualbox/
Partager :