Traducción de direcciones de red de origen (SNAT) con Azure NAT Gateway
La traducción de direcciones de red de origen (SNAT) permite que el tráfico de una red virtual privada se conecte a Internet mientras permanece completamente privado. La SNAT vuelve a escribir la dirección IP de origen y el puerto del paquete de origen en una combinación de puerto y dirección IP pública. Los puertos se usan como identificadores únicos para distinguir diferentes conexiones entre sí. Internet usa un hash de cinco tuplas (protocolo, IP/puerto de origen, IP/puerto de destino) para proporcionar esta distinción.
La SNAT también permite que varias instancias privadas dentro de una red virtual usen la misma dirección IP pública única o un conjunto de direcciones IP (prefijo) para conectarse a Internet.
La puerta de enlace NAT permite una funcionalidad SNAT de varios a uno. Muchas instancias privadas de una subred pueden aplicar la SNAT a una dirección IP pública asociada a la puerta de enlace NAT para conectarse a Internet. Cuando la puerta de enlace NAT realiza varias conexiones al mismo punto de conexión de destino, cada nueva conexión usa un puerto SNAT diferente para que las conexiones se puedan distinguir entre sí.
El agotamiento de puertos SNAT se produce cuando un punto de conexión de origen se ha quedado sin puertos SNAT disponibles para diferenciar entre las nuevas conexiones. Cuando se produce el agotamiento de puertos SNAT, se produce un error en las conexiones.
Escalado de SNAT para la puerta de enlace NAT
La puerta de enlace de escalado de NAT es primordialmente una función de la administración del inventario de puertos SNAT compartidos disponibles.
El inventario de puertos SNAT lo proporcionan las direcciones IP públicas, los prefijos IP públicos o ambos asociados a la puerta de enlace NAT. El inventario de puertos SNAT está disponible a petición para todas las instancias de una subred asociada a la puerta de enlace NAT. A medida que se escala la carga de trabajo de las instancias privadas de una subred, la puerta de enlace NAT asigna puertos SNAT según sea necesario.
Cuando varias subredes dentro de una red virtual están asociadas al mismo recurso de puerta de enlace NAT, el inventario de puertos SNAT que proporciona la puerta de enlace NAT se comparte en todas las subredes.
Una única puerta de enlace NAT puede escalar verticalmente hasta 16 direcciones IP. Cada IP pública de puerta de enlace NAT proporciona 64 512 puertos SNAT para establecer conexiones de salida. Una puerta de enlace de red NAT puede escalar hasta un millón de puertos SNAT. TCP y UDP son inventarios de puertos SNAT independientes y no están relacionados con la puerta de enlace NAT.
La puerta de enlace NAT asigna dinámicamente puertos SNAT
La puerta de enlace de red NAT asigna dinámicamente puertos SNAT a través de los recursos privados de una subred, como máquinas virtuales. Todos los puertos SNAT disponibles se usan a petición por cualquier máquina virtual en subredes configuradas con la puerta de enlace NAT.
Figura: asignación de puertos SNAT
La asignación previa de puertos SNAT a cada máquina virtual es necesaria para otros métodos SNAT. Esta asignación previa de puertos SNAT puede provocar el agotamiento de puertos SNAT en algunas máquinas virtuales, mientras que otras todavía tienen puertos SNAT disponibles para la conexión de salida.
Con la puerta de enlace NAT no es necesaria la asignación previa de puertos SNAT a cada máquina virtual, lo que significa que los puertos SNAT no quedan sin utilizar por las máquinas virtuales que no los necesitan activamente.
Después de liberar un puerto SNAT, está disponible para su uso por cualquier máquina virtual dentro de las subredes configuradas con la puerta de enlace NAT. La asignación a petición permite que las cargas de trabajo dinámicas y divergentes de las subredes usen los puertos SNAT a medida que se necesiten. Siempre que los puertos SNAT estén disponibles, los flujos de SNAT se realizan correctamente.
Figura: agotamiento de puertos SNAT
Selección y reutilización del puerto SNAT de puerta de enlace NAT
La puerta de enlace NAT selecciona un puerto SNAT al azar fuera del inventario disponible de puertos para crear nuevas conexiones de salida. Si la puerta de enlace NAT no encuentra ningún puerto SNAT disponible, reutiliza los existentes. El mismo puerto SNAT se puede usar para conectarse a varios destinos diferentes al mismo tiempo.
Se puede reutilizar un puerto SNAT para conectarse al mismo punto de conexión de destino. Antes de reutilizar el puerto, la puerta de enlace NAT coloca un temporizador de reutilización de puerto SNAT para el acceso esporádico en el puerto después de que se cierre la conexión.
El temporizador de reutilización de puertos SNAT ayuda a evitar que los puertos se seleccionen demasiado rápido para conectarse al mismo destino. Este proceso resulta útil cuando los puntos de conexión de destino tienen firewalls u otros servicios configurados que colocan un temporizador de enfriamiento en los puertos de origen. Los temporizadores de reutilización de puertos SNAT varían en función de cómo se cerró un flujo de conexión. Para más información, consulte Temporizadores de reutilización de puertos.
Figura: reutilización de puertos SNAT
Flujos SNAT de ejemplo para la puerta de enlace NAT
De muchos a un SNAT con puerta de enlace NAT
La puerta de enlace NAT proporciona una configuración de muchos a uno en la que varias instancias privadas dentro de una subred configurada con puerta de enlace NAT pueden usar la misma dirección IP pública para conectarse de salida.
En la siguiente tabla, dos máquinas virtuales diferentes (10.0.0.1 y 10.2.0.1) hacen conexiones a la https://microsoft.com dirección IP de destino 23.53.254.142. Cuando NAT Gateway está configurado con la dirección IP pública 65.52.1.1, las direcciones IP de origen de cada máquina virtual se traducen a la dirección IP pública de NAT Gateway y un puerto SNAT:
Flujo | Tupla de origen | Tupla de origen después de SNAT | Tupla de destino |
---|---|---|---|
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 |
Enmascaramiento de IP o enmascaramiento de puertos es el acto de reemplazar la dirección IP privada y el puerto por la dirección IP pública y el puerto antes de conectarse a Internet. Se pueden enmascarar varios recursos privados detrás de la misma dirección IP pública de la puerta de enlace de red NAT.
La puerta de enlace NAT reutiliza un puerto SNAT para conectarse a un nuevo destino
Como se mencionó anteriormente, la puerta de enlace NAT puede reutilizar el mismo puerto SNAT para conectarse simultáneamente a un nuevo punto de conexión de destino. En la siguiente tabla, la puerta de enlace NAT traduce el flujo 4 a un puerto SNAT que ya está en uso para otros destinos (consulte el flujo 1 de la tabla anterior).
Flujo | Tupla de origen | Tupla de origen después de SNAT | Tupla de destino |
---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 |
Reenvío del puerto SNAT de puerta de enlace NAT para reutilizarlo en el mismo destino
En un escenario en el que la puerta de enlace NAT reutiliza un puerto SNAT para realizar nuevas conexiones al mismo punto de conexión de destino, el puerto SNAT se coloca primero en una fase de reutilización de puertos SNAT para su enfriamiento. El período de reutilización del puerto SNAT ayuda a garantizar que los puertos SNAT no se reutilizan demasiado rápido al conectarse al mismo destino. Esta reutilización del puerto SNAT para el enfriamiento en la puerta de enlace NAT es beneficiosa en escenarios en los que el punto de conexión de destino tiene un firewall con su propio temporizador de puerto de origen para el enfriamiento en su lugar.
Para demostrar este comportamiento de reutilización del puerto SNAT, echemos un vistazo al flujo 4 de la tabla anterior. El flujo 4 se conectaba a un punto de conexión de destino protegido por un cortafuegos con un temporizador de enfriamiento del puerto de origen de 20 segundos.
Flujo | Tupla de origen | Tupla de origen después de SNAT | Tupla de destino | La conexión de tipo de paquete se cierra con | Temporizador de enfriamiento del cortafuegos de destino para el puerto de origen |
---|---|---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 | TCP FIN | 20 segundos |
El flujo de conexión 4 se cierra con un paquete TCP FIN. Dado que la conexión se cierra con un paquete TCP FIN, la puerta de enlace NAT coloca el puerto SNAT 1234 en enfriamiento durante 65 segundos antes de que se pueda reutilizar. Debido a que el puerto 1234 está en enfriamiento durante más tiempo que la duración del temporizador de enfriamiento del puerto de origen del cortafuegos de 20 segundos, el flujo de conexión 5 procede con la reutilización del puerto SNAT 1234 sin problemas.
Flujo | Tupla de origen | Tupla de origen después de SNAT | Tupla de destino |
---|---|---|---|
5 | 10.2.0.1:5769 | 65.52.1.1:1234 | 26.108.254.155:80 |
Tenga en cuenta que la puerta de enlace NAT coloca puertos SNAT en diferentes temporizadores de reenvío de puertos SNAT en función de cómo se cerró la conexión anterior. Para obtener más información sobre los temporizadores de reutilización de puertos SNAT, consulte Temporizadores de reutilización de puertos.
No dependa de la forma específica en la que se asignan los puertos de origen en los ejemplos anteriores. Las ilustraciones anteriores son solo ilustraciones de los conceptos fundamentales.