Azure NAT Gateway – Gestione del traffico in uscita dalle VM eseguite in Azure

Da poco tempo è disponibile in Azure il NAT Gateway, una risorsa che permette di poter far navigare le macchine virtuali utilizzando sempre lo stesso indirizzo IP pubblico. Il comportamento predefinito infatti è che le VM che non hanno un indirizzo IP pubblico assegnato ma solo un indirizzo IP privato utilizzano per la navigazione verso Internet uno dei tanti indirizzi pubblici che Azure usa come endpoint di uscita. Per poter essere certi che l’indirizzo IP pubblico di navigazione rimanesse sempre lo stesso finora era possibile ovviamente assegnare alla VM un indirizzo IP pubblico (esponendola però direttamente) oppure  utilizzare un Network Load Balancer e qualsiasi macchina virtuale aggiunta al pool di back-end del load balancer utilizzava l’IP pubblico del bilanciatore per navigare in uscita.

Il NAT Gateway è un servizio che fornisce la  funzionalità SNAT (Source Network Address Translation) per una subnet, permette la connettività solo in uscita ed è completamente gestito da Microsoft. Dopo aver creato la risorsa ed avergli assegnato un indirizzo IP pubblico statico sarà sufficiente associarla ad una subnet della rete virtuale di Azure. Più subnet nella stessa rete virtuale possono avere NAT Gateway diversi.

La risorsa è progettata per essere semplice e come si può vedere dall’immagine le frecce indicano la direzione del flusso dei dati.

Figura 1: Utilizzo di Azure NAT Gateway

Tutto il traffico in uscita per la subnet viene elaborato automaticamente dal NAT Gateway senza richiedere alcuna configurazione. Le rotte definite dall’utente non sono necessarie e il NAT Gateway ha la precedenza su altri scenari di connessioni in uscita e sostituisce la destinazione Internet predefinita di una subnet. Ogni NAT Gateway può garantire fino a 50 Gbps di velocità effettiva. Un indirizzo IP pubblico collegato al NAT Gateway fornisce fino a 64.000 flussi simultanei per UDP e TCP. È possibile iniziare con un singolo indirizzo IP e arrivare fino a 16 indirizzi IP pubblici, quindi la risorsa è altamente scalabile.

È possibile utilizzare il NAT Gateway anche in contemporanea con i Load Balancer e gli indirizzi IP pubblici delle VM. È importante però sottolineare che tutti gli indirizzi IP pubblici devono avere una SKU STANDARD. Ci tengo a sottolinearlo perché quando viene creata una VM e assegnate un indirizzo IP pubblico al momento della creazione, utilizzando il wizard dal portale di Azure, la scelta di default è BASIC.

Per maggiori informazioni sulle SKU e sulle caratteristiche degli IP pubblici in Azure vi rimango alla lettura dell’articolo Tipi di indirizzi IP e metodi di allocazione in Azure

Figura 2: Coesistenza di flussi in ingresso e in uscita. NAT e VM con indirizzo pubblico a livello di istanza e Load Balancer pubblico

Creazione del NAT Gateway

Per creare una nuova risorsa NAT Gateway è sufficiente collegarsi al portale di Azure e cercare la risorsa dopo aver cliccato su +Create a resource. Dal wizard di creazione sarà possibile partire per definire le configurazioni del NAT Gateway.

Figura 3: Risorsa NAT Gateway nel portale di Azure

Compilate i campi come richiesto, inserendo la sottoscrizione, il resource group, il nome del NAT Gateway e la regione dove volete che venga creato. Scegliete anche il  timeout di inattività.

Figura 4: Inserimento delle informazioni di base per la creazione del NAT Gateway

Nella schermata successiva vi verrà richiesto di indicare (se già ne avete creato uno) o di creare l’indirizzo IP pubblico che verrà associato al NAT Gateway. È anche possibile associare un Public IP Prefix, cioè un intervallo riservato di indirizzi IP per gli endpoint pubblici in Azure. Azure consente di allocare un intervallo contiguo di indirizzi IP alla sottoscrizione in base al numero specificato. Qui trovate maggiori info https://docs.microsoft.com/it-it/azure/virtual-network/public-ip-address-prefix

Figura 5: Creazione dell’indirizzo IP pubblico per il NAT Gateway

Scegliete a questo punto a quale rete virtuale e rispettive subnet volete associare il NAT Gateway. Lo stesso gateway può essere associato a più subnet contemporaneamente.

Figura 6: Scelta della virtual network e della subnet a cui associare il NAT Gateway

Controllate I valori inseriti e procedete alla creazione del NAT Gateway.

Figura 7: Schermata di riepilogo della creazione del NAT Gateway

Dopo pochi secondi, il NAT Gateway sarà creato e sarà operativo.

Figura 8: Creazione del NAT Gateway completata e schermata di Overview della risorsa

Figura 9: Indirizzo IP assegnato al NAT Gateway

Per verificare il corretto funzionamento ho utilizzato una VM collegata alla stessa subnet dove ho collegato il NAT Gateway, come si può vedere dall’immagine sotto:

Figura 10: VM collegata alla stessa subnet a cui è collegato il NAT Gateway

Mi sono collegato in RDP alla VM e navigando dalla VM ho verificato che stavo utilizzando l’indirizzo IP pubblico assegnato al NAT Gateway.

Figura 11: La VM naviga attraverso il NAT Gateway

Conclusioni

I NAT Gateway forniscono la connettività Internet in uscita per una o più subnet di una rete virtuale. In questo modo è possibile essere certi dell’IP pubblico utilizzato dalle VM eseguite in Azure ed è possibile autorizzare e filtrare il traffico proveniente da Azure nel momento in cui deve essere gestito il flusso verso le risorse esterne al cloud. Per maggior informazioni vi rimando alla lettura della documentazione ufficiale https://docs.microsoft.com/it-it/azure/virtual-network/nat-gateway-resource