▤ Homelab

Rete virtuale nell'hypervisor: bridge Linux, VLAN e bonding

Come collegare le VM alla rete fisica: bridge Linux, bridge VLAN-aware, trunk verso lo switch, bonding delle schede, reti isolate e Open vSwitch.

Una macchina virtuale ha bisogno di una scheda di rete, e quella scheda deve essere collegata a qualcosa. Nell'hypervisor quel «qualcosa» è uno switch virtuale, quasi sempre un bridge Linux. Capire come funziona permette di mettere le VM nella rete giusta, separare i servizi in VLAN e sfruttare più schede fisiche senza sorprese.

Il bridge: uno switch dentro l'host

Un bridge Linux si comporta come uno switch di rete. Vi si collegano:

  • una o più interfacce fisiche dell'host, che fanno da uplink verso la rete reale;
  • le interfacce virtuali delle macchine virtuali e dei container.

Le VM collegate allo stesso bridge si vedono tra loro e raggiungono la rete fisica come se fossero computer collegati allo switch di casa. Ricevono indirizzi dal DHCP del router, e il router le vede con il loro indirizzo MAC.

In Proxmox VE l'installazione crea un bridge chiamato vmbr0, collegato alla scheda di rete principale, e assegna a quel bridge l'indirizzo IP dell'host. Su Debian la configurazione si trova in /etc/network/interfaces:

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    bridge-ports enp1s0
    bridge-stp off
    bridge-fd 0

L'indirizzo IP sta sul bridge, non sulla scheda fisica: è un dettaglio che confonde spesso chi modifica la configurazione a mano.

VLAN: più reti sullo stesso cavo

Le VLAN permettono di dividere una rete fisica in più reti logiche, per esempio una per la gestione, una per i servizi, una per i dispositivi domotici. Il traffico di ogni VLAN viaggia con un'etichetta, il tag dello standard 802.1Q.

Per portarle all'hypervisor, la porta dello switch a cui è collegato deve essere configurata come trunk: trasporta più VLAN con tag, ed eventualmente una VLAN senza tag, detta nativa.

Bridge VLAN-aware

Il modo più semplice in Proxmox è rendere il bridge VLAN-aware. Si attiva un'opzione sul bridge, e da quel momento a ogni scheda di rete virtuale si può assegnare un VLAN tag. La VM non sa nulla delle VLAN: riceve traffico normale, mentre il bridge aggiunge e toglie le etichette.

auto vmbr0
iface vmbr0 inet manual
    bridge-ports enp1s0
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

L'indirizzo di gestione dell'host può stare su un'interfaccia VLAN dedicata, per esempio vmbr0.10, così l'host è raggiungibile solo dalla rete di amministrazione.

Errori comuni con le VLAN

  • Porta dello switch non configurata come trunk: le VM con tag non comunicano.
  • VLAN nativa diversa tra switch e host: il traffico senza tag finisce nella rete sbagliata.
  • Firewall del router che non consente il traffico tra VLAN quando serve, o lo consente quando non dovrebbe.
  • Perdita dell'accesso all'host modificando la rete da remoto: conviene avere una console fuori banda, o applicare le modifiche con un meccanismo che torni indietro se non si conferma.

Bonding: più schede fisiche insieme

Se l'host ha due o più schede di rete, si possono unire in un bond e usare il bond come porta del bridge. Le modalità principali:

Modalità Cosa fa Richiede lo switch
active-backup una scheda attiva, l'altra di riserva no
balance-alb distribuzione adattiva del carico no
802.3ad (LACP) aggregazione negoziata con lo switch sì, supporto LACP

active-backup è la scelta più semplice per la tolleranza ai guasti: se un cavo o una porta si guastano, il traffico passa sull'altra scheda. LACP distribuisce il traffico tra più collegamenti, ma una singola connessione usa comunque una sola scheda: due link da 1 gigabit non danno un trasferimento da 2 gigabit per un solo file.

Reti interne e isolate

Un bridge non deve per forza avere una porta fisica. Un bridge senza uplink crea una rete interna: le VM collegate comunicano tra loro ma non con l'esterno. È utile per:

  • un laboratorio di prova isolato dalla rete di casa;
  • il collegamento tra un'applicazione e il suo database, che non deve essere raggiungibile da altri;
  • una VM con un router o firewall virtuale, che fa da unico punto di passaggio tra la rete interna e il bridge esterno.

Open vSwitch e SDN

Open vSwitch è uno switch virtuale più avanzato, con funzioni come il mirroring del traffico e protocolli di tunnel. Proxmox lo supporta, e offre anche una funzione SDN che gestisce zone e VLAN dall'interfaccia, utile soprattutto nei cluster. Nel mio lavoro, per un homelab con uno o due nodi, il bridge Linux VLAN-aware resta la soluzione più semplice e robusta: Open vSwitch ha senso quando servono funzioni che il bridge non offre.

In sintesi

  • Il bridge Linux è uno switch virtuale che collega VM e schede fisiche; l'IP dell'host sta sul bridge.
  • Un bridge VLAN-aware permette di assegnare un tag VLAN a ogni scheda virtuale.
  • La porta dello switch verso l'host deve essere un trunk con VLAN nativa coerente.
  • Il bonding active-backup dà tolleranza ai guasti senza configurare lo switch; LACP richiede il suo supporto.
  • Bridge senza uplink creano reti interne isolate per laboratori e servizi interni.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche