Maquette 2 VM Host-only routées
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 :roll: 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 :
Code:
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 |
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 !
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.
Code:
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 |
Petite vérif
Code:
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) |
Code:
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 |
4) Reste plus qu'à configurer les IP et la default route sur les VM :
Code:
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 ms |
Code:
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 |
5) Normalement, le routage est maintenant monté.
Ping depuis VM1 vers VM2 :
Code:
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 |
Ping depuis VM2 vers VM1 :
Code:
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 |
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:
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 |
Après avoir renseigné les DNS sur les VM (au travers de leur Network Manager respectif par exemple), j'aboutis à la maquette suivante :
Code:
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 |
Si je fais un traceroute vers developpez.net depuis la VM1 :
Code:
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 |
J'ai d'ailleurs posté ce message depuis VM1 :ccool:
Bon amusement :lol:
Steph