Traduction d'adresses réseau source (SNAT) avec Azure NAT Gateway

La traduction d'adresses réseau source (SNAT) permet au trafic d'un réseau virtuel privé de se connecter à Internet tout en restant entièrement privé. SNAT réécrit l'adresse IP source et le port du paquet d'origine en une combinaison d'adresse IP et de port publics. Les ports sont utilisés comme identifiants uniques pour distinguer les différentes connexions les unes des autres. Internet utilise un hachage à cinq tuples (protocole, IP/port source, IP/port de destination) pour assurer cette distinction.

SNAT permet également à plusieurs instances privées au sein d'un réseau virtuel d'utiliser la même adresse IP publique unique ou le même ensemble d'adresses IP (préfixe) pour se connecter à Internet.

La passerelle NAT permet une capacité SNAT plusieurs-à-un. De nombreuses instances privées d'un sous-réseau peuvent SNAT sur une adresse IP publique attachée à la passerelle NAT afin de se connecter à Internet. Lorsque la passerelle NAT établit plusieurs connexions au même point de terminaison de destination, chaque nouvelle connexion utilise un port SNAT différent afin que les connexions puissent être distinguées les unes des autres.

L’épuisement des ports SNAT se produit quand un point de terminaison source n’a plus de ports SNAT disponibles pour différencier les nouvelles connexions. Lorsque l'épuisement du port SNAT se produit, les connexions échouent.

Mettre à l'échelle SNAT pour la passerelle NAT

La mise à l’échelle d’une passerelle NAT est principalement une fonction de gestion de l’inventaire des ports SNAT partagés et disponibles.

L'inventaire des ports SNAT est fourni par les adresses IP publiques, les préfixes IP publics ou les deux attachés à la passerelle NAT. L'inventaire des ports SNAT est mis à disposition à la demande pour toutes les instances d'un sous-réseau attaché à la passerelle NAT. À mesure que la charge de travail des instances privées d'un sous-réseau évolue, la passerelle NAT alloue les ports SNAT selon les besoins.

Lorsque plusieurs sous-réseaux au sein d'un réseau virtuel sont attachés à la même ressource de passerelle NAT, l'inventaire des ports SNAT fourni par la passerelle NAT est partagé sur tous les sous-réseaux.

Une seule passerelle NAT peut évoluer jusqu'à 16 adresses IP. Chaque adresse IP publique de passerelle NAT fournit 64 512 ports SNAT pour réaliser des connexions sortantes. La passerelle NAT peut évoluer pour atteindre plus de 1 million de ports NAT. TCP et UDP sont des inventaires de ports SNAT distincts et ne sont pas liés à la passerelle NAT.

La passerelle NAT alloue dynamiquement des ports SNAT

La passerelle NAT alloue dynamiquement les ports SNAT sur les ressources privées d'un sous-réseau, telles que les machines virtuelles. Tous les ports SNAT disponibles sont utilisés à la demande par n'importe quelle machine virtuelle dans les sous-réseaux configurés avec la passerelle NAT.

Diagramme de l’allocation de port SNAT.

Figure : paramétrer l’allocation de ports SNAT

La préallocation des ports SNAT à chaque machine virtuelle est requise pour les autres méthodes SNAT. Cette préallocation de ports SNAT peut entraîner un épuisement des ports SNAT sur certaines machines virtuelles tandis que d'autres disposent encore de ports SNAT disponibles pour la connexion sortante.

Avec la passerelle NAT, la préallocation des ports SNAT n'est pas requise, ce qui signifie que les ports SNAT ne sont pas laissés inutilisés par les machines virtuelles qui n'en ont pas activement besoin.

Une fois qu'un port SNAT est libéré, il peut être utilisé par n'importe quelle machine virtuelle dans les sous-réseaux configurés avec la passerelle NAT. L’allocation à la demande permet aux charges de travail dynamiques et divergentes sur des sous-réseaux d’utiliser des ports SNAT selon leurs besoins. Tant que les ports SNAT sont disponibles, les flux SNAT réussissent.

Diagramme de l’épuisement des ports SNAT.

Figure : insuffisance de ports SNA

Sélection et réutilisation du port SNAT de la passerelle NAT

La passerelle NAT sélectionne un port SNAT au hasard parmi l'inventaire de ports disponibles pour établir de nouvelles connexions sortantes. Si la passerelle NAT ne trouve aucun port SNAT disponible, elle réutilise un port SNAT. Le même port SNAT peut être utilisé pour se connecter à plusieurs destinations différentes en même temps.

Un port SNAT peut être réutilisé pour se connecter au même point de terminaison de destination. Avant que le port ne soit réutilisé, la passerelle NAT place un minuteur de réutilisation du port SNAT pour le refroidissement du port après la fermeture de la connexion.

Le minuteur de réutilisation des ports SNAT permet d'éviter que les ports soient sélectionnés trop rapidement pour se connecter à la même destination. Ce processus est utile lorsque les points de terminaison de destination disposent de pare-feu ou d'autres services configurés qui placent un minuteur de refroidissement sur les ports sources. Les délais de réutilisation des ports SNAT varient en fonction de la manière dont un flux de connexion a été fermé. Pour en savoir plus, consultez Minuteurs de réutilisation des ports.

Diagramme de la réutilisation du port SNAT.

Figure: réutilisation des ports source

Exemples de flux SNAT pour une passerelle NAT

Plusieurs à un SNAT avec passerelle NAT

La passerelle NAT fournit une configuration plusieurs à un dans laquelle plusieurs instances privées au sein d'un sous-réseau configuré par une passerelle NAT peuvent utiliser la même adresse IP publique pour se connecter en sortie.

Dans le tableau suivant, deux machines virtuelles différentes (10.0.0.1 et 10.2.0.1) établissent des connexions à l'adresse IP de destination https://microsoft.com 23.53.254.142. Lorsque la passerelle NAT est configurée avec l’adresse IP publique 65.52.1.1, les adresses IP sources de chaque machine virtuelle sont traduites en adresse IP publique de la passerelle NAT et un port SNAT :

Flux Tuple source Tuple source après SNAT Tuple de destination
1 10.0.0.1:4283 65.52.1.1:1234 23.53.254.142:80
2 10.0.0.1:4284 65.52.1.1:1235 23.53.254.142:80
3 10.2.0.1:5768 65.52.1.1:1236 23.53.254.142:80

Masquage d'adresse IP ou mascarade de port est l'acte de remplacer l'adresse IP et le port privés par l'adresse IP et le port publics avant de se connecter à Internet. Plusieurs ressources privées peuvent être masquées derrière la même adresse IP publique de la passerelle NAT.

La passerelle NAT réutilise un port SNAT pour se connecter à une nouvelle destination

Comme mentionné précédemment, la passerelle NAT peut réutiliser le même port SNAT pour se connecter simultanément à un nouveau point de terminaison de destination. Dans le tableau suivant, la passerelle NAT traduit le flux 4 en un port SNAT déjà utilisé pour d'autres destinations (voir le flux 1 du tableau précédent).

Flux Tuple source Tuple source après SNAT Tuple de destination
4 10.0.0.1:4285 65.52.1.1:1234 26.108.254.155:80

Le port SNAT de la passerelle NAT est refroidi pour être réutilisé vers la même destination

Dans un scénario dans lequel la passerelle NAT réutilise un port SNAT pour établir de nouvelles connexions au même point de terminaison de destination, le port SNAT est d'abord placé dans une phase de réutilisation du port SNAT pour un refroidissement. La période de réutilisation des ports SNAT permet de garantir que les ports SNAT ne sont pas réutilisés trop rapidement lors de la connexion à la même destination. Cette réutilisation du port SNAT pour le refroidissement sur la passerelle NAT est bénéfique dans les scénarios où le point de terminaison de destination dispose d'un pare-feu avec son propre minuteur de port source pour le refroidissement.

Pour démontrer ce comportement de refroidissement de la réutilisation du port SNAT, examinons de plus près le flux 4 du tableau précédent. Le flux 4 se connectait à un point de terminaison de destination protégé par un pare-feu avec un minuteur de refroidissement du port source de 20 secondes.

Flux Tuple source Tuple source après SNAT Tuple de destination La connexion de type paquet est fermée avec Minuterie du pare-feu de destination pour le refroidissement du port source
4 10.0.0.1:4285 65.52.1.1:1234 26.108.254.155:80 TCP FIN 20 secondes.

Le flux de connexion 4 se termine avec un paquet TCP FIN. Étant donné que la connexion est fermée avec un paquet TCP FIN, la passerelle NAT place le port SNAT 1234 en mode refroidissement pendant 65 secondes avant de pouvoir être réutilisé. Étant donné que le port 1234 est en refroidissement pendant une durée plus longue que la durée de refroidissement du port source du pare-feu de 20 secondes, le flux de connexion 5 procède à la réutilisation du port SNAT 1234 sans problème.

Flux Tuple source Tuple source après SNAT Tuple de destination
5 10.2.0.1:5769 65.52.1.1:1234 26.108.254.155:80

Gardez à l’esprit que la passerelle NAT place les ports SNAT sous différents temporisateurs de refroidissement pour la réutilisation des ports SNAT en fonction de la fermeture de la connexion précédente. Pour plus d'informations sur les temporisateurs de réutilisation des ports SNAT, consultez Temporisateurs de réutilisation des ports.

Ne dépendez pas de la manière spécifique dont les ports sources sont attribués dans les exemples ci-dessus. Ce qui précède ne sont que des illustrations des concepts fondamentaux.