Adresses IP et ports

Cette page décrit comment les passerelles Cloud NAT utilisent des 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 pouvant être routée 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 choisissez les paramètres par défaut de Google Cloud, le NAT public ajoute automatiquement des adresses IP externes régionales à votre passerelle en fonction des éléments suivants:

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

    Le NAT public supprime également automatiquement une adresse IP NAT lorsqu'il n'a plus besoin de ports sources.

    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) dans le niveau de 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 sont visibles 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, le NAT public ne désaffecte une adresse que lorsque la dernière VM qui lui est attribuée n'utilise plus aucun port. Par conséquent, lorsque le nombre de VM utilisant le NAT public diminue, vous n'observerez pas forcément de diminution du nombre d'adresses IP . En effet, Cloud NAT ne réaffecte pas dynamiquement les VM d'une adresse IP à l'autre, car la réaffectation conduirait à perturber 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 des adresses IP NAT permet de vider les 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 réserve de certaines 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 ne dispose plus d'adresses IP NAT, le NAT public 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 un ensemble d'adresses IP de niveau Premium et de niveau Standard

Lorsque vous créez une passerelle NAT publique avec la méthode d'attribution manuelle d'adresses IP NAT, vous pouvez attribuer un mélange d'adresses IP de niveau Premium et de niveau Standard, à condition que les adresses IP de 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 la même règle, Google Cloud rejette la configuration.

Changer de méthode d'attribution

Vous pouvez passer de l'allocation automatique d'adresses IP NAT à l'attribution manuelle d'adresses IP NAT pour votre passerelle NAT publique. 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 ensuite ces mêmes adresses si vous passez à l'attribution manuelle d'adresses IP NAT.

L'ensemble d'adresses IP externes régionales utilisées par le NAT public pour l'allocation automatique d'adresses IP NAT est différent de l'ensemble d'adresses IP externes régionales que vous pouvez sélectionner 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 les adresses IP externes associées à la NAT. Pour drainer une adresse IP associée à une passerelle NAT qui utilise les règles NAT, consultez la section Mettre à jour les règles NAT.

Adresses IP NAT privées

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 ne peut pas être routée 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'indicateur --purpose=PRIVATE_NAT.

Une fois que vous avez configuré une passerelle Private NAT pour fournir des services NAT à un sous-réseau dans un réseau VPC, les VM avec des interfaces réseau dans ce sous-réseau peuvent envoyer des paquets à des ressources situées dans d'autres réseaux, tels que des réseaux VPC associés au même hub Network Connectivity Center que le réseau qui héberge la passerelle Private NAT ou des réseaux en dehors de Google Cloud connectés à Google Cloud via Cloud Interconnect ou Cloud VPN. À la 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. Au lieu de cela, 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 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 correspond à la longueur du masque de sous-réseau de la plage d'adresses IPv4 principale du sous-réseau NAT privé. Quatre adresses IP sont inutilisables dans la plage d'adresses IPv4 principale de chaque sous-réseau.

Ports

Chaque adresse IP NAT sur une passerelle Cloud NAT (NAT public et NAT privé) dispose de 64 512 ports sources TCP et de 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'allocation de ports dynamique. Vous pouvez modifier la méthode d'allocation de port après avoir créé la passerelle. Pour en savoir plus sur l'impact de la modification de la méthode d'allocation de port d'une passerelle Cloud NAT sur les connexions établies, consultez la section Changer de méthode d'allocation de port.

Si vous avez attribué manuellement plusieurs adresses IP externes régionales statiques (réservées) à votre passerelle NAT publique, une seule VM qui utilise la passerelle peut obtenir les ports requis à partir de l'une des adresses IP NAT attribuées, voire 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 VM, Google Cloud utilise la valeur par défaut.

L'allocation de ports statique est activée par défaut pour le NAT public. Le NAT privé, en revanche, utilise l'allocation de ports dynamique par défaut.

Étant donné que toutes les VM se voient attribuer le même nombre de ports, l'allocation de ports statique fonctionne mieux si toutes les VM ont une utilisation de sortie similaire. Lorsque l'allocation de ports statique est configurée, le nombre de ports alloués à chaque VM est fixe et ne change pas si certaines VM utilisent plus de ports que d'autres ou si une VM utilise tous ses ports. Si l'utilisation de la sortie varie, envisagez d'utiliser l'allocation de ports dynamique.

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 des points 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 le NAT privé. Le NAT public utilise l'allocation de ports statique par défaut.

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 des points 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.

  • Pendant l'allocation de ports supplémentaires aux VM, des délais avant expiration de la connexion ou une latence peuvent s'afficher. 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.

Méthode d'allocation des ports du commutateur

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 ne brise 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 que vous spécifiez 1024 comme nombre maximal de ports par VM dans la nouvelle configuration, les connexions existantes sont interrompues, car la première condition prévaut.

  • Vous avez défini 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.

Désactiver l'allocation de ports dynamique et passer à l'allocation de ports statique est perturbant et interrompt toutes les connexions NAT actives.

Procédure de réservation de port

Cloud NAT utilise la procédure suivante pour provisionner les tuples d'adresses IP sources et de ports sources NAT pour chaque VM desservie par la passerelle Cloud NAT (NAT public et 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 pour l'adresse IP interne principale de la VM et pour l'une des plages d'adresses IP d'alias de la VM à partir 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 n'importe quelle plage d'adresses IP d'alias appartenant à la plage d'adresses IP secondaire du 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 statique 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 le NAT public, Google Cloud alloue les tuples d'adresse IP NAT source et de port source à l'aide de multiples de puissances de deux, de sorte que leur nombre soit supérieur ou égal au nombre minimal de ports spécifié par instance de VM.

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

    • Si la passerelle Cloud NAT utilise au moins deux adresses IP NAT, il est possible que les tuples d'adresse IP NAT 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 allocation de ports dynamique, augmenter le nombre minimal, maximal ou les deux de ports par VM n'interrompt pas les connexions NAT existantes ni le trafic qui transite par la passerelle NAT.

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

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

  • Lorsque vous utilisez le NAT public avec l'allocation automatique des adresses IP NAT, en augmentant le nombre minimal de ports par VM, la passerelle NAT publique acquiert et attribue automatiquement de nouvelles adresses IP externes régionales.

  • Lorsque vous utilisez le NAT privé, 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 allocation de ports dynamique, les affirmations suivantes sont vraies:

  • Réduire le nombre minimal de ports par VM n'interrompt pas les connexions NAT existantes ni ne perturbe le trafic passant par la passerelle NAT.
  • Lorsque vous réduisez le nombre maximal de ports par VM, toutes les connexions NAT existantes sont interrompues immédiatement, et le nombre de ports alloués à 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 NAT 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.

Par exemple :

  • 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.

Le NAT public utilise le mappage indépendant des points de terminaison, tel que défini dans la section 2.3 de la RFC 5128. Par conséquent, le nombre de connexions simultanées qu'une VM cliente peut établir vers un 3-tuple de destination unique peut être réduit si le NAT public attribue le même tuple d'adresse IP source et de port source NAT à plusieurs adresses IP internes et ports sources éphémères 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, le NAT public 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, le NAT public attribue 10.0.0.2:10001. Ce tuple d'adresse IP source et de port source NAT est ensuite utilisé pour toutes les connexions suivantes de 10.0.0.2:10001 à n'importe quel 3-tuple de destination.

Si la même VM utilise un port source éphémère différent pour envoyer un paquet, par exemple 10.0.0.2:20002, le NAT public attribue également une adresse IP source NAT et un tuple de port source pour toutes les connexions suivantes de 10.0.0.2:20002 à n'importe quel 3-tuple de destination. Il est possible que le NAT public attribue le même tuple d'adresse IP NAT source et de port source à la fois pour ces tuples d'adresse IP internes et de port source éphémère, ce qui peut entraîner 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 d'inactivité TCP TIME_WAIT. Pour savoir comment modifier les délais avant expiration NAT, consultez la section Modifier les délais avant expiration NAT. Vous pouvez également effectuer 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 rapidement ouvrir et fermer des connexions TCP vers la même adresse IP de destination et le même port de destination à l'aide du même protocole, au lieu d'utiliser Cloud NAT, 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. Augmenter le 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 Public NAT.

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 configurez une passerelle NAT publique pour fournir une NAT à la plage d'adresses IP principale d'un sous-réseau, et que les VM utilisant ce sous-réseau ne disposent d'aucune plage d'adresses IP d'alias appartenant à 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 adresse IP NAT unique à 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 1 008 VM maximum:

    ⌊(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 configuriez une passerelle NAT privée pour fournir une NAT à toutes les adresses IP d'un sous-réseau:

  • La taille minimale de sous-réseau que vous pouvez créer est de huit adresses IPv4, soit 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 2 016 VM maximum:

    ⌊(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 126 VM maximum:

    ⌊(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 6 048 VM maximum:

    ⌊(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 des points de terminaison peut réduire le nombre de connexions simultanées d'une VM cliente au même 3-tuple de destination, même s'il y a suffisamment de tuples d'adresse IP NAT sources et de ports sources gratuits disponibles pour la VM cliente.

Supposons que vous ayez configuré une passerelle Public NAT 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
    • Le NAT public 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
    • Le NAT public peut également 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 les première et deuxième connexions sont actives, le NAT public ne peut pas ouvrir une troisième connexion TCP avec 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 à partir de 10.0.0.2:10001 doivent utiliser la même adresse IP NAT source et le même tuple de port source, 192.0.2.10:30009. Toutefois, 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 avec une adresse IP NAT différente et un tuple de port source 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 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ésactiver l'indépendance du point de terminaison. Cette opération permet à la nouvelle connexion depuis 10.0.0.2:10001 de ne pas avoir à utiliser 192.0.2.10:30009, ce qui lui permet d'utiliser une adresse IP NAT et un port sources 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.

Étape suivante