J'utilise Open vSwitch pour créer un réseau commuté entre des machines invitées virtualBox, et je veux que le système d'exploitation hôte (Ubuntu 12.04) rejoigne ce réseau et le configure comme la passerelle de ce réseau virtuel:
Tout d'abord, j'ai créé un vswitch et j'ai ajouté des ports pour exploiter les appareils (que les machines virtuelles les utilisent comme interfaces pontées):
ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
Après cela, j'ai défini statiquement l'ip de la machine virtuelle Lubuntu 12.04:
ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
Du côté du système d'exploitation hôte, j'ai également défini l'adresse IP:
ifconfig sw0 192.168.1.1/24 up
En ce moment, je peux cingler de Lubunut à Ubunutu. Je veux maintenant, sur la machine hôte, utiliser la mascarade IP pour transférer le trafic du réseau 192.168.1.0/24 vers mon interface physique (connectée à Internet):
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Donc, depuis Lubuntu (la machine virtuelle), je peux envoyer une requête ping à l'interface Ubuntu eth1, mais je ne peux pas atteindre le vrai réseau (par exemple: la passerelle sur un vrai LAN), j'ai essayé:
nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com
Topologie du réseau
Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
192.168.30.1 ip masquerade 192.168.1.0/24
|
------------ VBox Guest 2