Direcciones IP y puertos
En esta página se describe cómo usan las direcciones IP las pasarelas Cloud NAT y cómo asignan puertos de origen a las instancias de máquina virtual (VM) de Compute Engine y a los nodos de Google Kubernetes Engine (GKE) que usan las pasarelas.
Antes de consultar esta información, familiarízate con la información general sobre Cloud NAT.
Direcciones IP de NAT públicas
Una dirección IP de NAT pública es una dirección IP externa regional que se puede enrutar en Internet. Una VM sin dirección IP externa que se encuentra en una subred atendida por una pasarela NAT pública usa una dirección IP NAT pública cuando envía paquetes a un destino en Internet.
Para asignar direcciones IP de traducción de direcciones de red (NAT) a una pasarela NAT pública, utiliza uno de los siguientes métodos:
Asignación automática de direcciones IP de NAT. Si seleccionas este método o eliges los valores predeterminados, NAT público añade automáticamente direcciones IP externas regionales a tu pasarela en función de lo siguiente: Google Cloud
- El nivel de red que selecciones
- El número de VMs que usan la pasarela
- Número de puertos reservados para cada VM
NAT pública también elimina automáticamente una dirección IP de NAT cuando ya no necesita ningún puerto de origen en esa dirección IP de NAT.
Estas son las características de la asignación automática de direcciones IP de NAT:
Cuando una pasarela NAT pública añade una dirección IP NAT, crea una dirección IP externa regional estática (reservada) en el nivel de red que hayas seleccionado al configurar la pasarela. Por ejemplo, si ha seleccionado el nivel Premium, la puerta de enlace NAT pública crea la dirección IP en ese nivel. Los niveles de red admitidos son el nivel Premium (opción predeterminada) y el nivel Estándar.
Las direcciones IP de NAT añadidas automáticamente se pueden ver en la lista de direcciones IP externas estáticas. Estas direcciones no se contabilizan en las cuotas por proyecto.
- Si cambias el nivel de red de una pasarela NAT pública, se liberarán las direcciones IP de esa pasarela y se asignará un nuevo conjunto de direcciones IP del nivel seleccionado.
- Con la asignación automática, no puedes predecir la siguiente dirección IP que se asignará. Si necesitas conocer el conjunto de posibles direcciones IP de NAT con antelación (por ejemplo, para crear una lista de permitidas), debes usar la asignación manual de direcciones IP de NAT.
Cuando las direcciones IP de NAT añadidas automáticamente dejan de usarse, se eliminan. Sin embargo, NAT público solo desasigna una dirección cuando la última VM asignada a la dirección ya no usa ningún puerto. Por lo tanto, cuando el número de máquinas virtuales que usan NAT público disminuya, es posible que no veas una reducción de la IP . Esto se debe a que Cloud NAT no reasigna dinámicamente las VMs de una dirección IP a otra, ya que la reasignación interrumpiría las conexiones establecidas. Mientras al menos una VM use una dirección IP, esta permanecerá activa y se le podrán asignar nuevas VMs.
Si quieres poder reasignar manualmente las VMs de una dirección IP a otra para minimizar el uso de direcciones IP, usa asignaciones manuales de direcciones IP de NAT. La asignación manual de direcciones IP de NAT permite agotar las direcciones IP de NAT públicas.
Si más adelante cambias a la asignación manual de direcciones IP de NAT, se eliminarán las direcciones IP externas regionales reservadas automáticamente. Para obtener más información, consulta Cambiar el método de asignación.
Asignación manual de direcciones IP de NAT. Si seleccionas esta opción, crearás y asignarás manualmente direcciones IP externas regionales estáticas (reservadas) a tu pasarela NAT pública. Puedes asignar direcciones IP manualmente desde el nivel Premium, el nivel Estándar o ambos, según las condiciones.
- Puedes aumentar o disminuir el número de direcciones IP NAT asignadas manualmente editando la pasarela Cloud NAT.
- Si usas la asignación manual de direcciones IP NAT, debes calcular el número de direcciones IP externas regionales que necesitas para la pasarela Public NAT. Si tu pasarela se queda sin direcciones IP de NAT, Public NAT descartará los paquetes. Los paquetes descartados se registran cuando se usa el registro de Cloud NAT para activar el registro de errores.
- Para ver ejemplos de cálculos, consulta el ejemplo de reserva de puertos.
Para consultar el número máximo de direcciones IP de NAT asignadas automáticamente o manualmente, consulta Límites de Cloud NAT.
Asignar manualmente una combinación de direcciones IP de nivel Premium y de nivel Estándar
Cuando creas una pasarela NAT pública con el método de asignación manual de direcciones IP de NAT, puedes asignar una combinación de direcciones IP de nivel Premium y de nivel Estándar, siempre que las direcciones IP de diferentes niveles de red no pertenezcan a la misma regla (incluida la regla predeterminada).
Dentro de una regla (incluida la regla predeterminada), todas las direcciones IP asignadas a intervalos activos deben pertenecer al mismo nivel de red. Si intentas usar direcciones IP de diferentes niveles como parte de la misma regla, Google Cloud rechazará la configuración.
Cambiar el método de asignación
Puedes cambiar una pasarela NAT pública de la asignación automática de direcciones IP NAT a la asignación manual de direcciones IP NAT. Sin embargo, las direcciones IP NAT no se pueden conservar. Aunque las direcciones IP de NAT asignadas automáticamente son estáticas, no se pueden mover a una asignación manual de direcciones IP de NAT. Por ejemplo, no puedes empezar a usar una pasarela NAT pública con direcciones IP NAT asignadas automáticamente y, más adelante, usar las mismas direcciones cuando cambies a direcciones IP NAT asignadas manualmente.
El conjunto de direcciones IP externas regionales que usa NAT público para la asignación automática de direcciones IP de NAT es diferente del conjunto de direcciones IP externas regionales que puedes elegir manualmente.
Vaciar direcciones IP de NAT pública
Cuando configuras una pasarela NAT pública con una asignación manual de direcciones IP NAT, puedes elegir qué ocurre cuando necesitas reducir el número de direcciones IP NAT que usa la pasarela:
Si quitas una dirección IP de NAT asignada manualmente, las conexiones NAT establecidas se interrumpirán inmediatamente.
También puedes agotar una dirección IP de NAT asignada manualmente. El drenaje indica a la pasarela NAT pública que deje de usar la dirección IP de NAT para las conexiones nuevas, pero que siga usándola para las conexiones establecidas. Las conexiones establecidas pueden cerrarse normalmente en lugar de finalizarse de forma abrupta. Para agotar una dirección IP asociada a una pasarela NAT pública que no usa reglas NAT, consulta Agotar direcciones IP externas asociadas a NAT. Para agotar una dirección IP asociada a una pasarela NAT que usa reglas NAT, consulta Actualizar reglas NAT.
Direcciones IP de NAT privadas
Una dirección Private NAT es una dirección IPv4 interna regional que procede del intervalo de direcciones IPv4 principal de una subred Private NAT ubicada en la misma región y red de VPC que una puerta de enlace Private NAT. Una dirección IP de NAT privada no se puede enrutar en Internet. Las direcciones IP de los intervalos de direcciones IPv4 principales de las subredes de NAT privadas solo pueden usarlas las pasarelas de NAT privadas. Para crear una subred NAT privada, añade una subred solo IPv4 con la CLI de Google Cloud y la marca --purpose=PRIVATE_NAT
.
Después de configurar una puerta de enlace Private NAT para que proporcione servicios NAT a una subred de una red de VPC, las VMs con interfaces de red en esa subred pueden enviar paquetes a recursos ubicados en otras redes, como redes de VPC conectadas al mismo centro de Network Connectivity Center que la red que aloja la puerta de enlace Private NAT o redes externas que estén conectadas a través de Cloud Interconnect o Cloud VPN. Google Cloud Google Cloud En la salida, Google Cloud cambia la dirección IP de origen por una dirección IP de la subred NAT privada asociada a la pasarela.
Estas son las características de las direcciones IP de NAT privadas:
- No puedes asignar automáticamente direcciones IP de NAT privada a una pasarela de NAT privada. En su lugar, cuando creas una regla en una pasarela de NAT privada, especificas manualmente la subred o las subredes de NAT privada. Las subredes NAT privadas deben estar ubicadas en la misma red VPC y región que la pasarela. La pasarela solo usa direcciones IP de los intervalos de direcciones IPv4 principales de las subredes de NAT privada.
- Para determinar cuántas direcciones IP de NAT puede proporcionar cada subred de NAT privada, usa la siguiente fórmula:
2(32 - PREFIX_LENGTH) - 4
, dondePREFIX_LENGTH
es la longitud de la máscara de subred del intervalo de direcciones IPv4 principal de la subred de NAT privada. Cuatro direcciones IP no se pueden usar en el intervalo de direcciones IPv4 principal de cada subred.
Puertos
Cada dirección IP de NAT de una pasarela Cloud NAT (tanto Public NAT como Private NAT) ofrece 64.512 puertos de origen TCP y 64.512 puertos de origen UDP. TCP y UDP admiten 65.536 puertos por dirección IP. Cloud NAT no usa los puertos conocidos (con privilegios) del 0 al 1023.
Cuando una pasarela Cloud NAT realiza la traducción de direcciones de red de origen (SNAT) en un paquete enviado por una VM, cambia la dirección IP de origen y el puerto de origen de NAT del paquete.
Cuando creas una pasarela Cloud NAT, puedes elegir entre la asignación de puertos estática o la asignación de puertos dinámica. Puedes cambiar el método de asignación de puertos después de crear la pasarela. Para obtener información sobre cómo afecta a las conexiones establecidas el cambio del método de asignación de puertos de una pasarela Cloud NAT, consulta Cambiar el método de asignación de puertos.
Si ha asignado manualmente varias direcciones IP externas regionales estáticas (reservadas) a su pasarela NAT pública, una sola VM que use la pasarela puede obtener los puertos necesarios de cualquiera de las direcciones IP NAT asignadas, incluso de varias direcciones IP NAT al mismo tiempo.
Asignación estática de puertos
Cuando configuras la asignación de puertos estáticos, especificas un número mínimo de puertos por instancia de VM. Si no especificas el número mínimo de puertos por VM, Google Cloud se usa el valor predeterminado.
La asignación de puertos estática está habilitada de forma predeterminada para Public NAT. Por otro lado, Private NAT usa la asignación de puertos dinámica de forma predeterminada.
Como a todas las VMs se les asigna el mismo número de puertos, la asignación de puertos estáticos funciona mejor si todas las VMs tienen un uso de salida similar. Cuando se configura la asignación de puertos estáticos, el número de puertos asignados a cada VM es fijo y no cambia si algunas VMs usan más puertos que otras o si una VM agota todos sus puertos. Si el uso de salida varía, plantéate configurar la asignación dinámica de puertos.
Si quieres configurar Endpoint-Independent Mapping en tu pasarela NAT pública, debes usar la asignación de puertos estática. La asignación independiente de puntos finales no está disponible para las pasarelas NAT privadas.
Asignación dinámica de puertos
Cuando configuras la asignación dinámica de puertos, especificas un número mínimo de puertos por instancia de VM y un número máximo de puertos por instancia de VM.
La asignación dinámica de puertos está habilitada de forma predeterminada para la NAT privada. La NAT pública usa la asignación estática de puertos de forma predeterminada.
Si configuras la asignación dinámica de puertos, la misma pasarela de Cloud NAT podrá asignar diferentes números de puertos por VM en función del uso de la VM. Inicialmente, se asigna a una VM el número mínimo de puertos por instancia de VM. Si una VM está a punto de agotar todos los puertos que tiene asignados, se duplica el número de puertos asignados a la VM. La VM puede solicitar más puertos repetidamente hasta alcanzar el número máximo de puertos por instancia de VM. Cuando el uso de los puertos disminuye significativamente, estos se desasignan y se pueden asignar a otras VMs que usen la misma pasarela de NAT.
La asignación dinámica de puertos tiene las siguientes ventajas:
Se reduce el número de puertos asignados que no se están usando.
La pasarela de NAT monitoriza el uso de puertos de cada VM y modifica el número de puertos asignados a cada VM en función de las necesidades. No es necesario que monitorices el uso de los puertos ni que ajustes la configuración de la pasarela NAT.
Antes de usar la asignación dinámica de puertos, tenga en cuenta lo siguiente:
Si la asignación independiente de puntos finales está habilitada en la pasarela Cloud NAT, no puedes configurar la asignación dinámica de puertos. Si necesitas una asignación independiente del punto final, usa la asignación de puertos estática.
Mientras se asignan puertos adicionales a las VMs, es posible que se produzcan tiempos de espera o latencia en la conexión. Para ver estrategias que te ayuden a evitar que se interrumpan las conexiones, consulta el artículo Reduce las conexiones interrumpidas con la asignación dinámica de puertos.
Cambiar el método de asignación de puertos
Puedes cambiar entre la asignación de puertos estática y la dinámica para una pasarela de Cloud NAT determinada.
Si se cambia al método de asignación dinámica de puertos, se interrumpirán las conexiones NAT existentes solo si se cumple alguna de las siguientes condiciones:
Has definido el número máximo de puertos por VM en un valor inferior al número mínimo de puertos por VM especificado en la configuración de NAT anterior (con asignación de puertos estática).
Si en la configuración anterior el número mínimo de puertos por VM era superior a
1024
y especificas1024
como número máximo de puertos por VM en la nueva configuración, las conexiones existentes se interrumpirán porque la primera condición tiene prioridad.Has definido el número máximo de puertos por VM en un valor inferior a
1024
.
A menos que se cumpla alguna de las condiciones anteriores, al cambiar a la asignación dinámica de puertos no se interrumpirán las conexiones NAT.
Inhabilitar la asignación dinámica de puertos y cambiar a la asignación estática de puertos es un proceso que interrumpe el servicio y rompe todas las conexiones NAT activas.
Procedimiento de reserva de puertos
Cloud NAT sigue el procedimiento que se describe a continuación para aprovisionar tuplas de direcciones IP de origen y puertos de origen de NAT para cada VM a la que sirve la pasarela de Cloud NAT (tanto NAT pública como NAT privada).
Cloud NAT determina las direcciones IP internas de las VMs en las que se debe realizar NAT. Las direcciones IP internas de la máquina virtual se determinan mediante los intervalos de direcciones IP de la subred que se han configurado para que la pasarela proporcione.
Si la pasarela NAT pública está configurada para realizar NAT en el intervalo de direcciones IP principal de la subred que usa la interfaz de red de la VM, la pasarela realiza NAT en tanto la dirección IP interna principal de la VM como en cualquiera de los intervalos de IP de alias de la VM del intervalo de direcciones IP principal de la subred.
Si la pasarela NAT pública está configurada para realizar NAT en un intervalo de direcciones IP secundario de la subred que usa la interfaz de red de la VM, la pasarela realiza NAT en cualquier intervalo de IPs de alias del intervalo de direcciones IP secundario de esa subred.
Como una pasarela Private NAT está configurada para realizar NAT en todos los intervalos de direcciones IP de la subred que usa la interfaz de red de la VM, la pasarela realiza NAT en todos los intervalos de IP de esa subred.
Cloud NAT ajusta el número mínimo de puertos por instancia de VM si es necesario. Si se configura la asignación de puertos estática y la pasarela realiza NAT para intervalos de IP de alias que tienen más de una dirección (máscara de red inferior a
/32
), Cloud NAT ajusta el número mínimo de puertos por VM al máximo de estos dos valores:El número mínimo de puertos por instancia de VM que especifiques
El número 1024
En el resto de las situaciones, incluida la configuración de la asignación dinámica de puertos, la pasarela Cloud NAT pasa al siguiente paso usando como entrada el número mínimo de puertos por instancia de VM especificado. Si no especifica el número mínimo de puertos por instancia de VM, se usará el valor predeterminado:
64
para la asignación de puertos estáticos y32
para la asignación de puertos dinámicos.Cloud NAT reserva tuplas de dirección IP de origen y puerto de origen de NAT para cada VM. La pasarela de Cloud NAT usa el número mínimo de puertos por instancia de VM proporcionado o ajustado en el paso anterior para calcular el número de tuplas de dirección IP de origen y puerto de origen de NAT que se asignarán a la VM.
En el caso de NAT público, Google Cloud asigna tuplas de dirección IP de origen y puerto de origen de NAT usando múltiplos de potencias de dos, por lo que el número de tuplas de dirección IP de origen y puerto de origen de NAT es mayor o igual que el número mínimo de puertos por instancia de VM que especifiques.
En el caso de NAT privado, Google Cloud se asigna el doble del número mínimo de puertos por VM para garantizar la fiabilidad. Asegúrate de que la subred desde la que NAT privado asigna direcciones IP y puertos tenga el tamaño adecuado.
Si la pasarela Cloud NAT usa dos o más direcciones IP de NAT, es posible que las tuplas de dirección IP de origen y puerto de origen de NAT abarquen más de una dirección IP de NAT. Es posible que una sola dirección IP de NAT no tenga suficientes puertos de origen disponibles para dar cabida al número de tuplas de dirección IP de origen y puerto de origen de NAT que necesita una VM.
La pasarela de Cloud NAT asigna tuplas de dirección IP de origen y puerto de origen a cada máquina virtual.
Si has configurado la asignación de puertos estáticos, el número de direcciones IP de origen y de tuplas de puertos de origen es fijo. Cada máquina virtual no puede usar más tuplas de dirección IP de origen y puerto de origen que las que tiene asignadas, ni siquiera durante los picos de tráfico.
Si has configurado la asignación dinámica de puertos, el número de direcciones IP de origen y de tuplas de puertos de origen puede cambiar en función de la demanda. Si una VM está a punto de agotar su asignación de puertos actual, Cloud NAT asigna puertos adicionales hasta alcanzar el valor especificado en Máximo de puertos por instancia de VM. Cuando el uso de puertos de la VM se reduce por debajo de un umbral, los puertos se liberan y se pueden asignar a otras VMs.
Aumentar el número de puertos por VM
Si has configurado una pasarela de Cloud NAT con asignación de puertos estática, cuando aumentes el número mínimo de puertos por VM en la pasarela, no se interrumpirá el tráfico.
Si has configurado una pasarela de Cloud NAT con asignación dinámica de puertos, al aumentar el número mínimo, máximo o ambos de puertos por máquina virtual no se interrumpirán las conexiones NAT ni el tráfico que fluya a través de la pasarela de NAT.
Ten en cuenta lo siguiente cuando aumentes el número de puertos por VM:
Cuando se usa NAT pública con la asignación manual de direcciones IP de NAT, debes calcular el número de direcciones IP de origen de NAT que necesitas. Antes de aumentar el número mínimo de puertos por VM, asigna al menos ese número de direcciones IP de NAT a la pasarela de NAT pública.
Cuando se usa Public NAT con la asignación automática de direcciones IP de NAT, al aumentar el número mínimo de puertos por VM, la pasarela de Public NAT adquiere y asigna automáticamente más direcciones IP externas regionales.
Cuando uses NAT privado, asegúrate de que la subred desde la que asigna direcciones IP la pasarela tenga un número adecuado de direcciones IP.
Reducir el número de puertos por VM
Si has configurado una pasarela de Cloud NAT con asignación de puertos estática y reduces el número mínimo de puertos por VM en la pasarela, no se producirá ningún drenaje de conexiones. Las conexiones NAT establecidas se interrumpen inmediatamente y los clientes deben establecer nuevas conexiones TCP.
Si has configurado una pasarela de Cloud NAT con asignación dinámica de puertos, se cumplen las siguientes condiciones:
- Reducir el número mínimo de puertos por VM no interrumpe las conexiones NAT ni el tráfico que fluye a través de la pasarela NAT.
- Si se reduce el número máximo de puertos por VM, se interrumpirán todas las conexiones NAT inmediatamente y el número de puertos asignados a todas las VMs se restablecerá temporalmente al valor especificado para el número mínimo de puertos por VM.
Puertos y conexiones
El número de tuplas de dirección IP de origen y puerto de origen de NAT que reserva una pasarela de Cloud NAT para una VM restringe el número de conexiones que la VM puede establecer con un destino único:
Un destino único es una tupla de tres elementos única que consta de una dirección IP de destino, un puerto de destino y un protocolo IP (como TCP o UDP).
Una conexión es una quíntupla única formada por la tupla de dirección IP de origen y puerto de origen de NAT combinada con una tripla de destino única. Como el protocolo UDP no tiene conexión, el concepto de conexión se reduce a una tupla de 5 elementos asociada a un datagrama UDP único.
Supongamos que una pasarela Cloud NAT calcula 1024 como número fijo de puertos de una VM siguiendo el procedimiento de reserva de puertos. La pasarela de Cloud NAT reserva 1024 combinaciones únicas de tuplas de dirección IP de origen y puerto de origen de NAT para la VM. La pasarela de Cloud NAT puede procesar 1024 conexiones simultáneas a cada tupla de destino única de 3 elementos. Sin embargo, Cloud NAT considera que las conexiones cerradas son inutilizables durante 120 segundos después de que se cierren, lo que puede afectar al número de conexiones en uso en un momento dado.
Ejemplos:
La pasarela admite 1024 conexiones simultáneas a la dirección IP de destino
203.0.113.99
en el puerto80
mediante el protocolo TCP.La pasarela admite otras 1024 conexiones simultáneas a la misma dirección IP de destino en el puerto
443
, también mediante el protocolo TCP.La pasarela admite otras 1024 conexiones simultáneas a una dirección IP de destino diferente en el puerto
80
, también mediante el protocolo TCP.
Reutilización simultánea de puertos y asignación independiente de puntos finales
Siempre que cambie al menos un elemento de información de la tupla de destino (dirección IP de destino, puerto de destino o protocolo), la misma tupla de dirección IP de origen y puerto de origen de NAT se puede usar simultáneamente para muchas conexiones diferentes.
La NAT pública usa la asignación independiente de puntos finales, tal como se define en la sección 2.3 del RFC 5128. Por lo tanto, el número de conexiones simultáneas que una VM cliente puede establecer con una tupla de destino única de tres elementos puede reducirse si NAT público asigna la misma tupla de dirección IP de origen y puerto de origen de NAT a más de una dirección IP interna y un puerto de origen efímero de una VM cliente. Las probabilidades de que esto ocurra aumentan si la máquina virtual del cliente tiene un gran número de direcciones IP de origen internas y establece un gran número de conexiones con la misma tupla de tres elementos de destino. La primera vez que una VM cliente envía un paquete desde una dirección IP interna y un puerto de origen efímero, NAT público crea una asignación de muchos a uno independiente del endpoint entre los siguientes elementos:
- Tupla de dirección IP interna y puerto de origen efímero
- Una tupla única de dirección IP de origen y puerto de origen de NAT
Por ejemplo, cuando una VM cliente envía un paquete desde su dirección IP interna 10.0.0.2
mediante el puerto de origen efímero 10001
, Public NAT asigna 10.0.0.2:10001
. Esta tupla de dirección IP de origen y puerto de origen de NAT se usa para todas las conexiones posteriores de 10.0.0.2:10001
a cualquier tupla de destino de 3 elementos.
Si la misma VM usa un puerto de origen efímero diferente para enviar un paquete, por ejemplo, 10.0.0.2:20002
, NAT público también asigna una tupla de dirección IP de origen y puerto de origen de NAT para todas las conexiones posteriores de 10.0.0.2:20002
a cualquier tupla de destino de 3 elementos. Es posible que NAT público asigne la misma tupla de dirección IP de origen y puerto de origen NAT a ambas tuplas de dirección IP interna y puerto de origen efímero, lo que provocaría un conflicto independiente del endpoint en determinadas situaciones.
Para ver un ejemplo más detallado, consulta Ejemplo de conflicto de asignación independiente del endpoint.
Reducir los conflictos independientes de los endpoints
Puedes hacer cambios en la configuración para reducir los conflictos independientes de los endpoints. Para obtener más información, consulta Paquetes descartados por conflicto independiente del endpoint.
Retraso para la reutilización del puerto de origen TCP
Después de que una pasarela de Cloud NAT cierre una conexión TCP, Google Cloudse aplica un retraso antes de que la pasarela pueda reutilizar la misma tupla de dirección IP de origen y puerto de origen de NAT con el mismo destino (dirección IP de destino, puerto de destino y protocolo). La duración del retraso se controla mediante el ajuste TCP TIME_WAIT Timeout.
Si es necesario, puede reducir este retraso modificando el valor predeterminado del tiempo de espera TIME_WAIT de TCP. Para obtener información sobre cómo modificar los tiempos de espera de NAT, consulta Cambiar los tiempos de espera de NAT. También puede hacer uno de los siguientes cambios:
Aumenta el número mínimo de puertos por instancia de VM para que el procedimiento de reserva de puertos asigne a la VM más tuplas de dirección IP de origen y puerto de origen de NAT.
Si una VM necesita abrir y cerrar rápidamente conexiones TCP a la misma dirección IP y puerto de destino mediante el mismo protocolo, en lugar de usar Cloud NAT, asigna una dirección IP externa a la VM y usa reglas de cortafuegos para limitar las conexiones entrantes no solicitadas.
Puertos de origen y seguridad
Si dependes de la aleatorización del puerto de origen como medida de seguridad, debes tener en cuenta lo siguiente:
Aumenta el número mínimo de puertos por instancia de VM para que el procedimiento de reserva de puertos asigne a la VM más tuplas de dirección IP de origen y puerto de origen de NAT. Si aumentas el número mínimo de puertos por instancia de VM, se asignará un intervalo de puertos aleatorio a cada VM. Sin embargo, el puerto de origen elegido de ese intervalo será secuencial.
Asigna una dirección IP externa a la VM en lugar de usar NAT público.
Ejemplos
En los siguientes ejemplos se muestra cómo reserva Cloud NAT direcciones IP de origen y puertos de origen de NAT para una VM, y cómo realiza NAT para los paquetes enviados a Internet.
Reserva de puerto
En los siguientes ejemplos se muestran aplicaciones del procedimiento de reserva de puertos.
Supongamos que estás configurando una pasarela NAT pública para proporcionar NAT al intervalo de direcciones IP principal de una subred y que las VMs que usan esa subred no tienen ningún intervalo de direcciones IP de alias del intervalo de direcciones IP principal de la subred. Redondea a la baja el resultado de cualquier operación de división al entero más cercano. ⌊⌋ es la función de suelo (el entero mayor), lo que significa que se descarta cualquier resultado fraccionario de la división.
Si configuras la pasarela de NAT pública con una sola dirección IP de NAT mediante la asignación manual y estableces el número mínimo de puertos por instancia de VM en 64, la pasarela puede proporcionar servicios de NAT a un máximo de 1008 VMs:
⌊(1 dirección IP de NAT) × (64.512 puertos por dirección) / (64 puertos por VM)⌋ = 1008 VMs
Si necesitas admitir más de 1008 VMs, puedes asignar una segunda dirección IP de NAT a la pasarela de Cloud NAT. Con dos direcciones IP de NAT y manteniendo el número mínimo de puertos por VM en 64, puedes admitir 2016 VMs:
⌊(2 direcciones IP de NAT) × (64.512 puertos por dirección) / (64 puertos por VM)⌋ = 2016 VMs
Si asignas un mínimo de 4096 puertos por VM, cada dirección IP de NAT podrá admitir 15 VMs. Este cálculo se redondea al entero más cercano:
⌊(1 dirección IP de NAT) × (64.512 puertos por dirección) / (4096 puertos por VM)⌋ = 15 VMs
Supongamos que estás configurando una pasarela de NAT privada para proporcionar NAT a todas las direcciones IP de una subred:
El tamaño mínimo de subred que puedes crear es de ocho direcciones IPv4, lo que equivale a una máscara de subred
/29
. Si configura una pasarela NAT privada con una subred NAT de tamaño mínimo y establece el número mínimo de puertos por instancia de VM en 64, la pasarela puede proporcionar servicios NAT a un máximo de 2016 VMs:⌊(2(32-29) - 4) direcciones IP de NAT × (64.512 puertos por dirección) / (64 puertos por VM × 2)⌋ = 2016 VMs
En el ejemplo anterior, si define el número mínimo de puertos por instancia de VM en 1024, la pasarela puede proporcionar servicios NAT a un máximo de 126 VMs:
⌊(2(32-29) - 4) direcciones IP de NAT × (64.512 puertos por dirección) / (1024 puertos por VM × 2)⌋ = 126 VMs
Si configuras una pasarela Private NAT con una máscara de subred NAT de
/28
y estableces el número mínimo de puertos por instancia de VM en 64, la pasarela puede proporcionar servicios NAT a un máximo de 6048 VMs:⌊(2(32-28) - 4) direcciones IP de NAT × (64.512 puertos por dirección) / (64 puertos por VM × 2)⌋ = 6048 VMs
Conflicto de asignación independiente de puntos finales
En el siguiente ejemplo se muestra cómo la asignación independiente de puntos de conexión puede reducir el número de conexiones simultáneas de una VM cliente a la misma tupla de destino de 3 elementos, incluso cuando hay un número suficiente de tuplas de dirección IP de origen y puerto de origen de NAT libres disponibles para la VM cliente.
Supongamos que ha configurado una pasarela de Public NAT para proporcionar NAT al intervalo de direcciones IP principal de una subred. Has creado una VM cliente con una interfaz de red cuya dirección IP interna principal es 10.0.0.2
en esa subred. La VM de ejemplo no tiene asignada una dirección IP externa a su interfaz de red.
La VM abre una conexión con estas características:
- Dirección IP interna y puerto de origen:
10.0.0.2:10001
- Tupla de destino:
203.0.113.1:80
con TCP - La NAT pública usa la siguiente tupla de dirección IP de origen y puerto de origen de NAT:
192.0.2.10:30009
.
- Dirección IP interna y puerto de origen:
La VM abre una segunda conexión con estas características:
- Dirección IP interna y puerto de origen:
10.0.0.2:10002
- Tupla de destino:
203.0.113.2:80
con TCP - La NAT pública puede usar la misma tupla de dirección IP de origen y puerto de origen de NAT,
192.0.2.10:30009
, para esta conexión. Es posible usar la misma tupla de dirección IP de origen y puerto de origen de NAT para una dirección IP de cliente y un puerto de origen efímero diferentes.
- Dirección IP interna y puerto de origen:
Mientras estén activas la primera y la segunda conexión, NAT público no podrá abrir una tercera conexión TCP con estas características:
- Misma dirección IP interna de origen y mismo puerto que la primera conexión:
10.0.0.2:10001
- La misma tupla de destino de 3 elementos que la segunda conexión:
203.0.113.2:80
con TCP
Este tercer intento de conexión se rechaza con un error de conflicto independiente del endpoint porque la asignación independiente del endpoint establecida por la primera conexión exige que todas las conexiones de
10.0.0.2:10001
usen la misma tupla de dirección IP de origen y puerto de origen de NAT,192.0.2.10:30009
. Sin embargo,192.0.2.10:30009
ya está en uso en la segunda conexión TCP a203.0.113.2:80
.- Misma dirección IP interna de origen y mismo puerto que la primera conexión:
Para evitar ambigüedades, en este ejemplo, un intento de conexión posterior se realizará correctamente siempre que se cumpla una de las siguientes condiciones:
- Se ha cerrado la primera conexión TCP. Si se cierra la conexión, se elimina la asignación independiente de puntos finales entre
10.0.0.2:10001
y192.0.2.10:30009
, por lo que la tercera conexión se puede asignar a una tupla de dirección IP de origen y puerto de origen de NAT diferente para comunicarse con203.0.113.2:80
mediante TCP. - Se ha cerrado la segunda conexión TCP. Al cerrar la conexión, se libera
10.0.0.2:10001
para usar la dirección IP de origen y el puerto de origen de NAT192.0.2.10:30009
para comunicarse con203.0.113.2:80
mediante TCP. - En el tercer intento de conexión, se selecciona otro puerto de origen efímero (interno). En este ejemplo, una asignación independiente del endpoint ha establecido una asignación de muchos a uno para las direcciones IP de origen y los puertos de origen de NAT internos
10.0.0.2:10001
y10.0.0.2:10002
para usar192.0.2.10:30009
al comunicarse con203.0.113.2:80
mediante TCP. Si el tercer intento de conexión usa un puerto de origen efímero diferente de10001
y10002
, es posible que se pueda usar una dirección IP de origen y un puerto de origen de NAT diferentes para comunicarse con203.0.113.2:80
mediante TCP. - Desactivar la independencia de los endpoints. Esto permite que la nueva conexión de
10.0.0.2:10001
no tenga que usar192.0.2.10:30009
, lo que le permite usar una dirección IP y un puerto de origen NAT diferentes.
- Se ha cerrado la primera conexión TCP. Si se cierra la conexión, se elimina la asignación independiente de puntos finales entre
Para ver las técnicas que puedes usar para evitar conflictos, consulta Reducir los conflictos independientes de los endpoints.
Siguientes pasos
- Configura una pasarela NAT pública.
- Configura una pasarela NAT privada.
- Crea una configuración de ejemplo de Compute Engine.
- Crea una configuración de GKE de ejemplo.
- Soluciona problemas habituales.