Regole Cloud NAT

Questa pagina fornisce una panoramica delle regole Cloud NAT per NAT pubblico. Queste regole ti consentono di definire la modalità di utilizzo di Cloud NAT per la connessione a internet.

Le regole Cloud NAT per il supporto NAT pubblico consentono la Network Address Translation (SNAT) dell'origine in base all'indirizzo di origine o di destinazione.

Regole NAT

Per impostazione predefinita, quando configuri un gateway Cloud NAT per NAT pubblico, i pacchetti tradotti da questo gateway NAT utilizzano lo stesso insieme di indirizzi IP NAT per raggiungere tutti gli indirizzi internet. Se hai bisogno di un maggiore controllo sui pacchetti tradotti da Cloud NAT, puoi aggiungere regole NAT.

Una regola NAT definisce una condizione di corrispondenza e un'azione corrispondente. Dopo aver specificato le regole NAT, ogni pacchetto viene confrontato con ogni regola NAT. Se un pacchetto corrisponde alla condizione impostata in una regola, viene eseguita l'azione corrispondente a quella corrispondenza.

Le regole NAT per NAT pubblico supportano la corrispondenza degli indirizzi di origine e di destinazione:

  • Nelle regole basate sull'origine, i pacchetti vengono abbinati in base al loro indirizzo IP di origine. Sono supportati solo gli indirizzi di origine IPv4.
  • Nelle regole basate sulla destinazione, i pacchetti vengono abbinati in base al loro indirizzo IP di destinazione. Sono supportati solo gli indirizzi di destinazione IPv4.

La combinazione di condizioni basate sull'origine e sulla destinazione in una singola regola NAT non è consentita. Per saperne di più, consulta Specifiche delle regole NAT.

Esempi di configurazione delle regole Cloud NAT

Questa sezione fornisce esempi di configurazione per le regole NAT basate sull'origine e sulla destinazione.

Regole basate sulle origini

Puoi utilizzare le regole NAT basate sull'origine per qualsiasi traffico supportato da NAT pubblico. Questa sezione mostra un esempio di configurazione per le istanze VM con inoltro IP abilitato.

Per impostazione predefinita, quando un gateway Cloud NAT è configurato per il traffico IPv4 in una subnet, il gateway fornisce NAT per l'indirizzo IP interno principale e gli intervalli IP alias di qualsiasi istanza VM in quella subnet. Utilizzando le regole NAT basate sull'origine, puoi anche configurare NAT per le istanze VM che inoltrano pacchetti con altri indirizzi di origine.

In questo esempio, Cloud NAT è configurato in Subnet A. Nella subnet, un'istanza VM con l'indirizzo IP interno primario 10.1.1.2 e un intervallo IP alias 10.2.1.0/24 invia traffico a internet. Considera i seguenti requisiti per l'istanza VM:

  • Se un pacchetto ha origine dall'intervallo IP 192.168.1.0/24, la VM deve utilizzare l'indirizzo IP NAT 203.0.113.10 per inviare traffico a qualsiasi destinazione internet.
  • Se un pacchetto ha origine dall'intervallo IP 192.168.2.0/24, la VM deve utilizzare l'indirizzo IP NAT 203.0.113.20 per inviare traffico a qualsiasi destinazione internet.
  • Se un pacchetto ha origine dall'indirizzo IP 10.1.1.2 (l'indirizzo IP interno primario della VM) o dall'intervallo IP 10.2.1.0/24 (l'intervallo IP alias della VM), la VM deve utilizzare l'indirizzo IP NAT 203.0.113.30 per inviare traffico a qualsiasi destinazione internet.
Configurazione di Cloud NAT con regole basate sull'origine.
Configurazione di Cloud NAT con due regole basate sull'origine (fai clic per ingrandire).

Per soddisfare questi requisiti, crea due regole NAT basate sull'origine per i pacchetti inoltrati e la regola predefinita per i pacchetti provenienti dall'indirizzo IP interno principale e dall'intervallo IP alias dell'istanza VM:

  • Regola basata sull'origine 1: se l'indirizzo di origine è 192.168.1.0/24, utilizza 203.0.113.10 per inviare traffico a internet.
  • Regola basata sull'origine 2: se l'indirizzo di origine è 192.168.2.0/24, utilizza 203.0.113.20 per inviare traffico a internet.
  • La regola predefinita: per tutti gli altri pacchetti, utilizza 203.0.113.30 per inviare il traffico a internet.

Se l'indirizzo di origine di un pacchetto inoltrato dall'istanza VM non corrisponde alla regola 1 o alla regola 2, il pacchetto viene eliminato. Per informazioni su come Cloud NAT alloca le porte per le VM con l'inoltro IP abilitato, consulta Allocazione delle porte per l'inoltro IP.

Per saperne di più su come utilizzare le regole NAT basate sull'origine, consulta Cloud WAN dietro le quinte: uno sguardo più da vicino alle sue funzionalità di networking differenziate.

Regole basate sulla destinazione

L'esempio seguente mostra come utilizzare le regole NAT quando la destinazione consente l'accesso solo da pochi indirizzi IP. Ti consigliamo di eseguire la conversione SNAT del traffico verso queste destinazioni dalle tue VM Google Cloud nelle subnet private solo con gli indirizzi IP consentiti. Ti consigliamo di non utilizzare questi indirizzi IP per altre destinazioni.

Considera i seguenti requisiti per le VM in Subnet-1 (10.10.10.0/24), che si trova nella regione A della rete VPC test:

  • Le VM devono utilizzare l'indirizzo IP NAT 203.0.113.20 per inviare traffico alla destinazione 198.51.100.20/30.
  • Le VM devono utilizzare l'indirizzo IP NAT 203.0.113.30 per inviare traffico alla destinazione 198.51.100.30 o 198.51.100.31.
  • Le VM devono utilizzare l'indirizzo IP NAT 203.0.113.40 per inviare traffico a qualsiasi altra destinazione internet.

Questa rete VPC contiene anche due subnet aggiuntive nella stessa regione. Queste VM devono utilizzare l'indirizzo IP NAT 203.0.113.10 per inviare il traffico a qualsiasi destinazione.

Configurazione Cloud NAT con due gateway Cloud NAT.
Configurazione Cloud NAT con due gateway Cloud NAT (fai clic per ingrandire).

Puoi utilizzare le regole NAT per questo esempio, ma hai bisogno di due gateway NAT perché Subnet-1 (10.10.10.0/24) ha regole NAT diverse dalle altre subnet. Per creare questa configurazione:

  1. Crea un gateway denominato Cloud NAT Gateway 1 per Subnet-1 con indirizzo IP NAT 203.0.113.40 e aggiungi le seguenti regole:
    1. Regola NAT 1 in Cloud NAT Gateway 1: quando la destinazione è 198.51.100.20/30, utilizza 203.0.113.20 per NAT.
    2. Regola NAT 2 in Cloud NAT Gateway 1: quando la destinazione è 198.51.100.30 o 198.51.100.31, utilizza 203.0.113.30 per NAT.
  2. Crea un gateway chiamato Cloud NAT Gateway 2 per le altre subnet della regione e assegna l'indirizzo IP NAT come 203.0.113.10. In questo passaggio non sono necessarie regole NAT.

Specifiche delle regole NAT

  • Cloud NAT supporta regole basate sull'origine e sulla destinazione. Ogni regola definisce una condizione basata sull'indirizzo di origine o di destinazione, ma non su entrambi.
  • Una priorità della regola identifica in modo univoco una regola NAT, da 0 (priorità più alta) a 65.000 (priorità più bassa). Due regole non possono avere la stessa priorità.
  • Ogni configurazione NAT ha una regola predefinita (priorità della regola 65.001):
    • La regola predefinita viene applicata se un pacchetto non corrisponde ad alcuna regola NAT basata sull'origine o sulla destinazione nella stessa configurazione NAT. Eccezione: la regola predefinita non viene applicata ai pacchetti inoltrati. Per utilizzare NAT per questi pacchetti, la configurazione NAT deve includere una regola basata sull'origine corrispondente. Per saperne di più, consulta Regole basate sull'origine e Allocazione delle porte per l'inoltro IP.
    • L'intervallo IP CIDR della regola predefinita è 0.0.0.0/0. Se la configurazione NAT contiene regole basate sull'origine e sulla destinazione, tutto il traffico idoneo per la regola predefinita e che non corrisponde a nessuna delle tue regole personalizzate viene elaborato da questa regola predefinita, utilizzando gli indirizzi IP NAT assegnati.
  • Le regole Cloud NAT sono supportate solo quando il valore dell'opzione di allocazione dell'IP NAT è MANUAL_ONLY.
  • Tutti gli indirizzi IP configurati in una determinata regola devono essere dello stesso livello.

    Non puoi utilizzare un mix di indirizzi IP di livello Premium e Standard all'interno della stessa regola (inclusa la regola predefinita).

  • Gli intervalli CIDR IP nelle condizioni di corrispondenza non devono sovrapporsi tra le regole NAT. A ogni pacchetto può essere applicata al massimo una regola. Se un pacchetto corrisponde a una regola basata sull'origine e sulla destinazione, Cloud NAT applica la regola con priorità più alta.

    Non puoi creare una regola NAT con 0.0.0.0/0 come intervallo di origine o destinazione perché viene utilizzato dalla regola predefinita.

  • Gli indirizzi IP NAT nelle regole NAT non devono sovrapporsi.

  • Una regola deve avere un valore Active non vuoto o un indirizzo IP Drain non vuoto. Se la regola ha un indirizzo IP Active vuoto, le nuove connessioni che corrispondono alla regola NAT vengono eliminate.

  • Le regole NAT non possono essere aggiunte a un gateway NAT con mappatura indipendente dall'endpoint (EIM) abilitata. Non puoi attivare EIM su un gateway NAT che contiene regole NAT.

Allocazione porte

Il gateway Cloud NAT utilizza l'impostazione del numero minimo di porte per VM (minPortsPerVm) per determinare quante porte di origine allocare per ogni VM.

Poiché un singolo indirizzo IP NAT fornisce 64.512 porte utilizzabili, il valore di minPortsPerVm determina il numero massimo di VM che un indirizzo IP NAT può supportare. Ad esempio, se minPortsPerVm è 1024 porte, un singolo indirizzo IP può supportare fino a 63 VM (64.512 ÷ 1024).

Il valore di minPortsPerVm viene utilizzato per calcolare in modo indipendente l'allocazione delle porte per ogni regola NAT configurata, inclusa quella predefinita. Se una VM esaurisce le porte allocate da una regola specifica, le nuove connessioni che corrispondono a quella regola vengono eliminate.

Tipi di regole e allocazione porte

Cloud NAT alloca le porte per le regole NAT in base al tipo:

  • Regola predefinita. Le porte vengono allocate a ogni VM il cui indirizzo IP interno principale o i cui intervalli IP alias vengono gestiti dal gateway Cloud NAT, anche se la VM ha il forwarding IP abilitato. La regola predefinita elabora solo il traffico proveniente da indirizzi IP interni primari o intervalli IP alias e non elabora il traffico inoltrato.
  • Regole basate sulla sorgente. Le porte vengono allocate a una VM solo se il relativo indirizzo IP interno primario o un intervallo IP alias corrisponde all'indirizzo di origine specificato nella regola NAT. Ad esempio, supponiamo che un gateway Cloud NAT sia configurato per gestire un intervallo di indirizzi IP primari contenente sia 10.1.1.1 che 10.1.1.2. Se una regola basata sull'origine specifica 10.1.1.1 per la condizione di corrispondenza, ma una VM invia pacchetti utilizzando il suo indirizzo IP interno principale 10.1.1.2, Cloud NAT non alloca porte alla VM da quella regola specifica.

    Limitazione: se una VM ha l'inoltro IP abilitato, l'allocazione delle porte funziona in modo diverso. In questo caso, Cloud NAT alloca le porte alla VM dalla regola predefinita e da tutte le regole basate sull'origine nella configurazione NAT contemporaneamente. Per ulteriori informazioni, vedi Allocazione delle porte per l'inoltro IP.

  • Regole basate sulla destinazione. Per ogni regola, le porte vengono allocate a ogni VM il cui indirizzo IP interno primario o intervalli IP alias sono gestiti dal gateway Cloud NAT. Ogni VM riceve porte dalla regola predefinita e da ogni regola basata sulla destinazione.

    Ad esempio, se il gateway è configurato con 1024 porte per VM e ha due regole NAT basate sulla destinazione oltre alla regola NAT predefinita, a ogni VM vengono allocate 1024 porte da ogni regola.

Allocazione porte per l'inoltro IP

Per supportare le VM con inoltro IP abilitato, la corrispondenza delle regole per queste VM funziona in modo diverso durante l'allocazione delle porte e l'elaborazione dei pacchetti:

  • Allocazione porte. Poiché le VM di forwarding possono emettere pacchetti con indirizzi IP di origine arbitrari, Cloud NAT considera queste VM come corrispondenza per la regola predefinita e per tutte le regole NAT basate sull'origine nella configurazione NAT. Di conseguenza, per ogni VM di forwarding, il gateway Cloud NAT alloca simultaneamente il valore minPortsPerVm dalla regola predefinita e da ogni regola basata sull'origine.

    Ad esempio, considera un gateway Cloud NAT configurato con un minPortsPerVm di 1024, una regola NAT basata sull'origine con un indirizzo IP NAT e la regola NAT predefinita con 10 indirizzi IP NAT. A ogni VM di forwarding vengono allocate 1024 porte da entrambe le regole. Poiché la regola basata sull'origine ha un solo indirizzo IP NAT, può supportare fino a 63 VM di forwarding. Il gateway Cloud NAT riserva anche 64.512 porte (63 VM × 1024 porte) per queste dalla regola predefinita.

  • Elaborazione dei pacchetti. Per la traduzione effettiva degli indirizzi, una regola basata sull'origine elabora un pacchetto solo se l'indirizzo IP di origine del pacchetto corrisponde all'indirizzo di origine definito nella condizione della regola. La regola predefinita non elabora il traffico inoltrato dalle VM con il forwarding IP abilitato. I pacchetti con indirizzi IP di origine arbitrari vengono eliminati se non corrispondono a una regola basata sull'origine.

Per evitare l'esaurimento delle porte che comporta un errore nelle configurazioni NAT che includono VM con l'inoltro IP abilitato, assicurati che le regole NAT siano configurate con una capacità di porte sufficiente:

  • La regola predefinita deve avere un numero sufficiente di indirizzi IP NAT per supportare tutte le VM di forwarding gestite dal gateway Cloud NAT, oltre a ogni VM che utilizza la regola predefinita per il traffico dal suo indirizzo IP interno principale o dagli intervalli IP alias.
  • Ogni regola basata sull'origine deve avere un numero sufficiente di indirizzi IP NAT per supportare tutte le VM di forwarding gestite dal gateway. La regola deve anche avere un numero sufficiente di indirizzi IP NAT per supportare ogni VM che utilizza quella specifica regola basata sull'origine per il traffico dal suo indirizzo IP interno principale o dagli intervalli IP alias.

Capacità del porto

Una regola NAT può esaurire le porte disponibili se gli indirizzi IP della regola non possono supportare le allocazioni di porte richieste.

Considera una subnet con 16 VM e un gateway Cloud NAT configurato con 4096 porte per VM. Il gateway ha tre regole:

  • Regola NAT predefinita con due indirizzi IP NAT
  • rule-1 basato sulla destinazione con un indirizzo IP NAT
  • rule-2 basata sulla destinazione con due indirizzi IP NAT

Poiché l'allocazione delle porte viene calcolata in modo indipendente per ogni regola, ogni regola deve fornire 65.536 porte (16 VM × 4096 porte).

La regola predefinita e rule-2 hanno una capacità sufficiente. Tuttavia, rule-1 ha un solo indirizzo IP (64.512 porte utilizzabili), che non è sufficiente per fornire l'allocazione completa per tutte le 16 VM. Di conseguenza, la corrispondenza del traffico rule-1 potrebbe essere eliminata per qualsiasi VM che non riceve l'allocazione completa delle porte.

Per verificare se una regola NAT richiede più indirizzi IP, puoi utilizzare il campo minExtraIpsNeeded. Questo campo mostra il numero di indirizzi IP che devi allocare se gli indirizzi IP esistenti nella regola NAT non possono soddisfare i requisiti di porta per tutte le VM configurate.

Pianificazione della capacità della porta

Quando pianifichi la capacità delle porte delle regole NAT, considera in che modo Cloud NAT alloca le porte per le regole NAT:

Linguaggio delle espressioni di regola

Le regole NAT vengono scritte utilizzando la sintassi di Common Expression Language.

Un'espressione richiede due componenti:

  • Attributi che possono essere ispezionati nelle espressioni delle regole.
  • Operazioni che possono essere eseguite sugli attributi nell'ambito di un'espressione.

Ad esempio, la seguente espressione utilizza gli attributi destination.ip e 198.51.100.0/24 nell'operazione inIpRange(). In questo caso, l'espressione restituisce true se destination.ip è compreso nell'intervallo di indirizzi IP 198.51.100.0/24.

inIpRange(destination.ip, '198.51.100.0/24')

Le regole NAT supportano solo i seguenti attributi e operazioni:

Attributi

Gli attributi rappresentano le informazioni di un pacchetto in uscita, ad esempio l'indirizzo IP di origine e di destinazione.

Nome attributo Descrizione
source.ip Indirizzo IP di origine del pacchetto
destination.ip Indirizzo IP di destinazione del pacchetto

Operazioni

Il seguente riferimento descrive gli operatori che puoi utilizzare con gli attributi per definire le espressioni delle regole.

Operazione Descrizione
inIpRange(string, string) -> bool inIpRange(x, y) restituisce true se l'intervallo CIDR IP y contiene l'indirizzo IP x.
|| Operatore logico. x || y restituisce true se x o y è true.
== Operatore uguale a. x == y restituisce true se x è uguale a y.

Espressioni di esempio

Puoi abbinare i pacchetti in base all'indirizzo di origine o di destinazione, ma non a entrambi.

Esempi di corrispondenza basata sull'origine

Corrispondenza dei pacchetti con l'indirizzo IP di origine 10.0.0.25:

"source.ip == '10.0.0.25'"

Corrispondenza dei pacchetti con indirizzo IP di origine 10.0.0.25 o 10.0.0.26:

"source.ip == '10.0.0.25' || source.ip == '10.0.0.26'"

Corrispondono ai pacchetti con intervallo di indirizzi IP di origine 10.0.2.0/24:

"inIpRange(source.ip, '10.0.2.0/24')"

Corrispondenza dei pacchetti con indirizzo IP di origine 10.0.0.25 o intervallo di indirizzi IP di origine 10.0.2.0/24:

"source.ip == '10.0.0.25' || inIpRange(source.ip, '10.0.2.0/24')"

Esempi di corrispondenza basata sulla destinazione

Corrisponde ai pacchetti con indirizzo IP di destinazione 198.51.100.20:

"destination.ip == '198.51.100.20'"

Corrispondono ai pacchetti con indirizzo IP di destinazione 198.51.100.20 o 198.51.100.21:

"destination.ip == '198.51.100.20' || destination.ip == '198.51.100.21'"

Corrispondenza dei pacchetti con intervallo di indirizzi IP di destinazione 198.51.100.10/30:

"inIpRange(destination.ip, '198.51.100.10/30')"

Corrispondono ai pacchetti con indirizzo IP di destinazione 198.51.100.20 o intervallo di indirizzi IP di destinazione 198.51.100.10/30:

"destination.ip == '198.51.100.20' || inIpRange(destination.ip, '198.51.100.10/30')"

Passaggi successivi