Eseguire Hyper-V in una macchina virtuale con virtualizzazione annidata
La virtualizzazione annidata è una funzionalità che consente di eseguire Hyper-V all'interno di una macchina virtuale Hyper-V. La virtualizzazione annidata è utile per eseguire un emulatore di telefono di Visual Studio in una macchina virtuale o per testare le configurazioni che in genere richiedono più host.
Per altre informazioni sulla virtualizzazione annidata e sugli scenari supportati, vedere Che cos'è la virtualizzazione annidata per Hyper-V?.
Prerequisiti
Processore Intel con tecnologia VT-x ed EPT
- L'host Hyper-V deve essere Windows Server 2016 o versione successiva o Windows 10 o versione successiva.
- Configurazione della macchina virtuale versione 8.0 o successiva.
Processore AMD EPYC/Ryzen o versione successiva
- L'host Hyper-V deve essere Windows Server 2022 o versione successiva o Windows 11 o versione successiva.
- Configurazione della macchina virtuale versione 9.3 o successiva.
Nota
Il guest può essere qualsiasi sistema operativo guest supportato da Windows. I sistemi operativi Windows più recenti possono supportare le funzionalità di riconoscimento dei dati che migliorano le prestazioni. Per abilitare la virtualizzazione annidata in una macchina virtuale di Azure, assicurarsi di impostare Tipo di sicurezza come "Standard".
Configurare la virtualizzazione annidata
Creare una macchina virtuale. Vedere i prerequisiti per le versioni del sistema operativo e della macchina virtuale necessarie.
Mentre la macchina virtuale è nello stato OFF, eseguire il comando seguente nell'host Hyper-V fisico per abilitare la virtualizzazione annidata per la macchina virtuale.
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Avviare la macchina virtuale.
Installare Hyper-V all'interno della macchina virtuale, proprio come per un server fisico. Per altre informazioni sull'installazione di Hyper-V, vedere Installare Hyper-V.
Nota
Quando si usa Windows Server 2019 come macchina virtuale di primo livello, il numero di vCPU deve essere pari o inferiore a 225.
Disabilitare la virtualizzazione annidata
È possibile disabilitare la virtualizzazione annidata per una macchina virtuale arrestata usando il comando di PowerShell seguente:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
Opzioni di rete
Esistono due opzioni per la rete con macchine virtuali annidate:
- Spoofing degli indirizzi MAC
- Rete NAT
Spoofing degli indirizzi MAC
Per poter instradare i pacchetti di rete attraverso due switch virtuali, è necessario abilitare lo spoofing degli indirizzi MAC nel primo livello (L1) di switch virtuale. Per abilitare lo spoofing degli indirizzi MAC, eseguire il comando di PowerShell seguente.
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
Network Address Translation (NAT)
La seconda opzione si basa su NAT (Network Address Translation). Questo approccio è più adatto per i casi in cui lo spoofing degli indirizzi MAC non è possibile, ad esempio in un ambiente cloud pubblico.
Prima di tutto, è necessario creare un commutatore NAT virtuale nella macchina virtuale host (la macchina virtuale "centrale"). Nell'esempio seguente viene creato un nuovo commutatore interno denominato VmNAT
e viene creato un oggetto NAT per tutti gli indirizzi IP nella 192.168.100.0/24
subnet.
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”
Assegnare quindi un indirizzo IP all'adattatore net:
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
A ogni macchina virtuale annidata deve essere assegnato un indirizzo IP e un gateway. L'INDIRIZZO IP del gateway deve puntare alla scheda NAT del passaggio precedente. È anche possibile assegnare un server DNS:
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>