connecter le commutateur Open vSwitch au réseau réel: mascarade iptables

10

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
LokmanDz
la source
Veuillez ajouter tout progrès si vous l'aviez fait. J'ai le même problème.
Masood_mj

Réponses:

1

La réponse n'est pas vraiment la mienne, mais ... Essayez de suivre Open vSwitch sur VirtualBox

Il y avait aussi un bref fichier texte de certaines personnes de Fedora sur un sujet similaire: libvirt et OpenVSwitch sous forme de fichier texte ... n'a pas pu le localiser.

selon le commentaire, voici un bref résumé:

(1) Créer une interface vnet0 et un pont br0:

ovs-vsctl add-br br0
ip tuntap add mode tap vnet0
ip link set vnet0 up
ovs-vsctl add-port br0 vnet0
ip link # (View the created interface)

(2) spin VM qui utilise l'interface vnet0 (en tant qu'adaptateur ponté)

(3) connectez le pont br0 au réseau réel:

ovs-vsctl add-br br0 
ovs-vsctl add-port br0 eth0 
ovs-vsctl add-port br0 vnet0 
ifconfig eth0  0 && ifconfig br0 192.168.1.(X) netmask 255.255.255.0
route add default gw 192.168.1.1 br0
route del default gw 192.168.1.1 eth0
Droopy4096
la source
Étant donné que vous créez un lien vers un article externe susceptible de changer, il est recommandé de résumer la solution dans votre réponse et de faire référence à l'article à la place.
Esa Jokinen du
0

Activez le transfert au redémarrage en décommentant ces lignes dans /etc/sysctl.conf :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Octavian
la source