In questo tutorial ti mostrerò come creare una routed network con QEMU / KVM libvirt usando il comando virsh.
Con KVM libvirt si possono creare tre tipi di rete.
Types of Network
- Rete virtuale NAT (NATed virtual network): questo tipo di rete permette le connessioni in uscita per le macchine virtuali, consentendone la comunicazione con il mondo esterno - se l'host è connesso con la rete. Tuttavia, le entità esterne non potranno comunicare con le macchine virtuali.
- Routed virtual network: questo tipo di rete consente alle macchine virtuali di comunicare tra loro e con host esterni instradando pacchetti tra reti diverse.
- Rete virtuale isolata: questo tipo di rete isola le macchine virtuali l'una dall'altra e dal mondo esterno, fornendo un ambiente di rete completamente separato per ogni VM.
Cosa è una routed network (KVM libvirt)
Una routed network in KVM Livirt è un tipo di rete virtuale che consente alle macchine virtuali (VM) di comunicare tra loro e con il mondo esterno instradando pacchetti tra reti diverse. In una rete instradata, ogni VM ha il proprio indirizzo IP e può comunicare direttamente con altre VM o host esterni.
Una routed network in KVM Livirt è un tipo di rete virtuale che consente alle macchine virtuali (VM) di comunicare tra loro e con il mondo esterno instradando pacchetti tra reti diverse. In una rete instradata, ogni VM ha il proprio indirizzo IP e può comunicare direttamente con altre VM o host esterni.
Per creare una routed network in KVM libvirt, è necessario definire un'interfaccia di rete utilizzando un file XML che specifichi la configurazione di rete. È quindi possibile avviare la rete utilizzando il comando “virsh net-start” e configurare le VM per utilizzare questa rete.
Le routed networks sono utili quando è necessario isolare più macchine virtuali l'una dall'altra, pur consentendo loro di comunicare con host esterni o tra di loro. Sono comunemente utilizzate in ambienti di virtualizzazione dei server in cui più VM vengono installate su un singolo host fisico.
In modalità routed, la rete virtuale è connessa alla rete fisica utilizzando le impostazioni specificate sul host. Questi percorsi vengono utilizzati per instradare il traffico dalle macchine virtuali alla rete. Per essere in grado di comunicare con la macchina virtuale usando questa configurazione è necessario impostare una static IP route nel router in modo che i pacchetti di risposta siano in grado di raggiungere l'hypervisor, altrimenti non raggiungeranno mai l'host.
Come creare una routed network usando il comando virsh
Per creare una routed network con virsh devi prima creare un file con la configurazione, ad esempio virbr1.xml.
<network>
<name>virbr1</name>
<forward mode='route'/>
<bridge name='virbr1' stp='on' delay='0'/>
<ip address='10.2.7.0' netmask='255.255.255.240'>
<dhcp>
<range start='10.2.7.3' end='10.2.7.14'/>
</dhcp>
</ip>
</network>
Una volta creato il file eseguire il commando virsh net-define:
# virsh net-define virbr1.xml # virsh net-start virbr1 # virsh net-autostart virbr1
Una volta creata la rete è possibile configurare la macchina virtuale in modo da utilizzarla.

Ora, affinché la macchina virtuale sia raggiungibile dall'esterno, è necessario aggiungere un percorso statico sul router usando l'indirizzo IP dell'host come gateway, di solito in Routing e Static Route.
