Juil
12
2010

Machines Virtuelles VBOX avec GNS3


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.

clip_image002

Schéma 1

 

Pré-requis :

 

 

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 :

clip_image004

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

clip_image006

Après l’avoir ajoutée, elle devrait apparaître sous cette forme : nio_tap:tap0

clip_image008

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.

clip_image010

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/

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

1 Comment + Add Comment

  • Merci bcp pour le tutoc’est très interéssant.
    Est ce que vous pouvez faire le même tuto pour une architecure windows natif et virtuel

Laissez un commentaire