Regole Cloud NAT

La funzionalità delle regole NAT consente di creare regole di accesso che definiscono la modalità di utilizzo di Cloud NAT per la connessione a internet. Le regole NAT supportano NAT di origine in base all'indirizzo di destinazione.

Quando configuri un gateway NAT senza regole NAT, le VM che utilizzano quel gateway NAT usano lo stesso insieme di indirizzi IP NAT per raggiungere tutti gli indirizzi internet. Se hai bisogno di un maggiore controllo sui pacchetti che passano attraverso 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 abbinato a ogni regola NAT. Se un pacchetto corrisponde alla condizione impostata in una regola, si verifica l'azione corrispondente a tale corrispondenza.

Esempio di configurazione della regola Cloud NAT

L'esempio seguente illustra come utilizzare le regole NAT quando la destinazione consente l'accesso solo da pochi indirizzi IP. Consigliamo di fare in modo che il traffico verso queste destinazioni dalle VM Google Cloud nelle subnet private venga convertito in NAT di origine utilizzando solo gli indirizzi IP consentiti. Ti consigliamo di non utilizzare questi indirizzi IP per altre destinazioni.

Considera i seguenti requisiti per le VM nell'area geografica 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 il traffico alla destinazione 198.51.100.20/30.
  • Le VM devono utilizzare l'indirizzo IP NAT 203.0.113.30 per inviare il 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 il 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 di Cloud NAT con due gateway Cloud NAT (fai clic per ingrandire).

Per questo esempio puoi utilizzare le regole NAT, 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 chiamato Cloud NAT Gateway 1 per Subnet-1 con l'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 NAT di origine con 203.0.113.20.
    2. Regola NAT 2 in Cloud NAT Gateway 1: quando la destinazione è 198.51.100.30 o 198.51.100.31, utilizza NAT di origine con 203.0.113.30.
  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

Prima di utilizzare le regole NAT, tieni presente le seguenti specifiche:

  • Un numero di regola identifica in modo univoco una regola NAT. Non possono esistere due regole con lo stesso numero di regola.
  • Ogni configurazione NAT ha una regola predefinita:
    • La regola predefinita viene applicata se nessun'altra regola NAT corrisponde nella stessa configurazione NAT.
    • Il numero della regola predefinita è 65001.
    • L'intervallo IP CIDR di destinazione della regola predefinita è 0.0.0.0/0.
  • Le regole di Cloud NAT sono supportate solo se 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 una combinazione di indirizzi IP del livello Premium e del livello Standard all'interno della stessa regola (compresa la regola predefinita).

  • Gli intervalli CIDR IP di destinazione nella condizione di corrispondenza non devono sovrapporsi alle regole NAT. Può esistere al massimo una regola che può corrispondere a un determinato pacchetto.

    Non puoi creare una regola NAT con un intervallo CIDR IP di destinazione pari a 0.0.0.0/0 perché questo intervallo viene utilizzato nella regola predefinita.

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

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

  • Le regole NAT non possono essere aggiunte a un gateway NAT in cui è abilitata la mappatura indipendente dagli endpoint. Non puoi abilitare la mappatura indipendente dagli endpoint su un gateway NAT contenente regole NAT.

Inoltre, a tutte le VM vengono assegnate le porte in base al valore relativo al numero minimo di porte per VM per ogni regola Cloud NAT. Se le porte allocate a una VM da una regola NAT sono esaurite, le nuove connessioni che corrispondono alla regola NAT vengono eliminate.

Ad esempio, se configuri 4096 porte per VM e hai 16 VM e 2 regole NAT (rule1 con 1 indirizzo IP e rule2 con 2 indirizzi IP), insieme alla regola predefinita (default) con 2 indirizzi IP, tutte le 16 VM riceveranno 4096 porte in ogni bundle di regole NAT. In questo esempio, non sono presenti problemi in default o rule2 per tutte le VM, ma rule1 non è in grado di allocare porte per tutte le sue VM. Di conseguenza, il traffico proveniente dalle VM che deve passare attraverso rule1 potrebbe essere ignorato e potrebbe mostrare segni di esaurimento delle risorse perché il traffico non utilizza la regola predefinita.

Linguaggio di espressione delle regole

Le regole NAT sono scritte utilizzando la sintassi Common Expression Language.

Un'espressione richiede due componenti:

  • Attributi che possono essere esaminati nelle espressioni di regole.
  • Operazioni che possono essere eseguite sugli attributi come parte 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 rientra 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, come l'indirizzo IP di destinazione.

Nome dell'attributo Descrizione
destination.ip Indirizzo IP di destinazione del pacchetto

Suite operativa

Il riferimento seguente 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 IP CIDR 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

Abbina il traffico all'indirizzo IP di destinazione 198.51.100.20.

"destination.ip == '198.51.100.20'"

Abbina il traffico con l'indirizzo IP di destinazione 198.51.100.10/30 o 198.51.100.20.

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

Passaggi successivi