Règles Cloud NAT

La fonctionnalité des règles NAT permet de créer des règles d'accès qui définissent la façon dont Cloud NAT est utilisé pour se connecter à Internet. Les règles NAT sont compatibles avec une NAT source basée sur l'adresse de destination.

Lorsque vous configurez une passerelle NAT sans règles NAT, les VM utilisant cette passerelle NAT se servent du même ensemble d'adresses IP NAT pour atteindre toutes les adresses Internet. Si vous avez besoin de mieux contrôler les paquets qui transitent 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.

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 Google Cloud situées dans des sous-réseaux privés ne soit traduit par la NAT source 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 la NAT source avec 203.0.113.20.
    2. Règle NAT 2 dans Cloud NAT Gateway 1 : lorsque la destination est 198.51.100.30 ou 198.51.100.31, utilisez la NAT source avec 203.0.113.30.
  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

Avant d'utiliser les règles NAT, tenez compte des spécifications suivantes :

  • Un numéro de règle identifie de manière unique une règle NAT. Deux règles ne peuvent pas posséder le même numéro.
  • 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.
    • Le numéro de la règle par défaut est 65001.
    • La plage CIDR d'adresses IP de destination 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 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 de destination dans la condition de correspondance ne doivent pas se chevaucher entre les règles NAT. Une seule règle peut correspondre à n'importe quel paquet donné.

    Vous ne pouvez pas créer une règle NAT avec une plage CIDR d'adresses IP de destination 0.0.0.0/0, car cette plage est utilisée dans 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 l'adresse IP de destination.

Nom de l'attribut Description
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".
== Égal à l'opérateur. x == y renvoie "true" si x est égal à y.

Exemples d'expressions

Établissez une correspondance entre le trafic et l'adresse IP de destination 198.51.100.20.

"destination.ip == '198.51.100.20'"

Établissez une correspondance entre le trafic et l'adresse IP de destination 198.51.100.10/30 ou 198.51.100.20.

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

Étape suivante