Cloud NAT-Regeln
Mit dem Feature „NAT-Regeln“ können Sie Zugriffsregeln erstellen, die festlegen, wie Cloud NAT für die Verbindung mit dem Internet verwendet wird. NAT-Regeln unterstützen Quell-NAT basierend auf der Zieladresse.
Wenn Sie ein NAT-Gateway ohne NAT-Regeln konfigurieren, verwenden die VMs, die dieses NAT-Gateway verwenden, denselben NAT-IP-Adressbereich, um alle Internetadressen zu erreichen. Wenn Sie mehr Kontrolle über Pakete benötigen, die Cloud NAT durchlaufen, können Sie NAT-Regeln hinzufügen. Eine NAT-Regel definiert eine Übereinstimmungsbedingung und eine entsprechende Aktion. Nachdem Sie NAT-Regeln angegeben haben, wird jedes Paket mit jeder NAT-Regel abgeglichen. Wenn ein Paket die in einer Regel festgelegte Bedingung erfüllt, wird die entsprechende Aktion ausgeführt.
Beispielkonfiguration für Cloud NAT-Regel
Das folgende Beispiel zeigt, wie NAT-Regeln verwendet werden, wenn Ihr Ziel den Zugriff von nur wenigen IP-Adressen zulässt. Wir empfehlen, dass für Traffic von Ihren Google Cloud -VMs in privaten Subnetzen zu solchen Zielen Quell-NAT nur mit den zulässigen IP-Adressen durchgeführt wird. Wir empfehlen, diese IP-Adressen nicht für andere Ziele zu verwenden.
Beachten Sie die folgenden Anforderungen für VMs in Subnet-1
(10.10.10.0/24
), die sich in Region A des VPC-Netzwerks test
befinden:
- Die VMs müssen die NAT-IP-Adresse
203.0.113.20
verwenden, um Traffic an das Ziel198.51.100.20/30
zu senden. - Die VMs müssen die NAT-IP-Adresse
203.0.113.30
verwenden, um Traffic an das Ziel198.51.100.30
oder198.51.100.31
zu senden. - Die VMs müssen die NAT-IP-Adresse
203.0.113.40
verwenden, um Traffic an ein anderes Internetziel zu senden.
Dieses VPC-Netzwerk enthält außerdem zwei zusätzliche Subnetze in derselben Region. Diese VMs müssen die NAT-IP-Adresse 203.0.113.10
verwenden, um Traffic an ein beliebiges Ziel zu senden.
Sie können für dieses Beispiel NAT-Regeln verwenden, benötigen aber zwei NAT-Gateways, da Subnet-1
(10.10.10.0/24
) NAT-Regeln hat, die sich von den anderen Subnetzen unterscheiden. Gehen Sie so vor, um diese Konfiguration zu erstellen:
- Erstellen Sie ein Gateway namens
Cloud NAT Gateway 1
fürSubnet-1
mit der NAT-IP-Adresse203.0.113.40
und fügen Sie die folgenden Regeln hinzu:- NAT-Regel 1 in
Cloud NAT Gateway 1
: Verwenden Sie Quell-NAT mit203.0.113.20
, wenn das Ziel198.51.100.20/30
ist. - NAT-Regel 2 in
Cloud NAT Gateway 1
: Verwenden Sie Quell-NAT mit203.0.113.30
, wenn das Ziel198.51.100.30
oder198.51.100.31
ist.
- NAT-Regel 1 in
- Erstellen Sie ein Gateway namens
Cloud NAT Gateway 2
für die anderen Subnetze der Region und weisen Sie die NAT-IP-Adresse203.0.113.10
zu. In diesem Schritt sind keine NAT-Regeln erforderlich.
Spezifikationen für NAT-Regeln
Beachten Sie die folgenden Spezifikationen, bevor Sie mit NAT-Regeln arbeiten:
- Eine Regelnummer identifiziert eine NAT-Regel eindeutig. Zwei Regeln können nicht dieselbe Regelnummer haben.
- Jede NAT-Konfiguration hat eine Standardregel:
- Die Standardregel wird angewendet, wenn in derselben NAT-Konfiguration keine andere NAT-Regel übereinstimmt.
- Die Regelnummer der Standardregel ist
65001
. - Der Ziel-IP-CIDR-Bereich der Standardregel ist
0.0.0.0/0
.
- Cloud NAT-Regeln werden nur unterstützt, wenn der Wert der Option für die NAT-IP-Zuweisung
MANUAL_ONLY
ist. Alle in einer bestimmten Regel konfigurierten IP-Adressen müssen derselben Stufe angehören.
Sie können nicht IP-Adressen sowohl der Premium-Stufe als auch der Standardstufe in derselben Regel (einschließlich der Standardregel) verwenden.
Ziel-IP-CIDR-Bereiche in der Übereinstimmungsbedingung dürfen sich nicht über NAT-Regeln hinweg überschneiden. Es darf höchstens eine Regel geben, die mit einem bestimmten Paket übereinstimmen kann.
Sie können keine NAT-Regel mit dem CIDR-Ziel-IP-Bereich
0.0.0.0/0
erstellen, da dieser Bereich in der Standardregel verwendet wird.NAT-IP-Adressen in NAT-Regeln dürfen sich nicht überschneiden.
Eine Regel muss entweder eine nicht leere
Active
- oder eine nicht leereDrain
-IP-Adresse haben. Wenn die Regel eine leereActive
-IP-Adresse hat, werden neue Verbindungen, die der NAT-Regel entsprechen, beendet.NAT-Regeln können keinem NAT-Gateway hinzugefügt werden, für das die endpunktunabhängige Zuordnung aktiviert ist. Sie können die endpunktunabhängige Zuordnung nicht für ein NAT-Gateway aktivieren, das NAT-Regeln enthält.
Darüber hinaus wird allen VMs eine Anzahl von Ports zugewiesen, die mindestens der für die jeweilige Cloud NAT-Regel festgelegten Mindestanzahl an Ports pro VM entspricht. Wenn die einer VM über eine NAT-Regel zugewiesenen Ports aufgebraucht sind, werden neue Verbindungen, die der NAT-Regel entsprechen, verworfen.
Beispiel: Sie konfigurieren 4.096 Ports pro VM mit 16 VMs und 2 NAT-Regeln (rule1
mit 1 IP-Adresse und rule2
mit 2 IP-Adressen) neben der Standardregel (default
) mit 2 IP-Adressen. Alle 16 VMs erhalten dann 4.096 Ports in jedem Satz von NAT-Regeln. In diesem Beispiel treten in default
oder rule2
keine Probleme für alle ihre VMs auf, aber rule1
kann keine Ports für alle zugehörigen VMs zuweisen.
Daher kann Traffic von VMs, die rule1
durchlaufen müssen, verworfen werden und es kann Anzeichen dafür geben, dass es keine Ressourcen mehr gibt, da für den Traffic nicht die Standardregel verwendet wird.
Regelausdruckssprache
NAT-Regeln werden in der Common Expression Language-Syntax geschrieben.
Ein Ausdruck erfordert zwei Komponenten:
- Attribute, die in Regelausdrücken geprüft werden können
- Vorgänge, die für die Attribute als Teil eines Ausdrucks ausgeführt werden können
Der folgende Ausdruck verwendet beispielsweise die Attribute destination.ip
und 198.51.100.0/24
im Vorgang inIpRange()
. In diesem Fall gibt der Ausdruck „true“ zurück, wenn destination.ip
im IP-Adressbereich 198.51.100.0/24
liegt.
inIpRange(destination.ip, '198.51.100.0/24')
NAT-Regeln unterstützen nur die folgenden Attribute und Vorgänge:
Attribute
Attribute stellen Informationen aus einem ausgehenden Paket dar, z. B. die Ziel-IP-Adresse.
Attributname | Beschreibung |
---|---|
destination.ip |
Ziel-IP-Adresse des Pakets |
Vorgänge
In der folgenden Referenz werden die Operatoren beschrieben, die Sie mit Attributen zum Definieren von Regelausdrücken verwenden können.
Vorgang | Beschreibung |
---|---|
inIpRange(string, string) -> bool |
inIpRange(X, Y) gibt „true“ zurück, wenn der IP-CIDR-Bereich Y die IP-Adresse X enthält. |
|| |
Logischer Operator. x || y gibt „true“ zurück, wenn x oder y den Wert „true“ hat. |
== |
Gleichheitsoperator. x == y gibt „true“ zurück, wenn x gleich y ist. |
Beispielausdrücke
Traffic mit der Ziel-IP-Adresse 198.51.100.20
abgleichen:
"destination.ip == '198.51.100.20'"
Traffic mit der Ziel-IP-Adresse 198.51.100.10/30
oder 198.51.100.20
abgleichen
"inIpRange(destination.ip, '198.51.100.10/30') || destination.ip == '198.51.100.20'"