Funzionamento e configurazione dei commutatori virtuali di Hyper-V

In questo articolo vedremo il funzionamento dei commutatori virtuali di Hyper-V (soprattutto l’effetto che questi hanno sul sistema operativo host) e come eseguire correttamente la configurazione in base alle proprie esigenze. Questa guida è stata scritta utilizzando Windows 10 come host quindi con versioni differenti di Windows i testi della GUI o alcuni comandi potrebbero variare leggermente, in ogni caso il funzionamento di base è equivalente.

Per gestire i commutatori virtuali di Hyper-V esistono due modi: tramite GUI o tramite le cmdlets PowerShell. In Windows Server 2008 R2 e Windows Server 2008 quest’ultime non sono disponibili nativamente, quindi è necessario installare delle librerie separatamente. Si consigliano le PowerShell Management Library for Hyper-V.

Nell’articolo si farà riferimento solo alle cmdlets ufficiali presenti in Windows Server 2012/Windows 8 e successivi.

Sicuramente il metodo più semplice per gestire i commutatori virtuali è quello di aprire la “Console di gestione di Hyper-V” e fare click su “Gestione commutatori virtuali”. Verrà aperta una finestra con una panoramica completa dei commutatori virtuali configurati sul sistema. L’equivalente cmdlet è Get-VMSwitch (i commutatori virtuali sono i virtual switch).

configvm

Per creare un nuovo commutatore è sufficiente fare click su “Nuovo commutatore di rete virtuale”, selezionare il tipo di commutatore e confermare. Successivamente sarà possibile inserire un nome descrittivo per il commutatore e configurare le altre impostazioni. Per aggiungere un nuovo commutatore è possibile utilizzare anche il cmdlet “New-VMSwitch”.

commvirtual

I commutatori possono essere di tipo:

Esterni: le macchine virtuali connesse a questo tipo di commutatore sono in grado di comunicare con l’esterno. E’ il tipo più usato.

Interni: le macchine virtuali connesse a questo tipo di commutatore sono in grado di comunicare solo tra loro o con l’host

Privati: le macchine virtuali connesse a questo tipo di commutatore sono in grado di comunicare solo tra loro

Prima di creare commutatori, la schede di rete fisica del computer host ha ovviamente il protocollo TCP/IP v4 abilitato ed ha un indirizzo IP assegnato per potersi connettere ad internet.

ethernet_prima

Commutatore virtuale esterno

Ora proveremo a creare un commutatore virtuale di tipo esterno. Questo tipo è equivalente ad una rete di tipo bridged con VMWare. Nella pagina di configurazione prestiamo attenzione a selezionare la scheda di rete fisica corretta (deve essere quella correntemente utilizzata per collegarsi alla rete) e selezioniamo “Consenti condivisione della scheda di rete da parte del sistema operativo di gestione”. Questa voce è estremamente importante: quando non è selezionata il computer host non potrà collegarsi alla rete utilizzando la scheda di rete fisica selezionata, quindi se il computer è dotato di una sola scheda di rete l’host non potrà effettivamente collegarsi alla rete fisica (solo le macchine virtuali collegate al commutatore virtuale potranno comunicare direttamente sulla rete fisica).

nuovocomm

Dopo aver applicato le modifiche noteremo che la configurazione di rete del computer host sarà stata modificata: la scheda di rete fisica selezionata per il commutatore virtuale esterno non avrà più alcun indirizzo IP e l’unico protocollo abilitato sarà l’ “Hyper-V Extensible Virtual Switch” per permettere la comunicazione con le macchine virtuali Hyper-V.

ethernet_dopoc

Solo se è stata selezionata anche la voce “Consenti condivisione della scheda di rete da parte del sistema operativo di gestione” sarà stata creata una nuova scheda di rete virtuale chiamata “vEthernet (Nome communtatore virtuale)”.  Questa permetterà a tutti gli effetti al computer host di connettersi ancora alla rete fisica, quindi se in futuro si vorrà modificare la configurazione di rete del computer host (ad esempio assegnare un indirizzo IP statico o specificare un diverso DNS) sarà necessario agire solo sulla configurazione di questa connessione che, a differenza della scheda di rete fisica, avrà tutti i protocolli abilitati. Ovviamente se “Consenti condivisione della scheda di rete da parte del sistema operativo di gestione” non è stato selezionato questa connessione virtuale non sarà presente in quanto si presume che la connettività del computer host sia garantita già da un’altra scheda di rete fisica non connessa a quello stesso commutatore virtuale esterno.

ethernet_dopo_dettagli

NOTA: Nel mio caso il computer host è connesso ad un rete fisica 192.168.44.x con server DHCP abilitato.

Qualcuno ora potrebbe chiedersi cosa succede se proviamo a creare due commutatori virtuali esterni selezionando la stessa scheda di rete fisica: ovviamente in tal caso verrà restituito un errore che indica che la scheda di rete è già associata ad un altro commutatore virtuale esterno. Per definizione è possibile creare un solo commutatore virtuale esterno per singola scheda di rete fisica.

errore_commesterno

Una volta connessa la scheda di rete della macchina virtuale al commutatore esterno bisogna però considerare che potrebbe essere necessario configurare anche la scheda di rete all’interno del sistema operativo virtuale. Nel mio caso, poiché ho un DHCP nella mia rete esterna, una volta connessa la macchina virtuale alla rete esterna mediante il commutatore questa riceverà automaticamente un indirizzo IP, esattamente come se si trasse di un computer fisico presente nella rete. Tuttavia se nella rete esterna non si ha un DHCP abilitato sarà necessario specificare manualmente la configurazione nella scheda di rete dal sistema operativo virtuale. Nell’esempio ho assegnato un indirizzo IP statico alla macchina virtuale utilizzando il range della rete fisica.

rete_esterna

Commutatore virtuale interno

Proviamo ora a creare invece un commutatore interno. In tal caso non viene ovviamente richiesta la selezione di una scheda di rete fisica da collegare al commutatore in quanto si tratta di una configurazione di tipo puramente virtuale (la comunicazione avviene utilizzando unicamente il sistema operativo e Hyper-V). In questo caso, dopo la creazione, lato host verrà aggiunta solo una connessione virtuale chiamata “vEthernet (Nome commutatore virtuale)”: questa permetterà al computer host di comunicare con le macchine virtuali e viceversa e, a differenza del caso precedente, non sarà stata modificata la connessione della scheda di rete fisica.

ethernet_interno

Inizialmente questa connessione non ha alcun indirizzo IP configurato quindi, se non è presente un server DHCP (ad esempio in esecuzione in una macchina virtuale connessa allo stesso commutatore virtuale interno), sarà necessario assegnargli manualmente un indirizzo IP del range della rete virtuale. La rete virtuale può essere scelta arbitrariamente, ma è meglio evitare che si sovrapponga con altre reti esistenti. Ad esempio nel mio caso, se l’host è connesso ad una rete fisica 192.168.44.x posso assegnargli come IP 192.168.35.2 (quindi le macchine virtuali comunicheranno tra loro e con l’host utilizzando una rete virtuale 192.168.35.x). Ovviamente la configurazione TC/IP andrà eseguita anche all’interno delle macchine virtuali, nel mio caso alla VM ho assegnato un IP 192.168.35.3.

rete_interna

Commutatore virtuale privato

Il commutatore virtuale privato è molto simile ad un commutatore virtuale interno, l’unica differenza è che in questo caso non verrà creata lato host la connessione virtuale “vEthernet” quindi le macchine virtuali connesse a questo commutatore comunicheranno tra loro ma non potranno comunicare con l’host. La configurazione della rete virtuale andrà eseguita quindi solo dall’interno del sistema operativo delle macchine virtuali.

Come avevo accennato precedentemente è possibile anche creare configurazioni più complesse introducendo macchine virtuali con server DHCP in esecuzione, router, ecc…

Connettere una macchina virtuale ad un commutatore virtuale

Questa parte è estremamente importante: ogni scheda di rete virtuale di una macchina virtuale deve essere connessa ad un commutatore virtuale per funzionare. Per fare questo è sufficiente aprire la configurazione della macchina virtuale, creare una nuova scheda di rete virtuale e selezionare il commutatore virtuale che si intende utilizzare. A seconda della configurazione del commutatore virtuale selezionato la scheda di rete della macchina virtuale sarà in grado di comunicare con la rete fisica, con le altre macchine virtuali e l’host oppure solo con le altre macchine virtuali.

Utilizzando le voci in “Gestione larghezza di banda” è possibile specificare anche delle politiche di QoS.

retevm

2 interventi su “Funzionamento e configurazione dei commutatori virtuali di Hyper-V

  1. simone

    Ciao,
    ho provato a seguire la tua guida.
    Setto tutte le impostazioni e quando applico le modifiche mi si apre la finestra con scritto:
    “Applicazione delle modifiche in corso”
    e rimane così all’infinito.
    Qualche idea?

    1. f.giammarini Autore

      Ciao, per iniziare disinstalla tutti gli eventuali antivirus installati nel computer e riprova. Se il problema persiste, assicurati che i driver delle schede di rete siano aggiornati e che non siano installati altri software di terze parti che aggiungono protocolli aggiuntivi alla scheda di rete.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *