Trattare le macchine virtuali in articoli della lunghezza di due pagine stampate è complicato. L'argomento è vasto e necessiterebbe di continui approfondimenti. Questo articolo non tratta specificatamente le macchine virtuali, in realtà, tratta le reti. Ma dopo aver configurato il bridge in questo modo sarà possibile “agganciargli” sia dispositivi virtuali, sia dispositivi reali a seconda delle proprie esigenze.
Come si è già detto, in primo luogo dobbiamo verificare che il nostro processore supporti la virtualizzazione, questo si può verificare cercando la voce “vmx” in /proc/cpuinfo per i processori Intel e “svm” in quelli basati su AMD.
Il modulo che deve essere caricato dal kernel si chiama “kvm”, c'è un secondo modulo che si chiama "kvm_intel" o "kvm_amd" a seconda del proprio processore. La maggioranza delle distribuzioni carica questi moduli all'avvio o automaticamente.
Per l'utilizzo di questo software è necessario avere i privilegi di root o un utente sudo, è possibile effettuare configurazioni con privilegi inferiori, ma questo va oltre lo scopo del nostro articolo.

Per l'installazione useremo una Fedora 25, in questo articolo installiamo solamente il software necessario, la configurazione delle macchine virtuali verrà trattata in altri articoli. Quindi:

dnf install qemu-kvm libvirt virt-install bridge-utils
systemctl start libvirtd
systemctl enable libvirtd

Adesso andiamo a creare il bridge, useremo nmcli l'interfaccia a linea di comando di network-manager:

# aggiungiamo il bridge
nmcli c add type bridge autoconnect yes con-name br0 ifname br0

significato delle opzioni (man nmcli e man nm-settings):
  • c, con, connection: network-manager salva le configurazioni di rete come “connection”. Le “connection” descrivono come creare o connettersi ad una rete.
  • add: crea una nuova connessione utilizzando le proprietà specificate.
  • type bridge: specifica il tipo di connessione
  • autoconnect yes: la connessione deve essere effettuata automaticamente appena la risorsa diventa disponibile.
  • con-name br0: nome della nuova connessione
  • if-name br0: il nome dell'interfaccia di rete

# impostiamo l'indirizzo IP
nmcli c mod br0 ip4 192.168.10.10/24 ipv4.method manual

significato delle opzioni:
  • mod, modify: aggiunge, modifica o rimuove proprietà nel profilo della connessione. La proprietà è specificata subito dopo, nel caso specifico, br0.
  • ip4, ipv4.addresses: array di indirizzi di rete.
  • method: l'indirizzo viene impostato manualmente.

# impostiamo il gateway
nmcli c mod br0 gw4 192.168.10.1

significato delle opzioni:
  • gw4, ipv4.gateway: gateway

# impostiamo il DNS:
nmcli c mod br0 ipv4.dns 192.168.10.1

significato delle opzioni:
  • ipv4.dns: dns

# cancelliamo le impostazioni attuali della scheda di rete (ho scelto eth0)
nmcli c del eth0

significato delle opzioni:
  • del, delete: cancella una connessione configurata

# aggiungiamo l'interfaccia come membro del bridge
nmcli c add type bridge-slave autoconnect yes con-name eth0 ifname eth0 master br0

significato delle opzioni:
  • bridge-slave: si aggancia al bridge
  • master: nome del dispositivo master

effettuate un reboot e verificate che il bridge sia operativo lanciando “ip addr”.

Network-Manager è un software complesso e di livello molto alto. Ha una montagna di opzioni e quando si comincia a comprenderlo diventa come un coltellino svizzero. Difficile farne a meno.
Con questo articolo spero di aver risposto alla domanda di jboss, se ho dimenticato qualcosa scrivetelo nei commenti diventerà uno spunto per il prossimo articolo.
Non pretendo di essere completo ed esaustivo, anzi, preferisco dimenticare qualcosa e lasciare che la mente di chi legge cominci a lavorare per cercare la soluzione.