Descripción general de Cloud NAT

Cloud NAT (Network Address Translation, traducción de direcciones de red) permite que las instancias de máquinas virtuales (VM) de Google Cloud sin direcciones IP externas y clústeres privados de Google Kubernetes Engine (GKE) envíen paquetes salientes a la Internet y reciban los paquetes de respuesta entrantes establecidos correspondientes.

Arquitectura

Cloud NAT es un servicio administrado distribuido y definido por software. No se basa en los dispositivos o VM del proxy. Cloud NAT configura el software Andromeda que potencia tu red de nube privada virtual (VPC) de manera que proporcione la traducción de direcciones de red de origen (SNAT) para VM sin direcciones IP externas. Cloud NAT también proporciona la traducción de direcciones de red de destino (DNAT) para los paquetes de respuesta entrantes establecidos.

NAT tradicional comparada con Cloud NAT (haz clic para ampliar)
NAT tradicional comparada con Cloud NAT (haz clic para ampliar)

Cloud NAT implementa la NAT saliente junto con las rutas estáticas en tu red de VPC, cuyo siguiente salto es la puerta de enlace de Internet predeterminada. En una configuración básica, una ruta predeterminada en tu red de VPC cumple con este requisito.

Cloud NAT no implementa conexiones entrantes no solicitadas desde Internet. DNAT solo se realiza para paquetes que llegan como respuestas a paquetes de salida.

Beneficios

Cloud NAT proporciona los siguientes beneficios:

  • Seguridad

    Puedes reducir la necesidad de que las VM individuales tengan direcciones IP externas. Sujeto a las reglas de firewall de salida, las VM sin direcciones IP externas pueden acceder a los destinos en Internet. Por ejemplo, es posible que tengas VM que solo necesiten acceso a Internet para descargar actualizaciones o completar el aprovisionamiento.

    Si usas la asignación de dirección IP de NAT manual para configurar una puerta de enlace de Cloud NAT, puedes compartir de forma segura un conjunto de direcciones IP de origen externas comunes con un destinatario. Por ejemplo, un servicio de destino solo puede permitir conexiones desde direcciones IP externas conocidas.

  • Disponibilidad

    Cloud NAT es un servicio administrado distribuido y definido por software. No depende de ninguna VM de tu proyecto ni de un solo dispositivo de puerta de enlace física. Configura una puerta de enlace NAT en un Cloud Router, que proporciona el plano de control para NAT, con los parámetros de configuración que especifiques. Google Cloud ejecuta y mantiene procesos en las máquinas físicas que ejecutan tus VM de Google Cloud.

  • Escalabilidad

    Cloud NAT se puede configurar para escalar automáticamente la cantidad de direcciones IP de NAT que usa y admite VM que pertenecen a grupos de instancias administrados, incluso aquellos con el ajuste de escala automático habilitado.

  • Rendimiento

    Cloud NAT no reduce el ancho de banda de la red por VM. Cloud NAT se implementa mediante las redes definidas por software de Andromeda de Google. Para obtener más información, consulta Ancho de banda de red en la documentación de Compute Engine.

Especificaciones

Cloud NAT se puede configurar a fin de proporcionar NAT a Internet para los paquetes enviados desde las siguientes direcciones:

  • La dirección IP interna principal de la interfaz de red de la VM, siempre y cuando la interfaz de red no tenga asignada una dirección IP externa. Si la interfaz de red tiene asignada una dirección IP externa, Google Cloud usará automáticamente NAT uno a uno en los paquetes cuyas fuentes coincidan con la dirección IP interna principal de la interfaz, porque la interfaz de red cumple con los requisitos de acceso a Internet de Google Cloud. La existencia de una dirección IP externa en una interfaz siempre tiene prioridad y siempre realiza NAT uno a uno, sin usar Cloud NAT.

  • Un rango de alias de IP asignado a la interfaz de red de la VM. Incluso si la interfaz de red tiene asignada una dirección IP externa, puedes configurar una puerta de enlace de Cloud NAT para paquetes cuyas fuentes provengan de un rango de alias de IP de la interfaz. Una dirección IP externa en una interfaz nunca realiza NAT uno a uno para alias de direcciones IP.

Cloud NAT permite las respuestas salientes y establecidas de entrada a esas conexiones. Cada puerta de enlace de Cloud NAT realiza la traducción de direcciones de red de origen (SNAT) en la salida y la traducción de direcciones de red de destino (DNAT) para los paquetes de respuesta establecidos.

Cloud NAT no permite solicitudes de entrada no requeridas desde Internet, incluso si las reglas de firewall permitieran esas solicitudes. Para obtener más información, consulta RFC aplicables.

Cada puerta de enlace de Cloud NAT está asociada con una sola red de VPC, una región y un Cloud Router. La puerta de enlace de Cloud NAT y el Cloud Router proporcionan un plano de control, puesto que no están involucrados en el plano de datos, por lo que los paquetes no pasan por la puerta de enlace de Cloud NAT o el Cloud Router.

Rutas y reglas de firewall

Cloud NAT depende de las rutas estáticas personalizadas cuyos próximos saltos son la puerta de enlace de Internet predeterminada. Para usar una puerta de enlace de Cloud NAT por completo, tu red de VPC necesita una ruta predeterminada cuyo siguiente salto sea la puerta de enlace de Internet predeterminada. Para obtener más información, consulta interacciones entre rutas.

Cloud NAT no tiene ningún requisito de regla de firewall de Google Cloud. Las reglas de firewall se aplican directamente a las interfaces de red de las VM de Compute Engine, no a las puertas de enlace de Cloud NAT.

No es necesario crear ninguna regla de firewall especial que permita conexiones desde o hacia direcciones IP de NAT. Cuando una puerta de enlace de Cloud NAT proporciona NAT para la interfaz de red de una VM, las reglas de firewall de salida aplicables se evalúan como paquetes de interfaz de red antes que NAT. Las reglas de firewall de entrada se evalúan después de que la NAT haya procesado los paquetes.

Aplicabilidad del rango de direcciones IP de la subred

Una puerta de enlace de Cloud NAT puede proporcionar servicios NAT para los paquetes enviados desde la interfaz de red de una VM, siempre que dicha interfaz no tenga asignada una dirección IP externa. La puerta de enlace de Cloud NAT se puede configurar a fin de proporcionar NAT para la dirección IP interna principal de la interfaz de red de la VM, los rangos de alias de IP o ambos. Para realizar esta configuración, selecciona los rangos de direcciones IP de la subred a los que debe aplicarse la puerta de enlace.

Puedes configurar una puerta de enlace de Cloud NAT a fin de proporcionar NAT para lo siguiente:

  • Rangos de direcciones IP principales y secundarios de todas las subredes de la región. Una única puerta de enlace de Cloud NAT proporciona NAT para las direcciones IP internas principales y todos los rangos de alias de IP de las VM aptas cuyas interfaces de red usan una subred en la región. En esta opción, se usa exactamente una puerta de enlace NAT por región.

  • Rangos de direcciones IP principales de todas las subredes de la región. Una única puerta de enlace de Cloud NAT proporciona NAT para las direcciones IP internas principales y para los rangos de alias de IP que pertenecen a los rangos de direcciones IP principales de las subredes en las VM aptas cuyas interfaces de red usan una subred en la región. Puedes crear puertas de enlace Cloud NAT adicionales en la región a fin de proporcionar NAT para los rangos de alias de IP de los rangos de direcciones IP secundarios de la subred en las VM aptas.

  • Rangos de direcciones IP de subred personalizados. Puedes crear tantas puertas de enlace de Cloud NAT como sea necesario. Están sujetas a las cuotas y límites de Cloud NAT. Tú eliges qué rangos de direcciones IP principales o secundarios de la subred se deben entregar por cada puerta de enlace.

Ancho de banda

Utilizar una puerta de enlace de Cloud NAT no modifica la cantidad de ancho de banda de salida o de entrada que puede usar una VM. Para conocer las especificaciones de ancho de banda, que varían según el tipo de máquina, consulta Ancho de banda de red en la documentación de Compute Engine.

VM con interfaces de red múltiples

Si configuras una VM con varias interfaces de red, cada interfaz debe estar en una red de VPC independiente. En consecuencia, se cumple lo siguiente:

  • Una puerta de enlace de Cloud NAT solo puede aplicarse a una sola interfaz de red de una VM. Las puertas de enlace independientes de Cloud NAT pueden proporcionar NAT a la misma VM, donde cada puerta de enlace se aplica a una interfaz independiente.

  • Una interfaz de una VM de interfaz de red múltiple puede tener una dirección IP externa, por lo que no es apta para Cloud NAT, mientras otra de sus interfaces puede ser apta para NAT si esa interfaz no tiene una dirección IP externa y configuraste una puerta de enlace de Cloud NAT para que se aplique al rango de direcciones IP de la subred adecuada.

Direcciones IP y puertos NAT

Cuando creas una puerta de enlace de Cloud NAT, puedes elegir que la puerta de enlace asigne direcciones IP externas regionales automáticamente. Como alternativa, puedes asignar de forma manual una cantidad fija de direcciones IP externas regionales a la puerta de enlace. Para obtener detalles sobre cada método, consulta Direcciones IP de NAT.

Puedes configurar la cantidad de puertos de origen que cada puerta de enlace de Cloud NAT reserva para cada VM a la que debe proporcionar servicios de NAT. Las VM a las que se debe proporcionar NAT están determinadas por los rangos de direcciones IP de la subred que la puerta de enlace está configurada para entregar. Si deseas obtener más información, consulta Puertos y el procedimiento de reserva de puertos.

RFC aplicables

Cloud NAT es compatible con el mapeo independiente de extremos y el filtro dependiente del extremo, según RFC 5128. Puedes habilitar o inhabilitar el mapeo independiente de extremos. La puerta de enlace NAT lo usa de forma predeterminada.

Mapeo independiente de extremos significa que, si una VM envía paquetes desde una dirección IP interna y un par de puertos a varios destinos, la puerta de enlace realizará un mapeo de todos esos paquetes a la misma dirección IP de NAT y par de puertos, independientemente del destino de los paquetes. Para conocer los detalles y los efectos del mapeo independiente de extremos, consulta Mapeo independiente de extremos y reutilización de puertos simultáneos.

Filtro dependiente del extremo significa que los paquetes de respuesta de Internet solo pueden ingresar si provienen de una dirección IP y un puerto al que una VM ya envió paquetes. El filtro depende del extremo, independientemente del tipo de mapeo de extremos. Esta función está habilitada siempre y el usuario no puede configurarla.

Para obtener más información sobre la relación entre puertos y conexiones, consulta Puertos y conexiones y el ejemplo de flujo de NAT.

Cloud NAT es un NAT de cono con restricción de puerto, como se define en RFC 3489.

Recorrido de NAT

Si el mapeo independiente de extremos está habilitado, Cloud NAT será compatible con los protocolos transversales NAT comunes, como STUN y TURN, si implementas tus propios servidores STUN o TURN:

  • STUN (Session Transversal Utilities for NAT, RFC 5389) permite la comunicación directa entre VM detrás de NAT una vez que se establece un canal de comunicación.
  • TURN (Recorrido mediante relés en torno a NAT, RFC 5766) permite la comunicación entre VM detrás de NAT a través de un tercer servidor en el que ese servidor tiene una dirección IP externa. Cada VM se conecta a la dirección IP externa del servidor y ese servidor retransmite la comunicación entre las dos VM. TURN es más robusto, pero consume más ancho de banda y recursos.

Tiempo de espera de NAT

Las puertas de enlace de Cloud NAT usan los siguientes tiempos de espera.

Tiempo de espera Cloud NAT predeterminado Configurable

Tiempo de espera de inactividad del mapeo de UDP

RFC 4787 REQ-5

30 segundos

Tiempo de espera de inactividad de la conexión establecida de TCP

RFC 5382 REQ-5

1,200 segundos (20 minutos)

Tiempo de espera de inactividad de la conexión transitoria de TCP

RFC 5382 REQ-5

30 segundos

Nota: Independientemente del valor que establezcas para este tiempo de espera, Cloud NAT podría requerir hasta 30 segundos adicionales antes de que una dirección IP de origen de NAT y una tupla de puerto de origen puedan utilizarse para procesar una nueva conexión.

Tiempo de espera de inactividad del mapeo de ICMP

RFC 5508 REQ-2

30 segundos
Retraso antes de volver a usar una tupla quíntuple para una nueva conexión TCP (dirección IP de origen de NAT y tupla de puerto de origen combinada con la dirección de destino, el puerto de destino y el protocolo) 120 segundos (2 minutos)

No

Si deseas obtener más información, consulta Demora para la reutilización de puertos de origen TCP.

Interacciones de productos

En las siguientes secciones, se describen interacciones importantes entre Cloud NAT y otros productos de Google Cloud.

Interacciones de rutas

Una puerta de enlace de Cloud NAT solo puede usar rutas cuyos próximos saltos sean la puerta de enlace de Internet predeterminada. Cada red de VPC comienza con una ruta predeterminada cuyo destino es 0.0.0.0/0 y cuyo siguiente salto es la puerta de enlace de Internet predeterminada. Para obtener información general importante, consulta la descripción general de las rutas.

En los siguientes ejemplos, se ilustran situaciones que podrían provocar que las puertas de enlace de Cloud NAT se vuelvan inoperables:

  • Si creas una ruta estática personalizada con los siguientes saltos establecidos en cualquier otro tipo de salto siguiente de ruta estática personalizada, los paquetes con IP de destino que coinciden con el destino de la ruta se envían a ese lado, en lugar de la puerta de enlace de Internet predeterminada. Por ejemplo, si usas instancias de VM que ejecutan NAT, firewall o software proxy, necesariamente crearías rutas estáticas personalizadas para dirigir el tráfico a esas VM como el salto siguiente. Las VM de siguiente salto requieren direcciones IP externas. Por lo tanto, ni el tráfico de las VM que dependen de las VM del siguiente salto ni las VM del siguiente salto podrían usar Cloud NAT.

  • Si creas una ruta estática personalizada cuyo siguiente salto es un túnel de Cloud VPN, Cloud NAT no usa esa ruta. Por ejemplo, una ruta estática personalizada con destino 0.0.0.0/0 y un túnel de Cloud VPN de siguiente salto dirigen el tráfico a ese túnel, no a la puerta de enlace de Internet predeterminada. En consecuencia, las puertas de enlace de Cloud NAT no podrían usar esa ruta. Esto es válido incluso para destinos más específicos, como 0.0.0.0/1 y 128.0.0.0/1.

  • Si un router local anuncia una ruta dinámica personalizada a un Cloud Router que administra un túnel de Cloud VPN o un adjunto de Cloud Interconnect (VLAN), las puertas de enlace de Cloud NAT no pueden usar esa ruta. Por ejemplo, si tu router local anuncia una ruta dinámica personalizada con el destino 0.0.0.0/0, 0.0.0.0/0 se direccionará al túnel de Cloud VPN o al adjunto de Cloud Interconnect (VLAN). Esto es válido incluso para destinos más específicos, como 0.0.0.0/1 y 128.0.0.0/1.

Interacción con Acceso privado a Google

Cloud NAT nunca realiza NAT para el tráfico enviado a las direcciones IP externas seleccionadas de las API y los servicios de Google. En cambio, Google Cloud habilita automáticamente el Acceso privado a Google para un rango de direcciones IP de subred cuando configuras una puerta de enlace NAT a fin de aplicarlo a ese rango de subred, ya sea primario o secundario. Siempre que la puerta de enlace proporcione NAT para el rango de una subred, el Acceso privado a Google estará activo para ese rango y no se podrá inhabilitar de forma manual.

Una puerta de enlace de Cloud NAT no cambia la forma en que funciona el Acceso privado a Google. Para obtener más información, consulta Acceso privado a Google.

Interacción de VPC compartida

La VPC compartida permite que varios proyectos de servicio de una misma organización usen una red compartida de VPC común en un proyecto host. A fin de proporcionar NAT para las VM en proyectos de servicio que usan una red de VPC compartida, debes crear puertas de enlace de Cloud NAT en el proyecto host.

Interacción de intercambio de tráfico entre redes de VPC

Las puertas de enlace de Cloud NAT están asociadas con rangos de direcciones IP de subred en una sola región y una sola red de VPC. Una puerta de enlace de Cloud NAT creada en una red de VPC no puede proporcionar NAT a VM en otras redes de VPC conectadas mediante el intercambio de tráfico de red de VPC, incluso si las VM de redes de intercambio de tráfico están en la misma región que la puerta de enlace.

Interacción con GKE

Una puerta de enlace de Cloud NAT puede realizar NAT para nodos y Pods en un clúster privado, que es un tipo de clúster nativo de la VPC. La puerta de enlace de Cloud NAT debe configurarse a fin de aplicar al menos los siguientes rangos de direcciones IP de subred para la subred que usa tu clúster:

  • Rango de direcciones IP principal de la subred (para los nodos)
  • Rango de direcciones IP secundario de la subred utilizado para los Pods del clúster
  • Rango de direcciones IP secundario de la subred utilizado para los servicios del clúster

La forma más sencilla de proporcionar NAT para todo un clúster privado es configurar una puerta de enlace de Cloud NAT a fin de que se aplique a todos los rangos de direcciones IP de la subred del clúster.

Si deseas obtener información general sobre cómo los clústeres nativos de la VPC usan rangos de direcciones IP de subred, consulta Rangos de IP para clústeres nativos de la VPC.

Cuando una puerta de enlace de Cloud NAT está configurada para proporcionar NAT a un clúster privado, esta reserva direcciones IP de origen de NAT y puertos de origen para cada VM de nodo. Los Pods pueden usar esas direcciones IP y puertos de origen porque sus direcciones IP se implementan como rangos de alias de IP que se asignan a cada VM de nodo. Como el rango de direcciones IP de Pods más pequeño es de 256 direcciones IP (máscara de subred de /24), el procedimiento de reserva de puertos de Cloud NAT reserva al menos 1,024 direcciones IP de origen de NAT y puertos de origen por nodo. Para obtener información sobre los rangos de direcciones IP de Pod y los clústeres nativos de la VPC, consulta Rango de direcciones IP secundario de la subred para Pods.

Independientemente de Cloud NAT, GKE realiza SNAT con el software que se ejecuta en cada nodo cuando los Pods envían paquetes a Internet, a menos que cambies la configuración de enmascaramiento de IP del clúster. Si necesitas un control detallado sobre el tráfico de salida desde los Pods, puedes usar una política de red.

En determinadas circunstancias, Cloud NAT también puede servir para clústeres no privados, incluidos los que son nativos de la VPC y los basados en rutas. Como los nodos de un clúster no privado tienen direcciones IP externas, Cloud NAT nunca procesa los paquetes enviados desde la dirección IP interna principal del nodo. Sin embargo, una puerta de enlace Cloud NAT puede procesar los paquetes enviados desde los Pods de un clúster no privado si se cumplen los siguientes requisitos:

  • En los clústeres nativos de la VPC, la puerta de enlace de Cloud NAT está configurada para aplicarse al rango de direcciones IP secundario de los Pods del clúster.

  • La configuración de enmascaramiento de IP del clúster no se puede utilizar a fin de realizar SNAT dentro del clúster para los paquetes enviados desde los Pods a Internet.

Interacciones con Cloud Load Balancing

Los balanceadores de cargas externos y los sistemas de verificación de estado de Google Cloud se comunican con las VM mediante rutas especiales. Las VM de backend no requieren direcciones IP externas, y las puertas de enlace de Cloud NAT no administran la comunicación de los balanceadores de cargas ni de las verificaciones de estado. Para obtener más información, consulta Descripción general de Cloud Load Balancing y Descripción general de las verificaciones de estado.

Ejemplos

En los siguientes ejemplos, se ilustran los conceptos de Cloud NAT.

Configuración básica de NAT

Cloud NAT (haz clic para ampliar).
Cloud NAT (haz clic para ampliar)

En este ejemplo:

  • La puerta de enlace nat-gw-us-east está configurada para aplicarse al rango de direcciones IP principal de subnet-1 en la región us-east1. Una VM cuya interfaz de red no tiene una dirección IP externa puede enviar tráfico a Internet mediante su dirección IP interna principal o un rango de alias de IP del rango de direcciones IP principal de subnet-1, 10.240.0.0/16.

  • Una VM cuya interfaz de red no tiene una dirección IP externa y cuya dirección IP interna principal se encuentra en subnet-2 no puede acceder a Internet, porque ninguna puerta de enlace de Cloud NAT se aplica a rangos de direcciones IP de esa subred.

  • La puerta de enlace nat-gw-eu está configurada para aplicarse al rango de direcciones IP principal de subnet-3 en la región europe-west1. Una VM cuya interfaz de red no tiene una dirección IP externa puede enviar tráfico a Internet mediante su dirección IP interna principal o un rango de alias de IP del rango de direcciones IP principal de subnet-3, 192.168.1.0/24.

Ejemplo de GKE

Cloud NAT con GKE (haz clic para ampliar).
Cloud NAT con GKE (haz clic para ampliar)

En este ejemplo, el objetivo es que tus contenedores se traduzcan con NAT. A fin de habilitar NAT para todos los contenedores y el nodo de GKE, debes elegir todos los rangos de direcciones IP de la subred 1 como candidatos de NAT. No se puede habilitar NAT solo para container1 o container2.

Próximos pasos