Une IP par machine virtuelle ne change rien puisque c'est d'abord un problème de MAC (niveau 2, le protocole IP est au niveau 3).
Je dois "juste" faire en sorte que les paquets Ethernet venant des machines virtuelles ne sortent jamais par eth0.
J'ai essayé avec une interface dummy0. Ca fonctionne en local, mais le routage ne se fait pas. Ne me demandez pas pourquoi.
J'ai essayé avec une interface br0 toute seule, pas mieux. br0 reliée à eth0, avec ebtables pour filtrer, pas mieux (?!).
J'ai essayé avec une interface tap0, si si, j'ai insisté :-) Toujours la même chose: ça fonctionne en local, mais pas de routage. C'est à dire que mes machines virtuelles peuvent dialoguer, elles peuvent dialoguer avec l'hôte, mais les paquets ne sont jamais routés vers le vpn ou l'extérieur. Alors qu'avec un bête xen et tap0 ça roule.
Je suis persuadé qu'avec br0 relié à eth0 et ebtables je peux obtenir le bon fonctionnement.
===============
IF=eth0
BR=br0
IP=$(ifconfig $IF | sed -n 's#.*inet adr\:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) .*#1円#p')
MASK=$(ifconfig $IF | sed -n 's#.*Masque\:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)$#1円#p')
GATEWAY=$(route -n | sed -n "s#^0\.0\.0\.0 *\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) .*0\.0\.0\.0 .*$IF\$#1円#p")
ifconfig $IF 0.0.0.0
brctl addbr $BR
brctl stp $BR off
brctl setfd $BR 0
brctl addif $BR $IF
ifconfig $BR $IP netmask $MASK up
route add default gateway $GATEWAY dev $BR
===============
Après ces commandes, on n'utilise plus eth0 mais br0. Pour tout.
ping google.fr fonctionne
le vpn fonctionne, etc.
Tout ce qui entre/sort de br0 est recopié sur eth0.
Avec ebtables je peux bloquer les MAC sortantes pour que toute MAC égale à celle d'une des machines virtuelles ne sorte jamais. Et je n'arrive à rien. Soi tout passe, soi rien. Je pense que je n'utilise pas les bonnes commandes pour ebtables.
Quelqu'un sait comment bloquer une mauvaise MAC en sortie d'eth0 dans ce cas ?
[^] # Re: NAT ???
Posté par Kerro . En réponse au message openvpn, vmware, ovh, l'enfer du décor. Évalué à 2.
Je dois "juste" faire en sorte que les paquets Ethernet venant des machines virtuelles ne sortent jamais par eth0.
J'ai essayé avec une interface dummy0. Ca fonctionne en local, mais le routage ne se fait pas. Ne me demandez pas pourquoi.
J'ai essayé avec une interface br0 toute seule, pas mieux. br0 reliée à eth0, avec ebtables pour filtrer, pas mieux (?!).
J'ai essayé avec une interface tap0, si si, j'ai insisté :-) Toujours la même chose: ça fonctionne en local, mais pas de routage. C'est à dire que mes machines virtuelles peuvent dialoguer, elles peuvent dialoguer avec l'hôte, mais les paquets ne sont jamais routés vers le vpn ou l'extérieur. Alors qu'avec un bête xen et tap0 ça roule.
Je suis persuadé qu'avec br0 relié à eth0 et ebtables je peux obtenir le bon fonctionnement.
===============
IF=eth0
BR=br0
IP=$(ifconfig $IF | sed -n 's#.*inet adr\:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) .*#1円#p')
MASK=$(ifconfig $IF | sed -n 's#.*Masque\:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)$#1円#p')
GATEWAY=$(route -n | sed -n "s#^0\.0\.0\.0 *\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) .*0\.0\.0\.0 .*$IF\$#1円#p")
ifconfig $IF 0.0.0.0
brctl addbr $BR
brctl stp $BR off
brctl setfd $BR 0
brctl addif $BR $IF
ifconfig $BR $IP netmask $MASK up
route add default gateway $GATEWAY dev $BR
===============
Après ces commandes, on n'utilise plus eth0 mais br0. Pour tout.
ping google.fr fonctionne
le vpn fonctionne, etc.
Tout ce qui entre/sort de br0 est recopié sur eth0.
Avec ebtables je peux bloquer les MAC sortantes pour que toute MAC égale à celle d'une des machines virtuelles ne sorte jamais. Et je n'arrive à rien. Soi tout passe, soi rien. Je pense que je n'utilise pas les bonnes commandes pour ebtables.
Quelqu'un sait comment bloquer une mauvaise MAC en sortie d'eth0 dans ce cas ?