Regole Cloud NAT
Questa pagina fornisce una panoramica delle regole Cloud NAT per Public NAT. Queste regole ti consentono di definire la modalità di utilizzo di Cloud NAT per la connessione a internet.
Le regole Cloud NAT per Public NAT supportano la Network Address Translation di origine (SNAT) in base all'indirizzo di origine o di destinazione.
Regole NAT
Per impostazione predefinita, quando configuri un gateway Cloud NAT per Public NAT, i pacchetti convertiti 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 convertiti 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 associato a ogni regola NAT. Se un pacchetto corrisponde alla condizione impostata in una regola, si verifica l'azione corrispondente alla corrispondenza.
Le regole NAT per Public NAT supportano la corrispondenza degli indirizzi di origine e di destinazione:
- Nelle regole basate sull'origine, i pacchetti vengono associati in base al loro indirizzo IP di origine. Sono supportati solo gli indirizzi di origine IPv4.
- Nelle regole basate sulla destinazione, i pacchetti vengono associati in base al loro indirizzo IP di destinazione. Sono supportati solo gli indirizzi di destinazione IPv4.
Non è consentito combinare condizioni basate sull'origine e sulla destinazione in una singola regola NAT. Per maggiori informazioni, consulta le 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 sull'origine
L'esempio seguente mostra come utilizzare le regole NAT basate sull'origine.
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 con IP forwarding abilitato, come descritto nell'esempio seguente.
In questo esempio, Cloud NAT è configurato in Subnet A. Nella subnet, un'istanza VM con l'indirizzo IP interno principale 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 NAT203.0.113.10per 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 NAT203.0.113.20per inviare traffico a qualsiasi destinazione internet. - Se un pacchetto ha origine dall'indirizzo IP
10.1.1.2o dall'intervallo IP10.2.1.0/24, la VM deve utilizzare l'indirizzo IP NAT203.0.113.30per inviare traffico a qualsiasi destinazione internet.
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 1 basata sull'origine: se l'indirizzo di origine è
192.168.1.0/24, utilizza203.0.113.10per inviare traffico a internet. - Regola 2 basata sull'origine: se l'indirizzo di origine è
192.168.2.0/24, utilizza203.0.113.20per inviare traffico a internet. - La regola predefinita: per tutti gli altri pacchetti, utilizza
203.0.113.30per inviare 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 un altro esempio di 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 alcuni indirizzi IP. Ti consigliamo di convertire il traffico verso queste destinazioni dalle tue Google Cloud VM nelle subnet private con SNAT utilizzando solo 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.20per inviare traffico alla destinazione198.51.100.20/30. - Le VM devono utilizzare l'indirizzo IP NAT
203.0.113.30per inviare traffico alla destinazione198.51.100.30o198.51.100.31. - Le VM devono utilizzare l'indirizzo IP NAT
203.0.113.40per 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 traffico a qualsiasi destinazione.
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:
- Crea un gateway chiamato
Cloud NAT Gateway 1perSubnet-1con l'indirizzo IP NAT203.0.113.40e aggiungi le seguenti regole:- Regola NAT 1 in
Cloud NAT Gateway 1: quando la destinazione è198.51.100.20/30, utilizza203.0.113.20per NAT. - Regola NAT 2 in
Cloud NAT Gateway 1: quando la destinazione è198.51.100.30o198.51.100.31, utilizza203.0.113.30per NAT.
- Regola NAT 1 in
- Crea un gateway chiamato
Cloud NAT Gateway 2per le altre subnet della regione e assegna l'indirizzo IP NAT203.0.113.10. In questo passaggio non sono necessarie regole NAT.
Specifiche delle regole NAT
- Cloud NAT supporta le 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:
- La regola predefinita viene applicata se non viene trovata alcuna corrispondenza con altre regole NAT nella stessa configurazione NAT.
- La priorità della regola predefinita è
65001. - Per le regole basate sull'origine e sulla destinazione, l'intervallo CIDR IP della regola predefinita è
0.0.0.0/0. - La regola predefinita non si applica ai pacchetti inoltrati. Per utilizzare NAT per questi pacchetti, la configurazione NAT deve includere una regola basata sull'origine corrispondente. Per maggiori informazioni, consulta Regole basate sull'origine.
- Le regole Cloud NAT sono supportate solo quando il valore dell'opzione di allocazione 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 di livello Standard nella stessa regola (inclusa la regola predefinita).
Gli intervalli IP CIDR nelle condizioni di corrispondenza non devono sovrapporsi tra le regole NAT. Al massimo, una regola può essere applicata a un determinato pacchetto. Se un pacchetto corrisponde a una regola basata sull'origine e a una basata sulla destinazione, Cloud NAT applica la regola con la priorità più alta.
Non puoi creare una regola NAT con
0.0.0.0/0come intervallo di origine o di destinazione perché viene utilizzato dalla regola predefinita.Gli indirizzi IP NAT nelle regole NAT non devono sovrapporsi.
Una regola deve avere un
Activenon vuoto o unDrainindirizzo IP non vuoto. Se la regola ha un indirizzo IPActivevuoto, le nuove connessioni che corrispondono alla regola NAT vengono eliminate.Non è possibile aggiungere regole NAT a un gateway NAT con il mapping indipendente dall'endpoint (EIM) abilitato. Non puoi abilitare EIM su un gateway NAT che contiene regole NAT.
Il gateway NAT utilizza il valore di configurazione delle porte minime per VM per allocare le porte di origine alle VM per ogni regola NAT. Con 64.512 porte disponibili per indirizzo IP NAT, questo valore di configurazione determina il numero totale di VM che un indirizzo IP NAT può supportare. Se una VM esaurisce le porte allocate per una regola specifica, le nuove connessioni che corrispondono a quella regola vengono eliminate, anche se altre regole hanno porte disponibili.
Ad esempio, considera una subnet con 16 VM in cui il gateway NAT è configurato con 4096 porte per VM. Il gateway ha due regole NAT (
rule-1con un indirizzo IP NAT erule-2con due indirizzi IP NAT) oltre alla regola NAT predefinita con due indirizzi IP NAT. In questo esempio, la regola predefinita erule-2hanno una capacità sufficiente per allocare il numero di porte richiesto per tutte le VM. Tuttavia,rule-1non può fornire l'allocazione completa per tutte le 16 VM (16 × 4096) perché il suo singolo indirizzo IP supporta solo 64.512 porte. Di conseguenza, il traffico che corrisponde arule-1potrebbe essere eliminato per qualsiasi VM che non riceve l'allocazione completa delle porte.Per ridurre al minimo le allocazioni di porte inattive quando si utilizzano regole basate sull'origine, Cloud NAT alloca le porte a un endpoint VM solo se il suo indirizzo IP interno principale o alias corrisponde all'indirizzo di origine specificato nella regola NAT. Ad esempio, se una regola specifica
10.1.1.1, ma a una VM è assegnato10.1.1.2, Cloud NAT non alloca le porte a quella VM per quella regola specifica.Tuttavia, se una VM idonea ha IP forwarding abilitato, le porte vengono sempre allocate perché la VM può inoltrare i pacchetti per altre origini.
Linguaggio delle espressioni delle regole
Le regole NAT vengono scritte utilizzando Common Expression Language sintassi.
Un'espressione richiede due componenti:
- Attributi che possono essere esaminati 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 dell'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 di uguaglianza. x == y restituisce
true se x è uguale a
y. |
Espressioni di esempio
Puoi associare i pacchetti in base all'indirizzo di origine o di destinazione, ma non a entrambi.
Esempi di corrispondenza basata sull'origine
Associa i pacchetti con l'indirizzo IP di origine 10.0.0.25:
"source.ip == '10.0.0.25'"
Associa i pacchetti con l'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'"
Associa i pacchetti con l'intervallo di indirizzi IP di origine 10.0.2.0/24:
"inIpRange(source.ip, '10.0.2.0/24')"
Associa i pacchetti con l'indirizzo IP di origine 10.0.0.25 o l'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
Associa i pacchetti con l'indirizzo IP di destinazione 198.51.100.20:
"destination.ip == '198.51.100.20'"
Associa i pacchetti con l'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'"
Associa i pacchetti con l'intervallo di indirizzi IP di destinazione 198.51.100.10/30:
"inIpRange(destination.ip, '198.51.100.10/30')"
Associa i pacchetti con l'indirizzo IP di destinazione 198.51.100.20 o l'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')"