Descripción general de Cloud NAT

Cloud NAT (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 Internet y reciban cualquier paquete de respuesta entrante establecido.

Arquitectura

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

NAT tradicional frente a NAT de Cloud (haz clic para agrandar)
NAT tradicional frente a Cloud NAT (haz clic para agrandar)

Cloud NAT implementa la NAT saliente junto con las rutas estáticas en tu VPC, cuyos próximos saltos son 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.

Ventajas

Cloud NAT proporciona los siguientes beneficios:

  • Seguridad: Puede 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 configuras una puerta de enlace de Cloud NAT con asignación de dirección IP NAT manual, puedes compartir con confianza un conjunto de direcciones IP de destino 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 puede configurarse para escalar automáticamente la cantidad de direcciones IP NAT que usa y admite las VM que pertenecen a grupos de instancias administrados, incluso aquellos con ajuste de escala automático habilitado.

  • Rendimiento: Cloud NAT no reduce el ancho de banda de la red por VM. Cloud NAT funciona directamente con las redes definidas por el software de Andrómeda de Google.

Especificaciones

  • Cloud NAT se puede configurar para proporcionar NAT a Internet para los paquetes enviados desde:

    • La dirección IP interna principal de la interfaz de red de la VM, siempre que no tenga asignada una dirección IP externa: Si la interfaz de red tiene asignada una dirección IP externa, Google Cloud realiza automáticamente NAT uno a uno para 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 NAT de Cloud.

    • Un rango de alias de IP se asigna a la interfaz de red de VM: incluso si la interfaz de red tiene una dirección IP externa asignada, puedes configurar una puerta de enlace NAT de Cloud 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 fuente (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 solicitadas desde Internet, incluso si las reglas de firewall permitieran esas solicitudes. Consulta los RFC aplicables para obtener más detalles.

  • Cada puerta de enlace NAT de Cloud está asociada con una sola red de VPC, una región y Cloud Router. La puerta de enlace Cloud NAT y Cloud Router proporcionan un plano de control, ya que no están involucrados en el plano de datos, por lo que no pasan por la puerta de enlace Cloud NAT o 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 completamente una puerta de enlace NAT de Cloud, tu VPC necesita una ruta predeterminada cuyo siguiente salto es la puerta de enlace de Internet predeterminada. Consulta las interacciones de rutas para obtener más detalles.

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 NAT de Cloud.

No es necesario crear ninguna regla de firewall especial que permita conexiones a direcciones IP de NAT o desde ellas. Cuando una puerta de enlace NAT de Cloud 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 NAT haya procesado los paquetes.

Aplicabilidad del rango de direcciones IP de la subred

Una puerta de enlace NAT de Cloud 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 NAT de Cloud se puede configurar para proporcionar NAT para la dirección IP interna principal 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 NAT de Cloud para proporcionar NAT para:

  • Rangos de IP primarios y secundarios de todas las subredes de la región: Una única puerta de enlace NAT de Cloud 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 IP primarios de todas las subredes de la región: Una única puerta de enlace NAT de Cloud proporciona NAT para las direcciones IP internas primarias y los rangos de alias de IP de los rangos de direcciones IP principales de subred de las VM aptas cuyas interfaces de red usan una subred la región. Puedes crear puertas de enlace NAT de Cloud adicionales en la región para proporcionar NAT para los rangos de alias de IP de los rangos de direcciones IP secundarias de subred de las VM aptas.

  • Rangos personalizados de IP de subred: Puedes crear todas las puertas de enlace de Cloud NAT que sean necesarias, sujetas a límites y cuotas de Cloud NAT. Tú eliges qué rangos de IP principales o secundarios de la subred se deben entregar por cada puerta de enlace.

Ancho de banda

El uso de 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. Consulta el ancho de banda de red en la documentación de Compute Engine para conocer las especificaciones de ancho de banda, que varían según el tipo de máquina.

VM con varios NIC

Si configuras una VM con varias interfaces de red, cada interfaz debe estar en una red de VPC independiente. Por lo tanto, sucede 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 con varios NIC puede tener una dirección IP externa y no ser apta para Cloud NAT, mientras que otra interfaz puede ser compatible con NAT si no tiene una dirección IP externa y haz configurado una puerta de enlace de Cloud NAT para aplicar al rango de dirección IP de subred adecuado.

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, puede asignar manualmente 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 para la que debe proporcionar servicios de NAT. Las VM para 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. Consulta Puertos y el Procedimiento de reserva de puertos para obtener más información.

RFC aplicables

Cloud NAT se puede clasificar como una NAT independiente del extremo, filtro dependiente del extremo según RFC 5128 y NAT de cono con restricción de puerto según RFC 3489.

Cuando una puerta de enlace Cloud NAT ejecuta SNAT en la salida de un paquete enviado desde una VM, puede volver a usar la misma dirección de origen y puerto de origen por destino único (dirección IP de destino, puerto de destino y protocolo). Una puerta de enlace NAT solo realiza DNAT para paquetes de respuesta entrantes establecidos cuya dirección IP de origen y puerto de origen coincidan con la dirección IP de destino y el puerto de destino de un paquete de solicitud de salida correspondiente. Consulta Puertos y conexiones y el ejemplo de flujo NAT para obtener detalles sobre la relación entre puertos y conexiones.

Recorrido de NAT

Debido a que Cloud NAT es independiente del extremo, Cloud NAT es compatible con los protocolos transversales NAT comunes, como STUN y TURN, si implementa sus 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 NAT de Cloud usan los siguientes tiempos de espera.

Tiempo de espera Cloud NAT predeterminado Configurable
Lapso de inactividad de asignación de UDP
RFC 4787 REQ-5
30 segundos
Tiempo de espera de inactividad de conexión establecida de TCP
RFC 5382 REQ-5
1,200 segundos (20 minutos)
Tiempo de espera de inactividad de conexión transitoria de TCP
RFC 5382 REQ-5
30 segundos
Tiempo de espera de asignación de ICMP
RFC 5508 REQ-2
30 segundos
Retraso antes de volver a usar una tupla 5 para una nueva conexión TCP
(tupla de puerto de origen y dirección de origen combinada con dirección de destino, puerto de destino y protocolo)
120 segundos (2 minutos) No
Consulta Vuelve a usar el puerto de origen para conexiones TCP para obtener más detalles.

Interacciones de productos

En las siguientes secciones, se indican 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. Revisa la descripción general de las rutas para obtener información básica importante.

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 con los siguientes saltos establecidos en cualquier otro tipo de salto siguiente de ruta estática personalizada, los paquetes con IP de destino que coincidan con el destino de la ruta se enviarán a ese salto siguiente en lugar de la puerta de enlace 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 del salto siguiente 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 el túnel de Cloud VPN de siguiente salto dirige 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 el 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 privada con Google Access

Cloud NAT nunca realiza NAT para el tráfico enviado a las direcciones IP externas de las API y los servicios de Google seleccionadas. En su lugar, Google Cloud habilita automáticamente el Acceso privado a Google para un rango de direcciones IP de subred cuando configuras una puerta de enlace de Cloud NAT para aplicar a ese rango de subred. Siempre que la puerta de enlace proporcione NAT para un rango de subred, el acceso privado a Google estará activo para ese rango y no se puede inhabilitar manualmente.

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

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 Cloud NAT en el proyecto host.

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

Las puertas de enlace 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 VPC no puede proporcionar NAT a máquinas virtuales en otras redes de VPC conectadas mediante Intercambio de tráfico de red de VPC, incluso si las VM en redes de intercambio de tráfico están en la misma región que las puertas 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 VPC. La puerta de enlace de Cloud NAT debe estar configurada 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 (usado por los nodos)
  • Intervalo secundario de direcciones IP de la subred utilizado para los pods del clúster
  • Intervalo secundario de direcciones IP de 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 Cloud NAT para que se aplique a todos los rangos de direcciones IP de la subred del clúster.

Para obtener información general sobre cómo los clústeres de VPC nativa 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, reserva direcciones de origen y puertos de origen para cada VM de nodo. Los pods pueden usar esas direcciones de origen NAT y puertos de origen porque las direcciones IP de pod se implementan como rangos de IP de alias asignados a cada VM de nodo. Debido a que el rango de IP de pod 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 puertos de origen y dirección por nodo. Consulta Rango de direcciones IP secundario de subred para pods a fin de obtener detalles sobre los rangos de IP de pods y los clústeres nativos de VPC.

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

En ciertas circunstancias, Cloud NAT también puede ser útil para clústeres no privados, incluidos los clústeres de VPC nativa y basados en rutas. Debido a que los nodos en un clúster no privado tienen direcciones IP externas, los paquetes enviados desde la dirección IP interna principal del nodo nunca son procesados por Cloud NAT. Sin embargo, una puerta de enlace de Cloud NAT puede procesar los paquetes que se envían desde pods en los siguientes casos:

  • En el caso de los clústeres nativos de VPC, la puerta de enlace de Cloud NAT está configurada para aplicarse al rango de direcciones IP secundarias de los pods del clúster, y
  • Cuando la configuración de enmascaramiento de IP del clúster no está configurada para realizar SNAT dentro del clúster de los paquetes enviados desde Internet.

Interacciones de Cloud Load Balancing

Los sistemas de verificación de estado y los balanceadores de cargas externos de Google Cloud se comunican con las VM mediante rutas especiales. Las VM de backend no requieren direcciones IP externas ni una puerta de enlace de Cloud NAT para administrar los balanceadores de cargas y las verificaciones de estado. Consulta Descripción general de Cloud Load Balancing y Descripción general de las verificaciones de estado para obtener detalles adicionales.

Ejemplos

Los siguientes ejemplos 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 IP de alias 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 no se aplica ninguna puerta de enlace de Cloud NAT a ningún rango 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 IP de alias 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 el ejemplo anterior, quieres 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 IP de la subred 1 como candidatos de NAT. No es posible usar solo container1 o container2.

Qué sigue