Adresses IP et ports

Cette page décrit comment les passerelles Cloud NAT utilisent les adresses IP et comment elles allouent des ports sources aux instances de machines virtuelles (VM) Compute Engine et aux nœuds Google Kubernetes Engine (GKE) qui les utilisent.

Avant d'examiner ces informations, consultez la page Présentation de Cloud NAT.

Adresses IP NAT publiques

Une adresse IP NAT publique est une adresse IP externe régionale qui est routable sur Internet. Une VM sans adresse IP externe, qui se trouve dans un sous-réseau desservi par une passerelle NAT publique, utilise une adresse IP NAT publique lorsqu'elle envoie des paquets à une destination sur Internet.

Pour attribuer des adresses IP NAT (traduction d'adresse réseau) à une passerelle NAT publique, utilisez l'une des méthodes suivantes:

  • Allocation automatique d'adresses IP NAT Lorsque vous sélectionnez cette méthode ou que vous choisissez les valeurs par défaut de Google Cloud, la fonctionnalité NAT publique ajoute automatiquement des adresses IP externes régionales à votre passerelle en fonction des éléments suivants:

    • Le niveau de réseau que vous sélectionnez
    • Le nombre de VM qui utilisent la passerelle
    • Nombre de ports réservés pour chaque VM

    La fonctionnalité NAT publique supprime également automatiquement une adresse IP NAT lorsqu'elle n'a plus besoin de ports sources sur cette adresse.

    Voici les caractéristiques de l'allocation automatique d'adresses IP NAT:

    • Lorsqu'une passerelle NAT publique ajoute une adresse IP NAT, elle crée une adresse IP externe régionale statique (réservée) au niveau du réseau que vous avez sélectionné au moment de la configuration de la passerelle. Par exemple, si vous avez sélectionné le niveau Premium, la passerelle NAT publique crée l'adresse IP dans ce niveau. Les niveaux de réseau compatibles sont le niveau Premium (option par défaut) et le niveau Standard.

      Les adresses IP NAT ajoutées automatiquement peuvent être affichées dans la liste des adresses IP externes statiques. Ces adresses ne sont pas comptabilisées dans les quotas par projet.

    • Si vous modifiez le niveau de réseau d'une passerelle NAT publique, les adresses IP existantes de cette passerelle sont libérées et un nouvel ensemble d'adresses IP du niveau sélectionné est attribué.
    • Avec l'allocation automatique, vous ne pouvez pas prédire l'adresse IP suivante qui sera allouée. Si vous avez besoin de connaître l'ensemble des adresses IP NAT possibles à l'avance (par exemple, pour créer une liste d'autorisation), vous devez utiliser l'attribution manuelle d'adresses IP NAT.
    • Lorsque les adresses IP NAT ajoutées automatiquement ne sont plus utilisées, elles sont supprimées. Cependant, la NAT publique ne libère une adresse que lorsque la dernière VM attribuée à l'adresse n'utilise plus de port. Ainsi, lorsque le nombre de VM utilisant la NAT publique diminue, vous ne constaterez peut-être pas de réduction du nombre d'adresses IP . En effet, Cloud NAT ne réaffecte pas de manière dynamique les VM d'une adresse IP à une autre, car la réaffectation empêcherait les connexions établies. Tant qu'il y a au moins une VM utilisant une adresse IP, cette adresse IP reste active et de nouvelles VM peuvent lui être attribuées.

      Si vous souhaitez pouvoir réaffecter manuellement des VM d'une adresse IP à une autre afin de réduire l'utilisation des adresses IP, utilisez les attributions d'adresses IP NAT manuelles. L'attribution manuelle d'adresses IP NAT permet de drainer des adresses IP NAT publiques.

    • Si vous passez ultérieurement à l'attribution manuelle d'adresses IP NAT, les adresses IP externes régionales automatiquement réservées sont supprimées. Pour en savoir plus, consultez la section Changer de méthode d'attribution.

  • Attribution manuelle des adresses IP NAT Lorsque vous sélectionnez cette option, vous créez et attribuez manuellement des adresses IP externes régionales statiques (réservées) à votre passerelle NAT publique. Vous pouvez attribuer manuellement des adresses IP à partir du niveau Premium, du niveau Standard ou des deux, sous conditions.

    • Vous pouvez augmenter ou diminuer le nombre d'adresses IP NAT attribuées manuellement en modifiant la passerelle Cloud NAT.
    • Lorsque vous utilisez l'attribution manuelle d'adresses IP NAT, vous devez calculer le nombre d'adresses IP externes régionales dont vous avez besoin pour la passerelle NAT publique. Si votre passerelle n'a plus d'adresses IP NAT, la NAT publique supprime les paquets. Les paquets supprimés sont consignés lorsque vous utilisez la journalisation Cloud NAT pour activer la journalisation des erreurs.
    • Pour obtenir des exemples de calculs, consultez l'exemple de réservation de port.

Pour connaître le nombre maximal d'adresses IP NAT allouées automatiquement ou attribuées manuellement, consultez la section Limites de Cloud NAT.

Attribuer manuellement une combinaison d'adresses IP de niveau Premium et Standard

Lorsque vous créez une passerelle NAT publique avec la méthode d'attribution manuelle des adresses IP NAT, vous pouvez attribuer une combinaison d'adresses IP de Niveau Premium et Standard, à condition que les adresses IP des différents niveaux de réseau n'appartiennent pas à la même règle (y compris la règle par défaut).

Dans une règle (y compris la règle par défaut), toutes les adresses IP attribuées aux plages actives doivent appartenir au même niveau de réseau. Si vous essayez d'utiliser des adresses IP de différents niveaux dans le cadre de la même règle, Google Cloud refuse la configuration.

Changer de méthode d'attribution

Vous pouvez faire passer une passerelle NAT publique de l'allocation automatique d'adresses IP NAT à l'attribution manuelle des adresses IP NAT. Toutefois, les adresses IP NAT ne peuvent pas être conservées. Même si les adresses IP NAT allouées automatiquement sont statiques, elles ne peuvent pas être déplacées vers une attribution manuelle d'adresses IP NAT. Par exemple, vous ne pouvez pas commencer à utiliser une passerelle NAT publique avec des adresses IP NAT allouées automatiquement, puis utiliser ultérieurement les mêmes adresses lorsque vous passez à des adresses IP NAT attribuées manuellement.

L'ensemble d'adresses IP externes régionales utilisées par la NAT publique pour l'allocation automatique d'adresses IP NAT est différent de l'ensemble d'adresses IP externes régionales que vous pouvez choisir manuellement.

Drainer les adresses IP NAT publiques

Lorsque vous configurez une passerelle NAT publique avec l'attribution manuelle d'adresses IP NAT, vous pouvez choisir ce qui se passe lorsque vous devez réduire le nombre d'adresses IP NAT utilisées par la passerelle:

  • Si vous supprimez une adresse IP NAT attribuée manuellement, les connexions NAT établies sont immédiatement interrompues.

  • Vous pouvez choisir de drainer une adresse IP NAT attribuée manuellement. Le drainage indique à la passerelle NAT publique de cesser d'utiliser l'adresse IP NAT pour les nouvelles connexions, mais de continuer à l'utiliser pour les connexions établies. Les connexions établies sont autorisées à se fermer normalement au lieu d'être immédiatement supprimées. Pour drainer une adresse IP associée à une passerelle NAT publique qui n'utilise pas de règles NAT, consultez la section Drainer des adresses IP externes associées à la NAT. Pour drainer une adresse IP associée à une passerelle NAT qui utilise des règles NAT, consultez Mettre à jour les règles NAT.

Adresses IP NAT privées

La fonctionnalité NAT privée nécessite deux réseaux de cloud privé virtuel (VPC), chacun configuré en tant que spoke VPC sur le même hub Network Connectivity Center. Pour en savoir plus sur les spokes VPC et sur Network Connectivity Center, consultez la page Présentation des spokes VPC.

Une adresse NAT privée est une adresse IPv4 interne régionale provenant de la plage d'adresses IPv4 principale d'un sous-réseau NAT privé situé dans la même région et le même réseau VPC qu'une passerelle NAT privée. Une adresse IP NAT privée n'est pas routable sur Internet. Les adresses IP des plages d'adresses IPv4 principales des sous-réseaux NAT privés ne peuvent être utilisées que par les passerelles NAT privées. Pour créer un sous-réseau NAT privé, ajoutez un sous-réseau IPv4 uniquement à l'aide de Google Cloud CLI et de l'option --purpose=PRIVATE_NAT.

Une fois que vous avez configuré une passerelle NAT privée pour fournir des services NAT à un sous-réseau d'un réseau VPC connecté à un hub Network Connectivity Center, les VM dotées d'interfaces réseau dans ce sous-réseau peuvent envoyer des paquets aux ressources situées dans d'autres spokes VPC du hub. En sortie, Google Cloud remplace l'adresse IP source par une adresse IP du sous-réseau NAT privé associé à la passerelle.

Voici les caractéristiques des adresses IP NAT privées:

  • Vous ne pouvez pas attribuer automatiquement des adresses IP NAT privées à une passerelle NAT privée. À la place, lorsque vous créez une règle dans une passerelle NAT privée, vous spécifiez manuellement le ou les sous-réseaux NAT privés. Les sous-réseaux NAT privés doivent se trouver dans le même réseau VPC et dans la même région que la passerelle. La passerelle n'utilise que les adresses IP des plages d'adresses IPv4 principales des sous-réseaux NAT privés.
  • Pour déterminer le nombre d'adresses IP NAT que chaque sous-réseau NAT privé peut fournir, utilisez la formule suivante : 2(32 - PREFIX_LENGTH) - 4, où PREFIX_LENGTH est la longueur du masque de sous-réseau de la plage d'adresses IPv4 principale du sous-réseau NAT privé. Quatre adresses IP ne sont pas utilisables dans la plage d'adresses IPv4 principale de chaque sous-réseau.

Ports

Chaque adresse IP NAT d'une passerelle Cloud NAT (à la fois la NAT publique et la NAT privée) offre 64 512 ports sources TCP et 64 512 ports sources UDP. TCP et UDP acceptent chacun 65 536 ports par adresse IP, mais Cloud NAT n'utilise pas les 1 024 premiers ports connus (privilégiés).

Lorsqu'une passerelle Cloud NAT effectue une traduction d'adresse réseau source (SNAT) sur un paquet envoyé par une VM, elle modifie l'adresse IP NAT et le port source du paquet.

Lorsque vous créez une passerelle Cloud NAT, vous choisissez d'utiliser l'allocation de ports statique ou l'attribution de ports dynamique. Lorsque vous modifiez le mode d'attribution des ports, toutes les connexions existantes qui utilisent la passerelle NAT publique sont fermées et doivent être rétablies.

Si vous avez attribué manuellement plusieurs adresses IP externes régionales statiques (réservées) à votre passerelle NAT publique, une VM unique utilisant la passerelle peut obtenir les ports requis à partir de n'importe quelle adresse IP NAT attribuée, même à partir de plusieurs adresses IP NAT en même temps.

Allocation de ports statique

Lorsque vous configurez l'allocation de ports statique, vous spécifiez un nombre minimal de ports par instance de VM. Si vous ne spécifiez pas le nombre minimal de ports par rapport à la VM, Google Cloud utilise la valeur par défaut.

L'allocation de ports statique est activée par défaut pour la NAT publique. En revanche, la NAT privée utilise l'allocation de ports dynamique par défaut.

Étant donné que le même nombre de ports est alloué à toutes les VM, l'allocation de ports statique fonctionne mieux si toutes les VM ont une utilisation de sortie similaire. Si certaines VM utilisent plus de ports que d'autres, il est possible que les ports de la passerelle Cloud NAT soient sous-utilisés. Si l'utilisation du trafic sortant varie, envisagez de configurer l'allocation de ports dynamiques.

Si vous souhaitez configurer le mappage indépendant des points de terminaison sur votre passerelle NAT publique, vous devez utiliser l'allocation de ports statique. Le mappage indépendant du point de terminaison n'est pas disponible pour les passerelles NAT privées.

Allocation de ports dynamique

Lorsque vous configurez l'allocation de ports dynamique, vous spécifiez un nombre minimal de ports par instance de VM et un nombre maximal de ports par instance de VM.

L'allocation de ports dynamique est activée par défaut pour la NAT privée. Pour la NAT publique, vous devez configurer manuellement l'allocation de ports dynamique.

La configuration de l'allocation de ports dynamique permet à la même passerelle Cloud NAT d'allouer un nombre différent de ports par VM, en fonction de l'utilisation de la VM. Initialement, une VM se voit attribuer le nombre minimal de ports par instance de VM. Si une VM est sur le point d'épuiser tous les ports qui lui sont alloués, le nombre de ports qui lui sont attribués est doublé. La VM peut demander à plusieurs reprises un nombre maximal de ports jusqu'à atteindre le nombre maximal de ports par instance de VM. Lorsque l'utilisation des ports diminue considérablement, les ports sont libérés et peuvent être alloués à d'autres VM utilisant la même passerelle NAT.

L'allocation de ports dynamique présente les avantages suivants :

  • Le nombre de ports alloués, mais non utilisés, est réduit.

  • La passerelle NAT surveille l'utilisation de chaque VM et modifie le nombre de ports alloués à chaque VM en fonction des besoins. Vous n'avez pas besoin de surveiller l'utilisation du port ni d'ajuster la configuration de la passerelle NAT.

Avant d'utiliser l'allocation dynamique de ports, tenez compte des points suivants :

  • Si le mappage indépendant du point de terminaison est activé sur la passerelle Cloud NAT, vous ne pouvez pas configurer l'allocation de ports dynamique. Si vous avez besoin d'un mappage indépendant des points de terminaison, utilisez l'allocation de ports statique.

  • Lorsque des ports supplémentaires sont alloués aux VM, il est possible que vous constatiez des délais d'expiration de connexion ou une latence. Pour connaître les stratégies permettant d'éviter les pertes de connexions, consultez la page Réduire les connexions perdues avec l'allocation dynamique de ports.

Changer de méthode d'allocation de ports

Vous pouvez basculer entre l'allocation de ports statique et l'allocation de ports dynamique pour une passerelle Cloud NAT donnée.

Le passage à la méthode d'allocation de ports dynamique n'interrompt les connexions NAT existantes que si l'une des conditions suivantes est remplie:

  • Vous définissez le nombre maximal de ports par VM sur une valeur inférieure au nombre minimal de ports par VM spécifié dans la configuration NAT précédente (avec allocation de ports statique).

    Si, dans la configuration précédente, le nombre minimal de ports par VM était défini sur plus de 1024, et si vous spécifiez 1024 comme nombre maximal de ports par VM dans la nouvelle configuration, les connexions existantes sont rompues, car la première condition est prioritaire.

  • Vous définissez le nombre maximal de ports par VM sur une valeur inférieure à 1024.

Sauf si l'une des conditions précédentes est remplie, le passage à l'allocation de ports dynamique n'interrompt pas les connexions NAT existantes.

La désactivation de l'allocation de ports dynamique et le passage à l'allocation de ports statique sont perturbateurs et interrompent toutes les connexions NAT actives.

Procédure de réservation de port

Cloud NAT utilise la procédure suivante pour provisionner les tuples d'adresse IP source et de port source pour chaque VM desservie par la passerelle Cloud NAT (à la fois le NAT public et le NAT privé).

  1. Cloud NAT détermine les adresses IP internes de VM pour lesquelles le NAT doit être effectué. Les adresses IP internes de VM sont déterminées par les plages d'adresses IP de sous-réseau que la passerelle a été configurée pour utiliser.

    • Si la passerelle NAT publique est configurée pour effectuer la NAT pour la plage d'adresses IP principale du sous-réseau utilisé par l'interface réseau de la VM, elle effectue la NAT à la fois pour l'adresse IP interne principale de la VM et pour toutes les plages d'adresses IP d'alias de la VM issues de la plage d'adresses IP principale du sous-réseau.

    • Si la passerelle NAT publique est configurée pour effectuer la NAT pour une plage d'adresses IP secondaire du sous-réseau utilisé par l'interface réseau de la VM, elle effectue la NAT pour toutes les plages d'adresses IP d'alias de la plage d'adresses IP secondaire de ce sous-réseau.

    Étant donné qu'une passerelle NAT privée est configurée pour effectuer la NAT pour toutes les plages d'adresses IP du sous-réseau utilisé par l'interface réseau de la VM, elle effectue la NAT pour toutes les plages d'adresses IP de ce sous-réseau.

  2. Cloud NAT ajuste le nombre minimal de ports par instance de VM si nécessaire. Si l'allocation de ports statique est configurée et que la passerelle exécute le NAT pour les plages d'adresses IP d'alias comportant plus d'une adresse (masque de réseau plus petit que /32), Cloud NAT ajuste le nombre minimal de ports par VM afin qu'il corresponde au maximum de ces deux valeurs :

    • Nombre minimal de ports par instance de VM que vous spécifiez

    • Le nombre 1 024

    Dans toutes les autres situations, y compris lorsque l'allocation de ports dynamique est configurée, la passerelle Cloud NAT passe à l'étape suivante en utilisant le nombre minimal de ports spécifié par instance de VM comme entrée. Si vous ne spécifiez pas le nombre minimal de ports par instance de VM, la valeur par défaut est utilisée: 64 pour l'allocation de ports statiques et 32 pour l'allocation de ports dynamique.

  3. Cloud NAT réserve les tuples d'adresses IP NAT sources et de ports sources pour chaque VM. La passerelle Cloud NAT utilise le nombre minimal de ports attribué ou ajusté à l'étape précédente par instance de VM pour calculer le nombre de tuples d'adresses IP NAT sources et de ports sources à attribuer à la VM.

    Pour la NAT publique, Google Cloud alloue des tuples d'adresse IP source et de port source NAT en utilisant des multiples de puissances de deux. Le nombre de tuples d'adresse IP source et de port source NAT est donc supérieur ou égal au nombre minimal de ports par instance de VM que vous spécifiez.

    Pour le NAT privé, Google Cloud alloue deux fois le nombre minimal de ports requis par VM pour plus de fiabilité. Assurez-vous que le sous-réseau à partir duquel la NAT privée attribue les adresses IP et les ports est dimensionné de manière appropriée.

    • Si la passerelle Cloud NAT utilise plusieurs adresses IP NAT, il est possible que les tuples d'adresse IP source et de port source couvrent plusieurs adresses IP NAT. Une adresse IP NAT unique peut ne pas avoir suffisamment de ports sources disponibles pour prendre en charge le nombre de tuples d'adresses IP NAT sources et de ports sources nécessaire à une VM.

    • La passerelle Cloud NAT alloue les tuples d'adresses IP sources et de ports sources à chaque VM.

      • Si vous avez configuré l'allocation de ports statique, le nombre de tuples d'adresses IP sources et de ports sources est fixe. Celles-ci ne peuvent pas utiliser plus de tuples que ceux qui leur ont été alloués, même pendant les pics de trafic.

      • Si vous avez configuré l'allocation de ports dynamique, le nombre de tuples d'adresses IP sources et de ports sources peut changer en fonction de la demande. Si une VM est sur le point d'épuiser son allocation de ports actuelle, Cloud NAT alloue des ports supplémentaires, dans la limite du nombre maximal de ports par instance de VM spécifié. Une fois que l'utilisation des ports de la VM passe sous un certain seuil, les ports sont libérés et peuvent être alloués à d'autres VM.

Augmenter le nombre de ports par VM

Si vous avez configuré une passerelle Cloud NAT avec allocation de ports statique, lorsque vous augmentez le nombre minimal de ports par VM sur la passerelle, le trafic ne subit aucune interruption.

Si vous avez configuré une passerelle Cloud NAT avec l'allocation de ports dynamique, l'augmentation du nombre minimal, maximal ou des deux de ports par VM n'interrompt pas les connexions NAT existantes et n'interrompt pas le trafic passant par la passerelle NAT.

Tenez compte des points suivants lorsque vous augmentez le nombre de ports par rapport à une VM:

  • Lorsque vous utilisez la fonctionnalité NAT publique avec l'attribution manuelle d'adresses IP NAT, vous devez calculer le nombre d'adresses IP sources NAT dont vous avez besoin. Avant d'augmenter le nombre minimal de ports par VM, attribuez au moins ce nombre d'adresses IP NAT à la passerelle NAT publique.

  • Lorsque vous utilisez la NAT publique avec l'allocation automatique d'adresses IP NAT, l'augmentation du nombre minimal de ports par VM oblige la passerelle NAT publique à acquérir et allouer automatiquement plus d'adresses IP externes régionales.

  • Lorsque vous utilisez la fonctionnalité NAT privée, assurez-vous que le sous-réseau à partir duquel la passerelle alloue des adresses IP dispose d'un nombre suffisant d'adresses IP.

Réduire le nombre de ports par VM

Si vous avez configuré une passerelle Cloud NAT avec allocation de ports statique et que vous réduisez le nombre minimal de ports par VM sur la passerelle, aucun drainage de connexion ne se produit. Les connexions NAT établies sont immédiatement interrompues, et les clients doivent établir de nouvelles connexions TCP.

Si vous avez configuré une passerelle Cloud NAT avec l'allocation de ports dynamique, les instructions suivantes sont vraies:

  • La réduction du nombre minimal de ports par VM ne rompt pas les connexions NAT existantes et n'interrompt pas le trafic passant par la passerelle NAT.
  • La réduction du nombre maximal de ports par VM interrompt immédiatement toutes les connexions NAT existantes. Le nombre de ports alloués pour toutes les VM est temporairement réinitialisé sur la valeur spécifiée pour le nombre minimal de ports par VM.

Ports et connexions

Le nombre de tuples d'adresse IP source et de port source qu'une passerelle Cloud NAT réserve à une VM limite le nombre de connexions que la VM peut établir vers une destination unique:

  • Une destination unique correspond à un 3-tuple unique composé d'une adresse IP de destination, d'un port de destination et d'un protocole IP (tel que TCP ou UDP).

  • Une connexion correspond à un 5-tuple unique composé du tuple d'adresse IP source et de port source, associé à un 3-tuple de destination unique. Le protocole UDP étant sans connexion, le concept de connexion est réduit à un 5-tuple associé à un datagramme UDP unique.

Supposons qu'une passerelle Cloud NAT évalue à 1 024 le nombre fixe de ports pour une VM en suivant la procédure de réservation de port. La passerelle Cloud NAT réserve 1 024 combinaisons uniques de tuples d'adresses IP NAT sources et de ports sources pour la VM. La passerelle Cloud NAT peut traiter 1 024 connexions simultanées vers chaque 3-tuple de destination unique. Cependant, Cloud NAT considère que les connexions fermées sont inutilisables pendant 120 secondes après la fermeture de la connexion, ce qui peut affecter le nombre de connexions utilisées à la fois.

Exemples :

  • La passerelle accepte 1 024 connexions simultanées vers l'adresse IP de destination 203.0.113.99 sur le port 80, en utilisant le protocole TCP.

  • La passerelle accepte 1 024 connexions simultanées supplémentaires vers cette même adresse IP de destination sur le port 443, en utilisant également le protocole TCP.

  • La passerelle accepte 1 024 connexions simultanées supplémentaires vers une adresse IP de destination différente sur le port 80, en utilisant également le protocole TCP.

Réutilisation simultanée de ports et mappage indépendant des points de terminaison

Tant qu'au moins une information sur le 3-tuple de destination change (l'adresse IP de destination, le port de destination, le protocole), le même tuple d'adresse IP source et de port source NAT peut être utilisé simultanément pour de nombreuses connexions différentes.

La NAT publique utilise le mappage indépendant des points de terminaison, tel que défini dans la section 2.3 du document RFC 5128. Par conséquent, le nombre de connexions simultanées qu'une VM cliente peut établir à un 3-tuple de destination unique peut être réduit si la NAT publique attribue le même tuple d'adresse IP source et de port source NAT à plusieurs adresses IP internes et port source éphémère d'une VM cliente. Les risques augmentent si la VM cliente possède un grand nombre d'adresses IP sources internes et établit un grand nombre de connexions au même 3-tuple de destination. La première fois qu'une VM cliente envoie un paquet à partir d'une adresse IP interne et d'un port source éphémère, la NAT publique crée un mappage de type plusieurs à un indépendant des points de terminaison entre les éléments suivants:

  • Le tuple d'adresse IP interne et de port source éphémère
  • Un tuple d'adresse IP source unique et de port source

Par exemple, lorsqu'une VM cliente envoie un paquet à partir de son adresse IP interne 10.0.0.2 via le port source éphémère 10001, la NAT publique attribue 10.0.0.2:10001. Ce tuple d'adresse IP source et de port source NAT est ensuite utilisé pour toutes les connexions ultérieures de 10.0.0.2:10001 à n'importe quel 3-tuple de destination.

Si la même VM utilise un autre port source éphémère pour envoyer un paquet (par exemple, 10.0.0.2:20002), la NAT publique attribue également un tuple d'adresse IP source et de port source NAT pour toutes les connexions ultérieures depuis 10.0.0.2:20002 vers n'importe quel 3-tuple de destination. Il est possible que la NAT publique attribue le même tuple d'adresse IP source et de port source NAT à la fois à ces tuples d'adresse IP interne et de port source éphémère, ce qui entraîne un conflit indépendant du point de terminaison dans certaines situations.

Pour obtenir un exemple plus détaillé, consultez l'exemple de conflit de mappage indépendant du point de terminaison.

Réduire les conflits indépendants des points de terminaison

Pour réduire le nombre de conflits indépendants de points de terminaison, vous pouvez modifier la configuration. Pour plus d'informations, consultez la section Paquets supprimés avec un motif de conflit indépendant du point de terminaison.

Délai avant réutilisation des ports sources TCP

Lorsqu'une passerelle Cloud NAT ferme une connexion TCP, Google Cloud laisse s'écouler un délai avant que la passerelle ne puisse réutiliser le même tuple d'adresse IP source et de port source NAT vers la même destination (adresse IP de destination, port de destination et protocole). La durée du délai est contrôlée par le paramètre délai TCP TIME_WAIT.

Si nécessaire, vous pouvez réduire ce délai en modifiant la valeur par défaut du délai avant expiration de TCP TIME_WAIT. Pour en savoir plus sur la modification des délais avant expiration NAT, consultez la section Modifier les délais avant expiration NAT. Vous pouvez également apporter l'une des modifications suivantes:

  • Augmentez le nombre minimal de ports par instance de VM afin que la procédure de réservation de port attribue à la VM davantage de tuples d'adresse IP source et de port source NAT.

  • Si une VM doit ouvrir et fermer rapidement des connexions TCP à la même adresse IP de destination et au même port de destination avec le même protocole, attribuez une adresse IP externe à la VM et utilisez des règles de pare-feu pour limiter les connexions d'entrée non sollicitées.

Ports source et sécurité

Si vous dépendez de la randomisation du port source comme mesure de sécurité, vous devez prendre en compte ce qui suit :

  • Augmentez le nombre minimal de ports par instance de VM afin que la procédure de réservation de port attribue à la VM davantage de tuples d'adresse IP source et de port source NAT. L'augmentation du nombre minimal de ports par instance de VM attribue une plage de ports de manière aléatoire à chaque VM. Cependant, le port source choisi dans cette plage est séquentiel.

  • Attribuez une adresse IP externe à la VM au lieu d'utiliser une NAT publique.

Examples

Les exemples suivants montrent comment Cloud NAT réserve les adresses IP sources et les ports sources d'une VM, et la façon dont la NAT s'applique aux paquets envoyés à Internet.

Réservation de port

Les exemples suivants illustrent les applications de la procédure de réservation de port :

Supposons que vous configuriez une passerelle NAT publique pour fournir la NAT à la plage d'adresses IP principale d'un sous-réseau et que les VM qui utilisent ce sous-réseau ne possèdent aucune plage d'adresses IP d'alias de la plage d'adresses IP principale du sous-réseau. Arrondissez le résultat de n'importe quelle opération de division à l'entier inférieur le plus proche. ⌊⌋ est la fonction floor (plus grand entier), ce qui signifie que tout résultat fractionnaire de division est ignoré.

  • Si vous configurez la passerelle NAT publique avec une seule adresse IP NAT à l'aide de l'attribution manuelle et que vous définissez le nombre minimal de ports par instance de VM sur 64, la passerelle peut fournir des services NAT pour un maximum de 1 008 VM:

    ⌊(1 adresse IP NAT) × (64 512 ports par adresse) / (64 ports par VM)⌋ = 1 008 VM

  • Si vous devez prendre en charge plus de 1 008 VM, vous pouvez attribuer une deuxième adresse IP NAT à la passerelle Cloud NAT. Avec deux adresses IP NAT, en conservant le nombre minimal de ports par VM de 64, vous pouvez prendre en charge 2 016 VM :

    ⌊(2 adresses IP NAT) × (64 512 ports par adresse) / (64 ports par VM)⌋ = 2 016 VM

  • Si vous définissez le nombre minimal de ports par VM sur 4 096, chaque adresse IP NAT peut prendre en charge 15 VM. Ce calcul est arrondi à l'entier inférieur le plus proche :

    ⌊(1 adresse IP NAT) × (64 512 ports par adresse) / (4 096 ports par VM)⌋ = 15 VM

Supposons que vous configurez une passerelle NAT privée pour fournir la NAT à toutes les adresses IP d'un sous-réseau:

  • La taille de sous-réseau minimale que vous pouvez créer est de huit adresses IPv4, ce qui correspond à un masque de sous-réseau de /29. Si vous configurez une passerelle NAT privée avec un sous-réseau NAT de taille minimale et que vous définissez le nombre minimal de ports par instance de VM sur 64, la passerelle peut fournir des services NAT pour un maximum de 2 016 VM:

    ⌊(2(32-29) - 4) adresses IP NAT × (64 512 ports par adresse) / (64 ports par VM × 2)⌋ = 2 016 VM

    Dans l'exemple précédent, si vous définissez le nombre minimal de ports par instance de VM sur 1 024, la passerelle peut fournir des services NAT pour un maximum de 126 VM:

    ⌊(2(32-29) - 4) adresses IP NAT × (64 512 ports par adresse) / (1 024 ports par VM × 2)⌋ = 126 VM

  • Si vous configurez une passerelle NAT privée avec un masque de sous-réseau NAT de /28 et que vous définissez le nombre minimal de ports par instance de VM sur 64, la passerelle peut fournir des services NAT pour un maximum de 6 048 VM:

    ⌊(2(32-28) - 4) adresses IP NAT × (64 512 ports par adresse) / (64 ports par VM × 2)⌋ = 6 048 VM

Conflit de mappage indépendant du point de terminaison

L'exemple suivant montre comment le mappage indépendant du point de terminaison peut réduire le nombre de connexions simultanées d'une VM cliente au même 3-tuple de destination, même lorsqu'il existe un nombre suffisant de tuples d&#NAT;adresse IP source et de port source disponibles pour la VM cliente.

Supposons que vous ayez configuré une passerelle NAT publique pour fournir la NAT à la plage d'adresses IP principale d'un sous-réseau. Vous avez créé une VM cliente avec une interface réseau dont l'adresse IP interne principale est 10.0.0.2 dans ce sous-réseau. Aucune adresse IP externe n'est attribuée à l'interface de l'exemple de VM.

  1. La VM ouvre une connexion avec les caractéristiques suivantes :

    • Adresse IP interne et port sources : 10.0.0.2:10001
    • 3-tuple de destination : 203.0.113.1:80 via TCP
    • La fonctionnalité NAT publique utilise le tuple d'adresse IP source et de port source NAT suivant: 192.0.2.10:30009
  2. La VM ouvre une deuxième connexion avec les caractéristiques suivantes :

    • Adresse IP interne et port sources : 10.0.0.2:10002
    • 3-tuple de destination : 203.0.113.2:80 via TCP
    • La NAT publique peut également choisir d'utiliser le même tuple d'adresse IP source et de port source,192.0.2.10:30009, pour cette connexion. Il est possible d'utiliser le même tuple d'adresse IP source et de port source pour une adresse IP cliente différente et un port source éphémère.
  3. Tant que la première et la deuxième connexion sont actives, la NAT publique ne peut pas ouvrir de troisième connexion TCP présentant les caractéristiques suivantes:

    • Adresse IP interne et port sources identiques à ceux de la première connexion : 10.0.0.2:10001
    • 3-tuple de destination identique à celui de la deuxième connexion : 203.0.113.2:80 via TCP

    Cette troisième tentative de connexion est abandonnée avec une erreur de conflit indépendant du point de terminaison, car le mappage indépendant du point de terminaison établi par la première connexion exige que toutes les connexions de 10.0.0.2:10001 utilisent le même tuple d&#NAT;adresse IP source et de port source, 192.0.2.10:30009. Cependant, 192.0.2.10:30009 est déjà utilisé par la deuxième connexion TCP à 203.0.113.2:80.

  4. Pour clarifier l'ambiguïté, une tentative de connexion ultérieure dans cet exemple aboutit tant que l'une des conditions suivantes est remplie :

    • La première connexion TCP a été fermée. La fermeture de la connexion supprime le mappage indépendant du point de terminaison entre 10.0.0.2:10001 et 192.0.2.10:30009. La troisième connexion peut donc être mappée à un tuple d&#NAT;adresse IP source et de port source différent pour communiquer avec 203.0.113.2:80 via TCP.
    • La deuxième connexion TCP a été fermée. La fermeture de la connexion libère 10.0.0.2:10001 pour qu'il puisse utiliser l'adresse IP source et le port source 192.0.2.10:30009 NAT pour communiquer avec 203.0.113.2:80 via TCP.
    • La troisième tentative de connexion sélectionne un autre port source éphémère (interne). Dans cet exemple, un mappage indépendant du point de terminaison a établi un mappage de type "plusieurs à un" pour les adresses IP NAT sources et les ports sources internes 10.0.0.2:10001 et 10.0.0.2:10002, afin d'utiliser 192.0.2.10:30009 en communication avec 203.0.113.2:80 via TCP. Si la troisième tentative de connexion utilise un port source éphémère différent de 10001 et 10002, il est possible d'utiliser une adresse IP source et un port source différents pour communiquer avec 203.0.113.2:80 via TCP.
    • Désactivation de l'indépendance des points de terminaison : l'activation et la désactivation de l'indépendance des points de terminaison permettent à la nouvelle connexion de 10.0.0.2:10001 de ne pas avoir besoin d'utiliser 192.0.2.10:30009, ce qui lui permet d'utiliser une adresse IP source et un port NAT différents.

Pour connaître les techniques que vous pouvez utiliser pour éviter les conflits, consultez la section Réduire les conflits indépendants des points de terminaison.

Étapes suivantes