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 que par ces adresses IP autorisées. De même, nous vous recommandons de ne pas utiliser ces adresses IP pour d'autres destinations. Tenez compte des exigences suivantes pour les VM se trouvant dans le sous-réseau 10.10.10.0/24 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.

Pour tous les autres sous-réseaux du réseau VPC test, les 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 (cliquez pour agrandir)
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 le sous-réseau 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 NAT (NAT GW 1) pour le sous-réseau S1 avec l'adresse IP NAT 203.0.113.40, puis ajoutez les règles suivantes :
    1. Règle NAT 1 dans NAT GW 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 NAT GW 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 NAT 2 (NAT GW 2) pour tous les autres sous-réseaux (répertoriez tous les sous-réseaux à l'exception de S1) 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.
  • 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.
  • Les plages CIDR des adresses IP de destination dans la condition de correspondance ne doivent pas se chevaucher dans les règles NAT. Une seule règle peut correspondre à n'importe quel paquet donné.
  • 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