Come configurare un NAT Virtual Switch e relative NAT Rules in Client Hyper-V in Windows 10

Gestire macchine virtuali è divenuta ormai una consuetudine. Client Hyper-V in Windows 10 viene usato da tantissime figure professionali nei modi più disparati. Ciò che spesso avviene, però, è una configurazione della rete superficiale che può generare diversi problemi di connessione alle VM.

In questo articolo vedremo come creare un NAT Virtual Switch (disponibile dalla versione 1607 Anniversary Update) e relative regole per standardizzare alcune procedure o rispolverare argomenti di networking per capire meglio, ad esempio, come sia possibile raggiungere una macchina virtuale su Azure configurando lo specifico endpoint.

Il NAT è una tecnica utilizzata nel mondo delle reti che permette la modifica di un indirizzo IP contenuto nell’header di un pacchetto in transito su un apparato di rete all’interno di una comunicazione in corso tra due o più nodi della rete. Per maggiori informazioni clicca qui.

Hyper-V consente di creare facilmente Virtual Switch esterni, interni o privati, tramite GUI. Con pochi comandi powershell possiamo ampliare il raggio d’azione.

Come prima cosa creeremo un Virtual Switch interno, ossia uno switch non connesso ad una interfaccia fisica sull’host. In questo modo tutte le VM che utilizzeranno questo Virtual Switch potranno parlarsi tra loro ma non potranno parlare con la rete a cui è connesso l’host. Nel mio caso il nome sarà “NATSwitch”.

Il secondo passo sarà configurare un IP al nuovo Virtual Switch, una subnet ed un alias.

Infine sarà necessario assegnare una rete al Virtual Switch che sarà utilizzata dalle VM.

Per comodità utilizzeremo rete 10.0.0.0/24 assegnando 10.0.0.1 come IP del Virtual Switch.

Per fare ciò eseguiamo Powershell (o Powershell ISE) con privilegi elevati ed eseguiamo i comandi:

Figura 1: PowerShell ISE – Script di configurazione

Al termine dell’operazione è possibile utilizzare la console di Hyper-V per assegnare il nuovo commutatore virtuale alle VM

Figura 2: Hyper-V – Proprietà commutatore virtuale

Figura 3: Hyper-V – Proprietà della VM win2019

Per verificare che tutto funzioni correttamente configuriamo l’IP statico 10.0.0.2 sull’interfaccia di una VM

Figura 4: VM – Configurazione scheda di rete

Perché assegniamo un IP statico?

Le VM connesse al NAT Virtual Switch sono isolate in un dominio broadcast differente da quello dell’host fisico. Lo switch non fa routing tra la subnet 10.0.0.0/24 e quella a cui è connesso l’host di conseguenza un servizio DHCP ubicato sulla rete LAN non sarà fruibile.

Per configurare la scheda di rete della VM evitando l’accesso in desktop remoto possiamo utilizzare PowerShell Direct introdotto da Windows Server 2016.

Eseguiamo il comando

Figura 5: PowerShell ISE – PowerShell Direct – Login

Inserendo le credenziali avremo accesso alla macchina “win2019”

Figura 6: PowerShell ISE – PowerShell Direct

Recuperiamo le informazioni sulla scheda di rete da configurare con il comando

Figura 7: PowerShell ISE – Informazioni sulla scheda di rete

Configuriamo IP, subnet mask e gateway sull’interfaccia “Ethernet”

Figura 8: PowerShell ISE – Configurazione scheda di rete

Successivamente, configuriamo il DNS

Verifichiamo con il comando

Figura 9: PowerShell ISE – Riepilogo

L’immagine seguente mostra quanto configurato fino ad ora

Figura 10: Schema architetturale

A questo punto, per riuscire a raggiungere uno dei servizi erogati dalla VM, possiamo utilizzare una NAT Rule con Port Forwarding.

Per poter creare una NAT Rule è necessario specificare quattro parametri:

  • ExternalIPAddress: Specifica l’host a cui sarà indirizzato il traffico. Nel nostro caso utilizzeremo 0.0.0.0/0, ovvero tutti gli indirizzi;
  • ExternalPort: Specifica la porta che sarà esposta dall’host, nel nostro caso utilizzeremo la 5000;
  • InternalIPAddress: Specifica l’IP della V, nel nostro caso l’IP è 10.0.0.2;
  • InternalPort: Specifica la porta che espone il servizio che vogliamo raggiungere nella VM, nel nostro caso 3389 (RDP).

Il comando da utilizzare è il seguente

Figura 11: PowerShell ISE – Configurazione NAT Rule

Proviamo a collegarci in RDP alla macchina

Figura 12: Login RDP

La connessione viene effettuata correttamente

Figura 13: Connessione in desktop remoto

Conclusioni

Questa tecnica di solito viene utilizzata per nascondere dietro un solo indirizzo IP diversi servizi, per fini di sicurezza, per rispettare standard, per evitare di “consumare” un numero enorme di IP e tanto altro. Ci sono diversi approcci e diverse tipologie di NAT da utilizzare in base alle proprie esigenze. Sapere cos’è e come funziona è un requisito minimo indispensabile per ogni sistemista, molto utile nel troubleshooting e nella gestione delle nostre architetture di rete.