Come è stato menzionato nelle risposte precedenti, una soluzione a questo problema è quella di aggiungere una scheda di rete macvlan sull'host. Tuttavia, ho ritenuto che ricablare manualmente le route verso l'adattatore macvlan fosse un po 'confuso, soprattutto perché volevo il supporto IPv6 e impostare manualmente le route potrebbe diventare un problema quando il prefisso cambia. Quindi ecco la mia configurazione che lascia il kernel in controllo della tabella di routing:
(La configurazione particolare qui è specifica di Debian e Upstart, ma i passaggi di base dovrebbero funzionare su qualsiasi GNU / Linux.)
Creazione dell'adattatore macvlan all'avvio
Innanzitutto, è necessario selezionare un indirizzo MAC per la scheda. Potresti essere in grado di usarne solo uno casuale, ma ti suggerisco di creare manualmente un adattatore macvlan e utilizzare il suo MAC. In questo modo, il MAC si impegna a tutte le convenzioni che potrebbero essere lì.
È consigliabile impostare un MAC fisso, poiché altrimenti non è possibile, ad esempio, che un server DHCP riconosca la macchina dopo un riavvio e gli assegni lo stesso indirizzo IP di prima.
Quindi crea un adattatore e cerca il MAC:
root@host:~# ip link add link eth0 macvlan0 type macvlan mode bridge
root@host:~# ip addr show dev macvlan0
#: macvlan0@eth0: mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1
link/ether 12:34:56:78:90:ab brd ff:ff:ff:ff:ff:ff
...
Il numero esadecimale evidenziato è il tuo indirizzo MAC.
Ora crei uno script init - che deve essere eseguito prima che la rete venga inizializzata - per creare l'adattatore macvlan ad ogni avvio. Il comando per farlo è:
ip link add link eth0 address <MACADDRESS> macvlan0 type macvlan mode bridge
Un esempio di script di avvio Upstart per questo scopo sarebbe:
start on starting networking
script
ip link add link eth0 address <MACADDRESS> macvlan0 type macvlan mode bridge
end script
Mettilo in es /etc/init/macvlan.conf
.
Impostazione della configurazione di rete
In /etc/network/interfaces
, imposta la tua scheda di rete fisica su manuale (ma lasciala automaticamente) e sposta la sua configurazione precedente (in genere DHCP o un indirizzo IP statico) sulla tua scheda macvlan. Per esempio:
auto eth0
iface eth0 inet manual
auto macvlan0
iface macvlan0 inet dhcp
Disabilitazione di IPv6 per l'adattatore fisico
Infine, non si desidera che l' adattatore fisico ottenga un indirizzo IP. Per IPv4 l'impostazione dell'adattatore su manuale impedisce di ottenere un indirizzo. Tuttavia, non ho trovato una configurazione che impedisce al kernel di ottenere / assegnare un indirizzo IPv6 per / all'adattatore. Quando lo fa, aggiunge anche percorsi per loro, che possono causare problemi. Quindi il modo migliore sembra essere disabilitare IPv6 per l'adattatore fisico. Puoi farlo aggiungendo la linea
net.ipv6.conf.eth0.disable_ipv6=1
a /etc/sysctl.conf
, creando un file /etc/sysctl.d/
con questa riga o aggiungendo
sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
al tuo script init.
Al momento del riavvio del computer, la comunicazione dall'host al guest dovrebbe funzionare sia con IPv4 che con IPv6.
Tenere presente che se si commette un errore durante l'impostazione, l'host potrebbe diventare irraggiungibile tramite la rete anche dopo un riavvio. Fallo solo se hai accesso fisico alla macchina o se sono presenti altre misure di sicurezza in modo da poter risolvere potenziali problemi.