Que ce soit VMware ou VirtualBox, la connexion NAT d'un guest est plutôt facile à réaliser. Généralement, ça marche du premier coup. Ca en devient même ennuyeux Et comme ma license VMWare est arrivée à expiration, c'était l'opportunité d'installer et de tester quelques aspects networking de VirtualBox (que je n'avais pas encore eu l'occasion de manipuler).
Je fais actuellement des tests sur des versions virtualisées de Ubuntu 12.0.4.1 et 12.10 et j'ai besoin de rester en routage IP pur pour passer le traffic entre mes 2 VM sans passer par un point de translation. En d'autres termes, utiliser le host (Kubuntu 11.10) comme simple point de routage **sans translation** entre les 2 VM.
J'utilise donc la maquette suivante :
Après avoir installé VirtualBox, mis à jour les paquets sur les 2 VM en mode NAT voici le mode opératoire à suivre (les VM étant éteintes bien sûr). A vous d'adapter !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 +------------------+ | Host Linux | | Kubuntu 11.10 | | VirtualBox 4.1.2 | +------------------+ vboxnet0 vboxnet1 /.1 \.1 / \ 192.168.120.0/24 / \192.168.121.0 / \ /.120 \.121 VM1 VM2 Kubuntu 12.0.4.1 Kubuntu 12.10
1) Création et configuration des interfaces vxboxnet du host
Menu File du VirtualBox Manager
Menu Preferences
Menu Network
Cliquer +, une interface vboxnet0 se crée. Faire Space ou sélectionner le petit tournevis puis renseigner l'IP 192.168.120.1/24.
Cliquer +, une interface vboxnet1 se crée. Faire Space ou sélectionner le petit tournevis puis renseigner l'IP 192.168.121.1/24.
Cliquer OK.
2) Mapping des VM sur les interfaces du host
Sélectionner la 1ère VM (Kubuntu 12.0.4.1 dans mon cas), cliquer sur Network dans le menu à droite.
Cocher Enable Network Adapter.
Sélectionner Attached To sur Host-only Adapter.
Sélectionner Name sur vboxnet0.
Cliquer OK.
Même chose sur la 2ème VM en sélectionnant l'interface vboxnet1 comme Host-only Adapter.
Démarrer les VM.
3) Pendant que les VM démarrent, configurer les interfaces vboxnet du host et activer le routage.
Petite vérif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 root@steph-ThinkPad-T400:/# ifconfig vboxnet0 192.168.120.1 netmask 255.255.255.0 root@steph-ThinkPad-T400:/# ifconfig vboxnet1 192.168.121.1 netmask 255.255.255.0 root@steph-ThinkPad-T400:/# echo 1 > /proc/sys/net/ipv4/ip_forward
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 root@steph-ThinkPad-T400:/# ifconfig -a vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00 inet addr:192.168.120.1 Bcast:192.168.120.255 Mask:255.255.255.0 inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:588 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:125538 (125.5 KB) vboxnet1 Link encap:Ethernet HWaddr 0a:00:27:00:00:01 inet addr:192.168.121.1 Bcast:192.168.121.255 Mask:255.255.255.0 inet6 addr: fe80::800:27ff:fe00:1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:145 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:25820 (25.8 KB)4) Reste plus qu'à configurer les IP et la default route sur les VM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 root@steph-ThinkPad-T400:/# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.120.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0 192.168.121.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 root@steph-VM-Kubuntu-12:~#ifconfig eth0 192.168.120.120 netmask 255.255.255.0 root@steph-VM-Kubuntu-12:~#route add default gw 192.168.120.1 root@steph-VM-Kubuntu-12:~#ping 192.168.120.1 PING 192.168.120.1 (192.168.120.1) 56(84) bytes of data. 64 bytes from 192.168.120.1: icmp_req=1 ttl=64 time=0.046 ms 64 bytes from 192.168.120.1: icmp_req=2 ttl=64 time=0.037 ms5) Normalement, le routage est maintenant monté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 root@steph-VirtualBox~#ifconfig eth0 192.168.121.121 netmask 255.255.255.0 root@steph-VirtualBox~#route add default gw 192.168.121.1 root@steph-VirtualBox~#ping 192.168.121.1 PING 192.168.121.1 (192.168.121.1) 56(84) bytes of data. 64 bytes from 192.168.121.1: icmp_req=1 ttl=64 time=0.047 ms 64 bytes from 192.168.121.1: icmp_req=2 ttl=64 time=0.035 ms
Ping depuis VM1 vers VM2 :
Ping depuis VM2 vers VM1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 root@steph-VM-Kubuntu-12:~#ping 192.168.121.121 PING 192.168.121.121 (192.168.121.121) 56(84) bytes of data. 64 bytes from 192.168.121.121: icmp_req=1 ttl=64 time=0.675 ms 64 bytes from 192.168.121.121: icmp_req=2 ttl=64 time=0.518 ms ^C --- 192.168.121.121 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.518/0.596/0.675/0.082 ms
6) Pour donner un accès complet à l'Internet, il suffit alors de NATter sur l'interface de sortie du host et de mettre les DNS sur les VM. Par exemple dans mon cas de figure, sur le host :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 root@steph-VirtualBox~#ping 192.168.120.120 PING 192.168.120.120 (192.168.120.120) 56(84) bytes of data. 64 bytes from 192.168.120.120: icmp_req=1 ttl=64 time=0.539 ms 64 bytes from 192.168.120.120: icmp_req=2 ttl=64 time=0.354 ms 64 bytes from 192.168.120.120: icmp_req=3 ttl=64 time=0.348 ms ^C --- 192.168.120.120 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.348/0.413/0.539/0.091 ms
Après avoir renseigné les DNS sur les VM (au travers de leur Network Manager respectif par exemple), j'aboutis à la maquette suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 root@steph-ThinkPad-T400:/# cat /etc/resolv.conf # Generated by NetworkManager nameserver 172.20.2.10 nameserver 172.20.2.39 root@steph-ThinkPad-T400:/# iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE
Si je fais un traceroute vers developpez.net depuis la VM1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 +------------------+ | Host Linux |ppp0 -------------------> | Kubuntu 11.10 | DNS 172.20.2.10 | VirtualBox 4.1.2 | 172.20.2.39 +------------------+ vboxnet0 vboxnet1 /.1 \.1 / \ 192.168.120.0/24 / \192.168.121.0 / \ /.120 \.121 VM1 VM2 Kubuntu 12.0.4.1 Kubuntu 12.10
J'ai d'ailleurs posté ce message depuis VM1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 root@steph-VM-Kubuntu-12:~# traceroute developpez.net traceroute to developpez.net (87.98.128.200), 30 hops max, 60 byte packets 1 steph-ThinkPad-T400.local (192.168.120.1) 0.409 ms 0.125 ms 0.158 ms 2 10.62.61.177 (10.62.61.177) 426.813 ms 429.751 ms 429.732 ms 3 * * * 4 * * * 5 * * * 6 201.13.6.109.rev.sfr.net (109.6.13.201) 546.554 ms 527.566 ms 548.517 ms 7 th2-5-6k.fr.eu (94.23.122.213) 548.501 ms 551.220 ms * 8 th2-g1-a9.fr.eu (213.186.32.202) 237.815 ms 256.783 ms 557.775 ms 9 rbx-g1-a9.fr.eu (91.121.131.209) 561.758 ms 561.742 ms rbx-g1-a9.fr.eu (91.121.215.133) 561.726 ms 10 * rbx-s3-6k.fr.eu (213.186.32.140) 561.688 ms 620.642 ms 11 developpez.net (87.98.128.200) 615.665 ms 620.610 ms 620.594 ms
Bon amusement
Steph
Partager