Règles Cloud NAT

Cette page présente les règles Cloud NAT pour le NAT public. Ces règles vous permettent de définir la manière dont Cloud NAT est utilisé pour se connecter à Internet.

Les règles Cloud NAT pour la NAT publique sont compatibles avec la traduction d'adresse réseau source (SNAT) basée sur l'adresse source (aperçu) ou de destination.

Règles NAT

Par défaut, lorsque vous configurez une passerelle Cloud NAT pour la NAT publique, les paquets traduits par cette passerelle NAT utilisent le même ensemble d'adresses IP NAT pour atteindre toutes les adresses Internet. Si vous avez besoin de mieux contrôler les paquets traduits par Cloud NAT, vous pouvez ajouter des règles NAT.

Une règle NAT définit une condition de correspondance et une action correspondante. Une fois les règles NAT spécifiées, chaque paquet est mis en correspondance avec chaque règle NAT. Si un paquet correspond à la condition définie dans une règle, l'action associée à cette correspondance se produit.

Les règles NAT pour la NAT publique sont compatibles avec la mise en correspondance des adresses source et de destination :

  • Dans les règles basées sur la source (aperçu), les paquets sont mis en correspondance en fonction de leur adresse IP source. Seules les adresses source IPv4 sont acceptées.
  • Dans les règles basées sur la destination, les paquets sont mis en correspondance en fonction de leur adresse IP de destination. Seules les adresses de destination IPv4 sont acceptées.

Il n'est pas autorisé de combiner des conditions basées sur la source et la destination dans une même règle NAT. Pour en savoir plus, consultez Spécifications des règles NAT.

Exemple de configuration d'une règle Cloud NAT

L'exemple suivant montre comment utiliser des règles NAT lorsque votre destination n'autorise l'accès qu'à partir de quelques adresses IP. Nous recommandons que le trafic vers ces destinations depuis vos VM Trusted Cloud situées dans des sous-réseaux privés ne soit traduit par la SNAT que par les adresses IP autorisées. Nous vous recommandons de ne pas utiliser ces adresses IP pour d'autres destinations.

Tenez compte des exigences suivantes pour les VM dans Subnet-1 (10.10.10.0/24), qui se trouve dans la région A du réseau VPC test :

  • Les VM doivent utiliser l'adresse IP NAT 203.0.113.20 pour envoyer du trafic vers la destination 198.51.100.20/30.
  • Les VM doivent utiliser l'adresse IP NAT 203.0.113.30 pour envoyer du trafic vers la destination 198.51.100.30 ou 198.51.100.31.
  • Les VM doivent utiliser l'adresse IP NAT 203.0.113.40 pour envoyer du trafic vers n'importe quelle autre destination Internet.

Ce réseau VPC contient également deux autres sous-réseaux dans la même région. Ces VM doivent utiliser l'adresse IP NAT 203.0.113.10 pour envoyer du trafic vers n'importe quelle destination.

Configuration Cloud NAT avec deux passerelles Cloud NAT.
Configuration Cloud NAT avec deux passerelles Cloud NAT (cliquez pour agrandir).

Vous pouvez utiliser des règles NAT dans cet exemple, mais vous avez besoin de deux passerelles NAT, car Subnet-1 (10.10.10.0/24) possède des règles NAT différentes des autres sous-réseaux. Pour créer cette configuration, procédez comme suit :

  1. Créez une passerelle nommée Cloud NAT Gateway 1 pour Subnet-1 avec l'adresse IP NAT 203.0.113.40, puis ajoutez les règles suivantes :
    1. Règle NAT 1 dans Cloud NAT Gateway 1 : lorsque la destination est 198.51.100.20/30, utilisez 203.0.113.20 pour la NAT.
    2. Règle NAT 2 dans Cloud NAT Gateway 1 : lorsque la destination est 198.51.100.30 ou 198.51.100.31, utilisez 203.0.113.30 pour la NAT.
  2. Créez une passerelle appelée Cloud NAT Gateway 2 pour les autres sous-réseaux de la région et attribuez l'adresse IP NAT 203.0.113.10. Aucune règle NAT n'est nécessaire à cette étape.

Spécifications des règles NAT

  • Cloud NAT est compatible avec les règles basées sur la source et la destination. Chaque règle définit une condition basée sur l'adresse source ou de destination, mais pas les deux.
  • La priorité d'une règle identifie de manière unique une règle NAT, de 0 (priorité la plus élevée) à 65 000 (priorité la plus faible). Deux règles ne peuvent pas avoir la même priorité.
  • Chaque configuration NAT inclut une règle par défaut :
    • La règle par défaut est appliquée si aucune autre règle NAT n'est mise en correspondance dans la même configuration NAT.
    • La priorité de la règle par défaut est 65001.
    • Pour les règles basées sur la source et celles basées sur la destination, la plage CIDR d'adresses IP de la règle par défaut est 0.0.0.0/0.
  • Les règles Cloud NAT ne sont acceptées que lorsque la valeur de l'option d'allocation d'adresses IP NAT est MANUAL_ONLY.
  • Toutes les adresses IP configurées dans une règle donnée doivent être du même niveau.

    Vous ne pouvez pas utiliser à la fois des adresses IP de niveau Premium et de niveau Standard dans la même règle (y compris la règle par défaut).

  • Les plages CIDR d'adresses IP dans les conditions de correspondance ne doivent pas se chevaucher dans les règles NAT. Une seule règle peut s'appliquer à un paquet donné. Si un paquet correspond à la fois à une règle basée sur la source et à une règle basée sur la destination, Cloud NAT applique la règle dont la priorité est la plus élevée.

    Vous ne pouvez pas créer de règle NAT avec 0.0.0.0/0 comme plage source ou de destination, car elle est utilisée par la règle par défaut.

  • Les adresses IP NAT des règles NAT ne doivent pas se chevaucher.

  • Une règle doit contenir une adresse IP Active ou Drain non vide. Si la règle possède une adresse IP Active vide, les nouvelles connexions correspondant à la règle NAT sont supprimées.

  • Vous ne pouvez pas ajouter de règles NAT à une passerelle NAT sur laquelle le mappage indépendant du point de terminaison est activé. Vous ne pouvez pas activer le mappage indépendant du point de terminaison sur une passerelle NAT dotée de règles NAT.

En outre, toutes les VM se voient attribuer des ports en fonction de la valeur du nombre minimal de ports par VM dans chaque règle Cloud NAT. Si les ports alloués à une VM à partir d'une règle NAT sont tous utilisés, les nouvelles connexions correspondant à la règle NAT sont supprimées.

Par exemple, si vous configurez 4 096 ports par VM et que vous disposez de 16 VM et de deux règles NAT (rule1 avec une adresse IP et rule2 avec deux adresses IP), en plus de la règle par défaut (default) dotée de deux adresses IP, les 16 VM pourraient recevoir 4 096 ports dans chaque groupe de règles NAT. Dans cet exemple, les VM de la règle default ou rule2 ne présentent aucun problème, mais rule1 ne peut pas allouer de ports à toutes ses VM. Par conséquent, le trafic provenant des VM qui doit transiter par rule1 peut être supprimé et semble manquer de ressources, car il n'utilise pas la règle par défaut.

Langage d'expression des règles

Les règles NAT sont écrites à l'aide de la syntaxe Common Expression Language.

Une expression nécessite deux composants :

  • Des attributs, pouvant être inspectés dans les expressions de règle
  • Des opérations, pouvant être effectuées sur les attributs dans le cadre d'une expression

Par exemple, l'expression suivante utilise les attributs destination.ip et 198.51.100.0/24 dans l'opération inIpRange(). Dans ce cas, l'expression renvoie "true" si destination.ip est compris dans la plage d'adresses IP 198.51.100.0/24.

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

Les règles NAT n'acceptent que les opérations et attributs suivants :

Attributs

Les attributs représentent des informations provenant d'un paquet sortant, telles que les adresses IP source et de destination.

Nom de l'attribut Description
source.ip Adresse IP source du paquet
destination.ip Adresse IP de destination du paquet

Opérations

La documentation de référence suivante décrit les opérateurs que vous pouvez utiliser avec des attributs pour définir des expressions de règle.

Opération Description
inIpRange(string, string) -> bool inIpRange(x, y) renvoie true si la plage d'adresses IP CIDR y contient l'adresse IP x.
|| Opérateur logique. x || y renvoie true si x ou y est true.
== Opérateur "égal à". x == y renvoie true si x est égal à y.

Exemples d'expressions

Vous pouvez faire correspondre les paquets en fonction de l'adresse source ou de l'adresse de destination, mais pas des deux.

Exemples de correspondance basée sur la source

Faites correspondre les paquets avec l'adresse IP source 10.0.0.25 :

"source.ip == '10.0.0.25'"

Établissez une correspondance entre les paquets et l'adresse IP source 10.0.0.25 ou 10.0.0.26 :

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

Faites correspondre les paquets avec la plage d'adresses IP sources 10.0.2.0/24 :

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

Faites correspondre les paquets avec l'adresse IP source 10.0.0.25 ou la plage d'adresses IP sources 10.0.2.0/24 :

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

Exemples de correspondance basée sur la destination

Faites correspondre les paquets à l'adresse IP de destination 198.51.100.20 :

"destination.ip == '198.51.100.20'"

Faites correspondre les paquets avec l'adresse IP de destination 198.51.100.20 ou 198.51.100.21 :

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

Faites correspondre les paquets à la plage d'adresses IP de destination 198.51.100.10/30 :

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

Faites correspondre les paquets avec l'adresse IP de destination 198.51.100.20 ou la plage d'adresses IP de destination 198.51.100.10/30 :

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

Étapes suivantes