L'interfaccia basata su Macvlan esegue il ping dall'host ma non dallo spazio dei nomi


10

[MODIFICARE]

Il sistema di produzione è attualmente un mix fisico e basato su ESXi. Ovviamente non useremo mai virtualbox nemmeno per un ambiente di pre-produzione! È stato usato qui solo per restringere rapidamente il problema direttamente sul mio desktop.

Grazie per la spiegazione per "in attesa" su meta!

[/MODIFICARE]

La mia configurazione:

  1. Rete privata vboxnet110.0.7.0/24
  2. 1 host, desktop di Ubuntu
  3. 1 VM, server Ubuntu (VirtualBox)

Indirizzo di indirizzo:

  1. HOST: 10.0.7.1
  2. VM: 10.0.7.101
  3. VM MAC NAMESPACE : 10.0.7.102

Sul VM, ho eseguito i seguenti comandi:

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

Sul macnamespace, all'interno della VM:

ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0

In modo che alla fine finiamo con: (Come Inception?)

+------------------------+
| Host: 10.0.7.1         |
|                        |
| +--------------------+ |
| | VM: 10.0.7.101     | |
| |                    | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | |                | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+

Cosa funziona:

  • Ping tra HosteVM
  • Ping tra NSeNS
  • dhclient da NS

Cosa non funziona:

  • ping tra NSeVM
  • ping tra NSeHost

Dove ho iniziato a impazzire:

  • tcpdump on host(la macchina reale) mostra effettivamente la richiesta ARP E le risposte
  • tcpdump on NSmostra le richieste ARP inviate all'host
  • tcpdump on VMfa funzionare tutto il casino (!) -> ping inizia a ottenere risposte quando tcpdump viene avviato sulla VM?!?

Quindi, scommetto che eri desideroso, la mia domanda è: come posso farlo funzionare? Ho il sospetto che qualcosa non vada con ARP sul macvlan all'interno del NS ma non riesco a capire cosa esattamente ...

A proposito, ho fatto le stesse esplorazioni con l' mac0interfaccia direttamente sulla VM (senza spazio dei nomi) e ha funzionato perfettamente.


4
Non capisco perché questa domanda sia stata contrassegnata come fuori tema. È sicuramente una domanda sysadmin / netadmin, rilevante per più ambienti di virtualizzazione, e non è banale (o, se lo è, il 90% delle domande su StackOverflow è anche off-topic). Mi piacerebbe se le persone che lo hanno contrassegnato come "off-topic" si preoccupassero di spiegare il perché, piuttosto che incollare una regola che ovviamente non si applica qui. Grazie!
jpetazzo,

@jpetazzo Questo non è off-topic, e posso solo supporre che la chiusura sia avvenuta in base alla scarsa organizzazione / presentazione della domanda (probabilmente a causa del fatto che l'OP non è un amministratore di sistema / net). Inoltre, l'ambito di Server Fault (non solo l'argomento) è diverso dallo Stack Overflow - la tua argomentazione mi fa pensare che non hai visitato il nostro centro assistenza in quanto non ha senso.
Chris S,

Risposte:


13

OK, quindi, per i posteri, il fatto che tcpdump funzioni all'improvviso dovrebbe avermi messo sulla buona strada. Quello che fa internamente è passare eth0alla modalità promiscua. Vale a dire, eth0produrrà tutto il traffico di rete, non solo quello con il server principaleMAC

Tuttavia, funziona esattamente così macvlan: aggiunge un nuovo indirizzo MAC virtuale secondario che la scheda di rete "fisica" (ovvero una VM) non conosce.

Quindi la soluzione semplice è quella di: ifconfig eth0 promisc

Spero possa essere d'aiuto !


Quindi hai dovuto deselezionare "nessuna modalità promisc" anche su quella VM, suppongo?
Nils,

Anzi, è deselezionato.
yadutaf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.