[ÉDITER]
Le système de production est actuellement un système à la fois physique et basé sur ESXi. Nous n'utiliserions évidemment jamais virtualbox même pour un environnement de pré-production! Il a été utilisé ici uniquement pour réduire rapidement le problème directement sur mon bureau.
Merci pour l'explication de la "mise en attente" sur la méta!
[/ÉDITER]
Ma configuration:
- Réseau privé
vboxnet1
10.0.7.0/24 - 1 hôte, bureau ubuntu
- 1 VM, serveur ubuntu (VirtualBox)
Adressant la disposition:
- HÔTE: 10.0.7.1
- VM: 10.0.7.101
- VM MAC NAMESPACE : 10.0.7.102
Sur le VM
, j'ai exécuté les commandes suivantes:
ip netns add mac # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac
Sur l' mac
espace de noms, à l'intérieur de la machine virtuelle:
ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Pour que nous nous retrouvions avec: (comme Inception?)
+------------------------+
| Host: 10.0.7.1 |
| |
| +--------------------+ |
| | VM: 10.0.7.101 | |
| | | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | | | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+
Ce qui fonctionne:
- Ping entre
Host
etVM
- Ping entre
NS
etNS
- dhclient de
NS
Ce qui ne fonctionne pas:
- ping entre
NS
etVM
- ping entre
NS
etHost
Où j'ai commencé à devenir fou:
- tcpdump on
host
(la vraie machine) affiche en fait la requête ARP ET les réponses - tcpdump on
NS
montre les requêtes ARP envoyées à l'hôte - tcpdump on
VM
fait fonctionner tout le désordre (!) -> ping commence à obtenir des réponses lorsque tcpdump est démarré sur la VM?!?
Donc, je parie que vous en aviez envie, ma question est: comment puis-je le faire fonctionner? Je soupçonne que quelque chose ne va pas avec ARP sur le macvlan à l'intérieur de la NS, mais je ne peux pas comprendre quoi exactement ...
Btw, j'ai fait les mêmes expérimentations avec l' mac0
interface directement sur la VM (pas d'espace de nommage) et cela a fonctionné parfaitement.
la source
Réponses:
OK, donc, pour la postérité, le fait que tcpdump fasse tout à coup fonctionner aurait dû me mettre sur la bonne voie. Ce qu'il fait en interne, c'est passer
eth0
en mode promiscuité. C'est-à-dire,eth0
produira tout le trafic réseau, pas seulement celui avec le serveur principalMAC
Cependant, c'est précisément ainsi que cela
macvlan
fonctionne: il ajoute une nouvelle adresse MAC virtuelle secondaire que la carte réseau "physique" (c'est-à-dire une machine virtuelle) ne connaît pas.La solution de contournement simple consiste donc à:
ifconfig eth0 promisc
J'espère que ça aide!
la source