Règles Cloud NAT

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

Les règles Cloud NAT pour Public NAT sont compatibles avec la traduction d'adresse réseau source (SNAT, Source Network Address Translation) 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 Public NAT, 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 l'action correspondante. Une fois les règles NAT spécifiées, chaque paquet est mis en correspondance avec chacune des règles 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 Public NAT sont compatibles avec la mise en correspondance des adresses sources 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 sources 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.

Exemples de configuration de règles Cloud NAT

Cette section fournit des exemples de configuration pour les règles NAT basées sur la source et la destination.

Règles basées sur la source

L'exemple suivant montre comment utiliser des règles NAT basées sur la source.

Par défaut, lorsqu'une passerelle Cloud NAT est configurée pour le trafic IPv4 d'un sous-réseau, elle effectue le NAT pour l'adresse IP interne principale et les plages d'adresses IP d'alias de toute instance de VM du sous-réseau. Avec des règles NAT basées sur la source, vous pouvez également configurer le NAT pour les instances de VM pour lesquelles le transfert IP est activé.

Dans cet exemple, Cloud NAT est configuré dans Subnet A. Dans ce sous-réseau, une instance de VM avec l'adresse IP interne principale 10.1.1.2 et une plage d'adresses IP d'alias 10.2.1.0/24 envoie du trafic à Internet. Tenez compte des exigences suivantes pour l'instance de VM :

  • Si un paquet provient de la plage d'adresses IP 192.168.1.0/24, la VM doit utiliser l'adresse IP NAT 203.0.113.10 pour envoyer du trafic vers n'importe quelle destination Internet.
  • Si un paquet provient de la plage d'adresses IP 192.168.2.0/24, la VM doit utiliser l'adresse IP NAT 203.0.113.20 pour envoyer du trafic vers n'importe quelle destination Internet.
  • Si un paquet provient de l'adresse IP 10.1.1.2 ou de la plage d'adresses IP 10.2.1.0/24, la VM doit utiliser l'adresse IP NAT 203.0.113.30 pour envoyer du trafic vers n'importe quelle destination Internet.
Configuration Cloud NAT avec des règles basées sur la source.
Configuration Cloud NAT avec deux règles basées sur la source (cliquez pour agrandir).

Pour répondre à ces exigences, vous devez créer deux règles NAT basées sur la source pour les paquets transférés, ainsi que la règle par défaut pour les paquets provenant de l'adresse IP interne principale et de la plage d'adresses IP d'alias de l'instance de VM :

  • Règle basée sur la source 1 : si l'adresse source est 192.168.1.0/24, utiliser 203.0.113.10 pour envoyer le trafic vers Internet
  • Règle basée sur la source 2 : si l'adresse source est 192.168.2.0/24, utiliser 203.0.113.20 pour envoyer le trafic sur Internet
  • Règle par défaut : pour tous les autres paquets, utiliser 203.0.113.30 pour envoyer le trafic vers Internet

Si l'adresse source d'un paquet transféré par l'instance de VM ne correspond ni à la règle 1 ni à la règle 2, le paquet est supprimé.

Pour découvrir un autre exemple d'utilisation des règles NAT basées sur la source, consultez Cloud WAN en détail : présentation approfondie de ses capacités différenciées de mise en réseau.

Règles basées sur la destination

L'exemple suivant montre comment utiliser des règles NAT lorsque la destination n'autorise l'accès qu'à partir de quelques adresses IP. Nous recommandons que le trafic vers ces destinations provenant de vos VM Google Cloud situées dans des sous-réseaux privés ne fasse l'objet d'une traduction d'adresse réseau 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 les destinations 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 les règles NAT de Subnet-1 (10.10.10.0/24) sont différentes de celles 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, utiliser 203.0.113.20 pour le NAT
    2. Règle NAT 2 dans Cloud NAT Gateway 1 : lorsque la destination est 198.51.100.30 ou 198.51.100.31, utiliser 203.0.113.30 pour le NAT
  2. Créez une passerelle appelée Cloud NAT Gateway 2 pour les autres sous-réseaux de la région et attribuez-lui 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 soit sur l'adresse source, soit sur l'adresse de destination, mais pas sur 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 ne correspond dans la même configuration NAT.
    • La règle par défaut a pour priorité 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.
    • La règle par défaut ne s'applique pas aux paquets transférés. Pour utiliser le NAT pour ces paquets, votre configuration NAT doit inclure une règle basée sur la source correspondante. Pour en savoir plus, consultez Règles basées sur la source.
  • 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 pour la règle par défaut).

  • Les plages CIDR d'adresses IP dans les conditions de correspondance des règles NAT ne doivent pas se chevaucher. 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 cette valeur 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 comporte 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 comportant des règles NAT.

De plus, toutes les VM se voient attribuer des ports en fonction du nombre minimal de ports par VM de 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 désignés dans l'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 comprise 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 correspondent à des informations concernant 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 les attributs pour définir des expressions de règle.

Opération Description
inIpRange(string, string) -> bool inIpRange(x, y) renvoie true si la plage CIDR d'adresses IP 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 mise en 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'"

Faites correspondre les paquets avec les adresses 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 mise en correspondance basée sur la destination

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

"destination.ip == '198.51.100.20'"

Faites correspondre les paquets avec les adresses 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 avec 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