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).
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”.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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?
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.
Ti ringrazio per questa guida. Sono alle prime armi con Hyper-V e grazie a te ho configurato correttamente la scheda di rete (al primo tentativo fatto da solo, avevo bloccato l’accesso alla rete al mio pc fisico)
Grazie 1000 per questa guida! Io però ho un problema…nella mia VM non vedo la scheda anche se la ho aggiunta dalle impostazioni della Hyper-V consolle!
In sostanza nelle periferiche non ho scede di rete….ho 2 periferiche senza drivers però… VBbus e ACPI HyperV counter (o qualcosa del genere)….
Come posso risolvere se nella VM non mi vede la scheda di rete? Grazie
Quale sistema operativo hai in esecuzione sulla macchina virtuale?
In alcuni casi potrebbe essere necessario aggiungere nella configurazione della VM una scheda di rete di tipo legacy, ma deve essere obbligatoriamente di prima generazione.
Che versione di Windows stai utilizzando per Hyper-V?
Qui trovi la lista dei sistemi operativi supportati in Hyper-V Client su Windows 10:
Microsoft Docs – Supported guest OS
Ottima guida.
Io però avevo bisogno di modificare delle impostazioni sul commutatore e mi ritorna un errore.
E’ possibile rimuovere ‘brutalmente’ tutti i commutatori ( intendo non dalla console di Hyper V ) ?
Grazie
Luca
Da una console PowerShell avviata come amministratore puoi eseguire il comando:
Get-VMSwitch
Per vedere tutti i commutatori virtuali installati e:
Remove-VMSwitch “NomeCommutatore”
per rimuovere manualmente un commutatore.
In alcuni casi potrebbe tuttavia essere necessario anche reinstallare completamente Hyper-V.
Ciao, sono alle prime armi con hyper v.
Ho creato una macchina per installarci xp pro per un software che gira solo li. fin qui tutto ok, installo il sistema che funziona.
Seguendo la guida creo un commutatore virtuale, creo la scheda di rete nelle impostazioni della macchina e la collego al commutatore.
Ora tornando a noi in windows xp non mi trova nessuna periferica di rete, come posso fare?
Ciao, purtroppo Windows XP non è supportato come sistema operativo guest nelle ultime versioni di Hyper-V:
https://docs.microsoft.com/it-it/virtualization/hyper-v-on-windows/about/supported-guest-os
Esistono delle procedure non ufficiali per eseguire comunque l’installazione in Hyper-V ma a quel punto consiglio di utilizzare direttamente un software di virtualizzazione alternativo.
scusatemi se mi intrometto nel post ma credo di avere un problema analogo: eseguito il comando powerShell “Get-VMSwitch” mi compaiono due commutatori virtuali “Hyper-VLinux Internal” e “Default Switch internal”. Il primo da me creato è collegato adesso con la rete interna (scelta non fatta da me). Il secondo anche lui collegato con la rete interna ha tutti i parametri dimmati quindi non modificabili, ed è anche l’ unico recante attivata l’opzione rete predefinita consente alle macchine virtuali di accedere automaticamente alla rete del computer tramite NAT. Scusatemi ancora l’intromissione ma non riesco a venire a capo da questo problema; cosa posso fare? grazie niky
Scusami Nicola ma non ho capito la domanda: per “problema analogo” ti riferisci all’utente che non riusciva a modificare le impostazioni dei commutatori/virtual switch?
Se si, hai provato a rimuovere il commutatore da PowerShell e a ricrearlo da capo come suggerito precedentemente? Hai disabilitato momentaneamente eventuali software antivirus o di internet security che potrebbero interferire con la modifica delle schede di rete?
Scusate ma anch’io ho un problema con la connessione. In pratica ho creato un commutatore virtuale esterno e sul computer Host (192.168.1.100) gira una VM(192.168.1.101) . Il mio problema è che la VM non riesce a vedere il PC Host (ping negativo) me riesce a vedere tutto gli altri PC della rete e viceversa. Il PC Host vede anche lui tutti i pc della rete compresa la VM. Vi chiedo aiuto perchè dalla VM vorrei salvare dei file sul PC e non so come fare. Grazie in anticipo.
In base alla tua descrizione sembrerebbe un problema di condivisione file e non di commutatore virtuale di Hyper-V. Il fatto che il ping non funzioni potrebbe essere normale se sul computer host non è stata abilitata la relativa regola in Windows Firewall, anche la “visibilità” del sistema sulla mappa grafica della rete di Windows non è indicativa in quanto non affidabile (ti consiglio la lettura di questa pagina).
Ti consiglio di seguire questa guida per configurare correttamente la condivisione delle cartelle tra due sistemi Windows.
Se invece per te è sufficiente solo scambiare file, se il sistema operativo guest è supportato, potresti utilizzare direttamente la modalità sessione avanzata di Hyper-V.
Ciao,
invece io vorrei fare questo….ho un pc fisico win10…ho installato hyper-v ed ho configurato una vm win10 che però non voglio condividere con l’host e che quindi non veda la lan inerna, ma che possa solo uscire su internet.
in altri hypervisor è possibile isolare la vm in questo modo…ma in hyper-v come? Sono costretto a creare una vlan?
Grazie.
Potresti configurare un NAT virtuale, però in Hyper-V è necessario utilizzare dei comandi PowerShell. Puoi trovare maggiori informazioni in queste pagine:
– Configurare una rete NAT
– Come configurare un NAT Virtual Switch e relative NAT Rules in Client Hyper-V in Windows 10