L'interface basée sur Macvlan envoie un ping depuis l'hôte mais pas depuis l'espace de noms

10

[É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:

  1. Réseau privé vboxnet110.0.7.0/24
  2. 1 hôte, bureau ubuntu
  3. 1 VM, serveur ubuntu (VirtualBox)

Adressant la disposition:

  1. HÔTE: 10.0.7.1
  2. VM: 10.0.7.101
  3. 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' macespace 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 HostetVM
  • Ping entre NSetNS
  • dhclient de NS

Ce qui ne fonctionne pas:

  • ping entre NSetVM
  • ping entre NSetHost

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 NSmontre les requêtes ARP envoyées à l'hôte
  • tcpdump on VMfait 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' mac0interface directement sur la VM (pas d'espace de nommage) et cela a fonctionné parfaitement.

yadutaf
la source
4
Je ne comprends pas pourquoi cette question a été signalée comme hors sujet. C'est définitivement une question sysadmin / netadmin, pertinente pour plusieurs environnements de virtualisation, et ce n'est pas une question triviale (ou, si c'est le cas, 90% des questions sur StackOverflow sont également hors sujet). J'adorerais que les personnes qui l'ont signalé comme "hors sujet" se donnent la peine d'expliquer pourquoi, plutôt que de copier-coller une règle qui ne s'applique évidemment pas ici. Je vous remercie!
jpetazzo
@jpetazzo Ce n'est pas hors sujet, et je ne peux que supposer que les personnes ayant clôturé l'ont fait en raison de la mauvaise organisation / présentation de la question (probablement parce que l'OP n'est pas un administrateur sys / net). De plus, la portée de Server Fault (pas seulement le sujet) est différente de Stack Overflow - votre argument me fait penser que vous n'avez pas visité notre centre d'aide car cela n'a aucun sens.
Chris S

Réponses:

13

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 eth0en mode promiscuité. C'est-à-dire, eth0produira tout le trafic réseau, pas seulement celui avec le serveur principalMAC

Cependant, c'est précisément ainsi que cela macvlanfonctionne: 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!

yadutaf
la source
Vous avez donc dû décocher "pas de mode promisc" sur cette VM également, je suppose?
Nils
En effet, elle n'est pas contrôlée.
yadutaf