Direcciones IP y puertos

En esta página, se describe cómo las puertas de enlace de Cloud NAT usan direcciones IP y cómo asignan puertos de origen a instancias de máquina virtual (VM) de Compute Engine y nodos de Google Kubernetes Engine (GKE) que usan las puertas de enlace.

Antes de revisar esta información, familiarízate con la descripción general de 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 una dirección IP externa, que se encuentra en una subred entregada por una puerta de enlace NAT pública, usa una dirección IP de 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 puerta de enlace NAT pública, usa uno de los siguientes métodos:

  • Asignación automática de direcciones IP de NAT. Cuando seleccionas este método o eliges los valores predeterminados de Google Cloud, la NAT pública agrega automáticamente direcciones IP externas regionales a la puerta de enlace en función de lo siguiente:

    • El nivel de red que selecciones
    • La cantidad de VMs que usan la puerta de enlace
    • La cantidad de puertos reservados para cada VM

    La NAT pública también quita automáticamente una dirección IP de NAT cuando ya no necesita ningún puerto de origen en esa dirección IP de NAT.

    Las siguientes son las características de la asignación automática de direcciones IP de NAT:

    • Cuando una puerta de enlace NAT pública agrega una dirección IP de NAT, crea una dirección IP externa regional, estática (reservada) en el nivel de red que seleccionaste en el momento de configurar la puerta de enlace. Por ejemplo, si seleccionaste 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 que se agregaron automáticamente se pueden ver en la lista de direcciones IP externas estáticas. Estas direcciones no se consideran en las cuotas por proyecto.

    • Si cambias el nivel de red de una puerta de enlace NAT pública, las direcciones IP existentes de esa puerta de enlace se liberan y se asigna un nuevo conjunto de direcciones IP del nivel seleccionado.
    • Con la asignación automática, no puedes predecir la siguiente dirección IP asignada. Si dependes de conocer el conjunto de direcciones IP de NAT posibles con anticipación (por ejemplo, para crear una lista de anunciantes permitidos), debes usar la asignación manual de direcciones IP de NAT.
    • Cuando las direcciones IP de NAT agregadas automáticamente dejan de usarse, se quitan. Sin embargo, la NAT pública solo desasigna una dirección cuando la última VM asignada a la dirección ya no usa ningún puerto. Por lo tanto, es posible que no veas una disminución en la IP cuando disminuya la cantidad de VM que usan NAT pública . La razón es que Cloud NAT no reasigna de forma dinámica las VM de una dirección IP a otra porque la reasignación interrumpiría las conexiones establecidas. Siempre que al menos una VM use una dirección IP, esta permanece activa y se pueden asignar VM nuevas.

      Si deseas reasignar de forma manual las VM de una dirección IP a otra para minimizar el uso de la dirección IP, usa asignaciones de direcciones IP de NAT manuales. La asignación manual de direcciones IP de NAT permite el vaciado de direcciones IP de NAT públicas.

    • Si cambias a la asignación manual de direcciones IP de NAT más adelante, se borran las direcciones IP externas regionales reservadas automáticamente. Para obtener más información, consulta Cambia el método de asignación.

  • Asignación manual de direcciones IP de NAT. Cuando seleccionas esta opción, creas y asignas de forma manual direcciones IP externas regionales (reservadas) estáticas a tu puerta de enlace NAT pública. Puedes asignar direcciones IP de forma manual, ya sea del nivel Premium o del nivel Estándar, o desde ambos, sujetas a las conditions.

    • Para aumentar o disminuir la cantidad de direcciones IP de NAT asignadas manualmente, edita la puerta de enlace de Cloud NAT.
    • Cuando usas la asignación manual de direcciones IP de NAT, debes calcular la cantidad de direcciones IP externas regionales que necesitas para la puerta de enlace NAT pública. Si tu puerta de enlace se queda sin direcciones IP de NAT, la NAT pública descarta los paquetes. Los paquetes descartados se registran cuando usas el registro de Cloud NAT para activar el registro de errores.
    • Para ver ejemplos de cálculos, consulta el ejemplo de reserva de puerto.

Para ver la cantidad máxima de direcciones IP de NAT asignadas de forma manual o automática, consulta Límites de Cloud NAT.

Asigna manualmente una combinación de direcciones IP de nivel Premium y Estándar.

Cuando creas una puerta de enlace 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 Estándar, siempre y cuando las direcciones IP de diferentes niveles de red no pertenezcan a la misma regla (incluida la regla predeterminada).

Dentro de una regla (incluida la predeterminada), todas las direcciones IP asignadas a los rangos activos deben ser del mismo nivel de red. Si intentas usar direcciones IP de diferentes niveles como parte de la misma regla, Google Cloud rechaza la configuración.

Cambiar método de asignación

Puedes cambiar una puerta de enlace NAT pública de la asignación automática de direcciones IP de NAT a la asignación manual de direcciones IP de NAT. Sin embargo, las direcciones IP de 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 dirección IP de NAT. Por ejemplo, no puedes comenzar a usar una puerta de enlace NAT pública con direcciones IP de NAT asignadas automáticamente y, luego, usar las mismas direcciones cuando cambias a direcciones IP de NAT asignadas manualmente.

El conjunto de direcciones IP externas regionales que usa la NAT pública para la asignación automática de direcciones IP de NAT es diferente del conjunto de direcciones IP externas regionales que puedes elegir de forma manual.

Desvía las direcciones IP de NAT públicas

Cuando configuras una puerta de enlace NAT pública con asignación manual de direcciones IP de NAT, puedes elegir qué sucede cuando necesitas reducir la cantidad de direcciones IP de NAT que usa la puerta de enlace:

  • Si quitas una dirección IP de NAT asignada de forma manual, las conexiones NAT establecidas se interrumpen de inmediato.

  • Puedes elegir desviar de forma manual una dirección IP de NAT asignada. El vaciado le indica a la puerta de enlace NAT pública que deje de usar la dirección IP de NAT para las conexiones nuevas, pero que continúe usándola para las conexiones establecidas. Estas últimas pueden cerrarse normalmente, en vez de hacerlo de forma repentina. Para vaciar una dirección IP asociada con una puerta de enlace NAT pública que no usa reglas de NAT, consulta Desvía las direcciones IP externas asociadas con NAT. Para vaciar una dirección IP asociada con una puerta de enlace NAT que usa reglas de NAT, consulta Actualiza las reglas de NAT.

Direcciones IP de NAT privada

La NAT privada requiere dos redes de nube privada virtual (VPC), cada una configurada como un radio de VPC en el mismo concentrador de Network Connectivity Center. Para obtener más información sobre los radios de VPC y Network Connectivity Center, consulta la Descripción general de los radios de VPC.

Una dirección NAT privada es una dirección IPv4 interna regional que proviene del rango de direcciones IPv4 principal de una subred NAT privada ubicada en la misma región y red de VPC que una puerta de enlace NAT privada. Una dirección IP de NAT privada no se puede enrutar en Internet. Solo las puertas de enlace NAT privadas pueden usar las direcciones IP de los rangos de direcciones IPv4 principales de las subredes NAT privadas. Para crear una subred NAT privada, agrega una subred solo IPv4 con Google Cloud CLI y la marca --purpose=PRIVATE_NAT.

Después de configurar una puerta de enlace NAT privada para proporcionar servicios de NAT a una subred en una red de VPC conectada a un concentrador de Network Connectivity Center, las VM con interfaces de red en esa subred pueden enviar paquetes a recursos ubicados en otros radios de VPC del concentrador. Durante la salida, Google Cloud cambia la dirección IP de origen a una dirección IP de la subred de NAT privada que está asociada con la puerta de enlace.

Las siguientes son características de las direcciones IP de NAT privada:

  • No puedes asignar automáticamente direcciones IP de NAT privada a una puerta de enlace NAT privada. En su lugar, cuando creas una regla en una puerta de enlace NAT privada, debes especificar de forma manual las subredes de NAT privada. Las subredes NAT privadas deben estar ubicadas en la misma red de VPC y región que la puerta de enlace. La puerta de enlace usa solo direcciones IP de los rangos de direcciones IPv4 principales de las subredes NAT privadas.
  • 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, en la que PREFIX_LENGTH es la longitud de la máscara de subred del rango de direcciones IPv4 principal de la subred de NAT privada. No se pueden usar cuatro direcciones IP en el rango de direcciones IPv4 principal de cada subred.

Puertos

Cada dirección IP de NAT en una puerta de enlace de Cloud NAT (NAT pública y NAT privada) 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, pero Cloud NAT no usa los primeros 1,024 puertos conocidos (con privilegios).

Cuando una puerta de enlace de Cloud NAT realiza la traducción de direcciones de red de origen (SNAT) en un paquete enviado por una VM, cambia el puerto de origen y la dirección IP de origen NAT del paquete.

Cuando creas una puerta de enlace de Cloud NAT, debes elegir si deseas usar la asignación de puerto estática o la asignación de puerto dinámica. Cuando cambias el modo de asignación de puertos, todas las conexiones existentes que usan la puerta de enlace NAT pública se cierran y deben restablecerse.

Si asignaste de forma manual varias direcciones IP externas regionales (reservadas) estáticas a tu puerta de enlace NAT pública, una sola VM que usa la puerta de enlace puede obtener los puertos necesarios de cualquiera de las direcciones IP de NAT asignadas, incluso de varias direcciones IP de NAT al mismo tiempo.

Asignación de puerto estática

Cuando configuras la asignación de puertos estáticos, especificas una cantidad mínima de puertos por instancia de VM. Si no especificas la cantidad mínima de puertos en la VM, Google Cloud usa el valor predeterminado.

La asignación de puertos estáticos está habilitada de forma predeterminada para la NAT pública. Por otro lado, la NAT privada usa la asignación dinámica de puertos.

Debido a que a todas las VM se les asigna la misma cantidad de puertos, la asignación de puertos estáticos funciona mejor si todas las VM tienen un uso de salida similar. Si algunas VM usan más puertos que otras, es posible que los puertos de la puerta de enlace de Cloud NAT estén en poco uso. Si el uso de salida varía, considera configurar la asignación dinámica de puertos.

Si deseas configurar el mapeo independiente de extremos en tu puerta de enlace NAT pública, debes usar la asignación de puertos estáticos. El mapeo independiente de extremos no está disponible para puertas de enlace NAT privadas.

Asignación dinámica de puertos

Cuando configuras la asignación dinámica de puertos, especificas una cantidad mínima de puertos por instancia de VM y una cantidad máxima de puertos por instancia de VM.

La asignación dinámica de puertos está habilitada de forma predeterminada para la NAT privada. En el caso de la NAT pública, debes configurar la asignación dinámica de puertos de forma manual.

La configuración de la asignación dinámica de puertos permite que la misma puerta de enlace de Cloud NAT asigne diferentes cantidades de puertos por VM, según el uso de la VM. En principio, una VM tiene asignada la cantidad mínima de puertos por instancia de VM. Si una VM está cerca de agotar todos los puertos que se le asignaron, se duplica la cantidad de puertos asignados a la VM. La VM puede solicitar más puertos hasta la cantidad máxima de puertos por instancia de VM. Cuando el uso de puertos disminuye significativamente, los puertos se desasignan y se pueden asignar a otras VM que usan la misma puerta de enlace NAT.

La asignación dinámica de puertos tiene los siguientes beneficios:

  • Se reduce la cantidad de puertos asignados, pero sin usar.

  • La puerta de enlace NAT supervisa el uso de cada puerto de VM y modifica la cantidad de puertos asignados a cada VM, según sea necesario. No es necesario supervisar el uso del puerto ni ajustar la configuración de la puerta de enlace NAT.

Antes de usar la asignación dinámica de puertos, ten en cuenta lo siguiente:

Cambiar método de asignación de puertos

Puedes cambiar entre la asignación de puertos estáticos y la asignación de puertos dinámicos para una puerta de enlace de Cloud NAT determinada.

Cambiar al método de asignación dinámica de puertos interrumpe las conexiones NAT existentes solo si se cumple alguna de las siguientes condiciones:

  • Establece la cantidad máxima de puertos por VM en un valor menor que la cantidad mínima de puertos por VM que se especifica en la configuración de NAT anterior (con asignación de puertos estáticos).

    Si en la configuración anterior la cantidad mínima de puertos por VM se estableció en más de 1024 y si especificas 1024 como la cantidad máxima de puertos por VM en la configuración nueva, las conexiones existentes se interrumpirán debido a que la primera condición tiene prioridad.

  • Establece la cantidad máxima de puertos por VM en un valor menor que 1024.

A menos que se cumpla alguna de las condiciones anteriores, el cambio a la asignación dinámica de puertos no interrumpe las conexiones NAT existentes.

La inhabilitación de la asignación dinámica de puertos y el cambio a la asignación de puertos estáticos es disruptivo, además de interrumpir todas las conexiones NAT activas.

Procedimiento de reserva de puertos

Cloud NAT usa el siguiente procedimiento para aprovisionar la dirección IP de origen de NAT y las tuplas de puerto de origen a cada VM a la que entrega la puerta de enlace de Cloud NAT (NAT pública y NAT privada).

  1. Cloud NAT determina las direcciones IP internas de las VM para las que se debe aplicar NAT. Las direcciones IP internas de las VM están determinadas por los rangos de direcciones IP de la subred que la puerta de enlace está configurada para entregar.

    • Si la puerta de enlace NAT pública está configurada para realizar NAT para el rango de direcciones IP principal de la subred que usa la interfaz de red de la VM, la puerta de enlace aplica NAT tanto para la dirección IP interna principal de la VM como para cualquiera de los rangos de IP de alias de la VM del rango de direcciones IP principal de la subred.

    • Si la puerta de enlace NAT pública está configurada para realizar NAT para un rango de direcciones IP secundario de la subred utilizada por la interfaz de red de la VM, la puerta de enlace realiza NAT para cualquier rango de alias de IP del rango de direcciones IP secundario de esa subred.

    Debido a que una puerta de enlace NAT privada está configurada para realizar NAT para todos los rangos de direcciones IP de la subred que usa la interfaz de red de la VM, la puerta de enlace realiza NAT para todos los rangos de IP de esa subred.

  2. Cloud NAT ajusta los puertos mínimos por instancia de VM si es necesario. Si está configurada la asignación estática de puertos y la puerta de enlace realiza NAT para los rangos de IP de alias que tienen más de una dirección (máscara de red menor que /32), Cloud NAT ajusta los puertos mínimos por VM para que sean el máximo de estos dos valores:

    • Los puertos mínimos por instancia de VM que especificaste

    • El número 1,024

    En todas las demás situaciones, incluso cuando se configura la asignación de puertos dinámica, la puerta de enlace de Cloud NAT continúa con el paso siguiente mediante los puertos mínimos especificados por instancia de VM como entrada. Si no especificas la cantidad mínima de puertos por instancia de VM, se usa el valor predeterminado: 64 para la asignación de puertos estáticos y 32 para la asignación de puertos dinámicos.

  3. Cloud NAT reserva direcciones IP de origen de NAT y tuplas de puerto de origen para cada VM. La puerta de enlace de Cloud NAT usa los puertos mínimos especificados o ajustados por instancia de VM del paso anterior para calcular la cantidad de direcciones IP NAT de origen y tuplas de puerto de origen para asignar a la VM.

    Para la NAT pública, Google Cloud asigna la dirección IP de origen de NAT y las tuplas de puerto de origen con múltiplos de dos, por lo que la cantidad de direcciones IP de origen de NAT y las tuplas de puerto de origen es mayor o igual que la cantidad mínima de puertos por instancia de VM que especifiques.

    Para la NAT privada, Google Cloud asigna el doble de puertos mínimos necesarios por VM para brindar confiabilidad. Asegúrate de que la subred desde la cual la NAT privada asigna direcciones IP y puertos tenga el tamaño adecuado.

    • Si la puerta de enlace de Cloud NAT usa dos o más direcciones IP de NAT, es posible que la dirección IP de origen de NAT y las tuplas de puerto de origen 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 ajustar la cantidad de direcciones IP de NAT de origen y de tuplas de puerto de origen que necesita la VM.

    • La puerta de enlace de Cloud NAT asigna direcciones IP de origen y tuplas de puerto de origen a cada VM.

      • Si configuraste la asignación estática de puertos, la cantidad de direcciones IP de origen y tuplas de puertos de origen es fija. Cada VM no puede usar más que su número asignado de direcciones IP de origen y de puerto de origen, incluso durante los aumentos de actividad de tráfico.

      • Si configuraste la asignación dinámica de puertos, la cantidad de direcciones IP de origen y tuplas de puertos de origen puede cambiar según la demanda. Si una VM está a punto de agotar su asignación de puertos actual, Cloud NAT asigna puertos adicionales hasta el valor máximo de puertos por instancia de VM especificado. Una vez que el uso del puerto de la VM se reduce por debajo de un umbral, los puertos se liberan y se pueden asignar a otras VM.

Aumenta los puertos por VM

Si configuraste una puerta de enlace de Cloud NAT con asignación estática de puertos, cuando aumentes los puertos mínimos por VM en la puerta de enlace no se interrumpirá el tráfico.

Si configuraste una puerta de enlace de Cloud NAT con asignación dinámica de puertos, aumentar el número mínimo, máximo o ambos de puertos por VM no interrumpirá las conexiones de NAT existentes ni el tráfico que fluye a través de la puerta de enlace NAT.

Ten en cuenta lo siguiente cuando aumentes la cantidad de puertos en la VM:

  • Cuando uses NAT pública con asignación manual de direcciones IP de NAT, deberás calcular la cantidad de direcciones IP de origen de NAT que necesitas. Antes de aumentar la cantidad mínima de puertos por VM, asigna al menos esa cantidad de direcciones IP de NAT a la puerta de enlace NAT pública.

  • Cuando se utiliza NAT pública con asignación automática de direcciones IP de NAT, aumentar la cantidad mínima de puertos por VM hace que la puerta de enlace de NAT pública adquiera y asigne más direcciones IP externas regionales automáticamente.

  • Cuando uses NAT privada, asegúrate de que la subred desde la cual la puerta de enlace asigna direcciones IP tenga una cantidad adecuada de direcciones IP.

Reduce los puertos por VM

Si configuraste una puerta de enlace de Cloud NAT con asignación estática de puertos y reduces los puertos mínimos por VM en la puerta de enlace, no hay vaciado de conexiones. Las conexiones NAT establecidas se interrumpen de inmediato, y los clientes deben establecer nuevas conexiones TCP.

Si configuraste una puerta de enlace de Cloud NAT con asignación dinámica de puertos, se aplican las siguientes declaraciones:

  • Reducir la cantidad mínima de puertos por VM no interrumpe las conexiones NAT existentes ni interrumpe el tráfico que fluye a través de la puerta de enlace NAT.
  • La reducción de la cantidad máxima de puertos por VM interrumpe todas las conexiones NAT existentes de inmediato, y la cantidad de puertos asignados para todas las VM se restablece de forma temporal al valor especificado para la cantidad mínima de puertos por VM.

Puertos y conexiones

La cantidad de direcciones IP de origen de NAT y de tuplas de puerto de origen que una puerta de enlace de Cloud NAT reserva para una VM restringe la cantidad de conexiones que la VM puede realizar a un destino único:

  • Un destino único se refiere a una tupla triple única compuesta por una dirección IP de destino, un puerto de destino y un protocolo IP (como TCP o UDP).

  • Una conexión se refiere a una tupla quíntuple única compuesta por la dirección IP de origen de NAT y la tupla de puerto de origen combinada con una tupla triple de destino único. Debido a que el protocolo UDP no tiene conexión, el concepto de conexión se reduce a una tupla quíntuple asociada con un datagrama UDP único.

Supongamos que una puerta de enlace de Cloud NAT calcula 1,024 como la cantidad fija de puertos para una VM mediante el procedimiento de reserva de puertos. La puerta de enlace de Cloud NAT reserva 1,024 combinaciones únicas de direcciones IP de origen y tuplas de puerto de origen para la VM. La puerta de enlace de Cloud NAT puede procesar 1,024 conexiones simultáneas hacia cada tupla triple de destino único. Sin embargo, Cloud NAT considera las conexiones cerradas como inutilizables durante los 120 segundos posteriores al cierre de la conexión, lo que puede afectar la cantidad de conexiones simultáneas en uso.

Ejemplos:

  • La puerta de enlace admite 1,024 conexiones simultáneas a la dirección IP de destino 203.0.113.99 en el puerto 80 mediante el protocolo TCP.

  • La puerta de enlace admite otras 1,024 conexiones simultáneas a esa misma dirección IP de destino en el puerto 443, también mediante el protocolo TCP.

  • La puerta de enlace admite otras 1,024 conexiones simultáneas a una dirección IP de destino diferente en el puerto 80, también mediante el protocolo TCP.

Mapeo independiente de extremos y reutilización de puertos simultáneos

Siempre que al menos un dato en la tupla triple de destino cambie (la dirección IP de destino, el puerto de destino o el protocolo) la misma dirección IP de origen de NAT y la tupla del puerto de origen se pueden usar simultáneamente para diferentes conexiones.

La NAT pública usa un mapeo independiente de extremos, como se define en la sección 2.3 de RFC 5128. Como resultado, la cantidad de conexiones simultáneas que una VM cliente puede hacer a una tupla triple de destino única puede reducirse si la NAT pública asigna la misma dirección IP de origen y tupla de 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 posibilidades de que esto suceda aumentan si la VM cliente tiene una gran cantidad de direcciones IP internas de origen y realiza una gran cantidad de conexiones a la misma tupla triple 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, la NAT pública crea una asignación independiente de extremo de varios a uno entre lo siguiente:

  • La dirección IP interna y la tupla de puerto de origen efímera
  • Una dirección IP de origen de NAT única y la tupla de puerto de origen

Por ejemplo, cuando una VM de cliente envía un paquete desde su dirección IP interna 10.0.0.2 mediante el puerto de origen efímero 10001, la NAT pública asigna 10.0.0.2:10001. Esta dirección IP de origen de NAT y la tupla de puerto de origen se usan para todas las conexiones posteriores de 10.0.0.2:10001 a cualquier tupla triple de destino.

Si la misma VM usa un puerto de origen efímero diferente para enviar un paquete, por ejemplo, 10.0.0.2:20002, la NAT pública también asigna una dirección IP de origen de NAT y una tupla de puerto de origen para todas las conexiones posteriores de 10.0.0.2:20002 a cualquier tupla triple de destino. Es posible que la NAT pública asigne la misma dirección IP de origen de NAT y la tupla de puerto de origen a ambas direcciones IP internas y tuplas de puerto de origen efímeras, lo que provoca un conflicto independiente del extremo en ciertas situaciones.

Para obtener un ejemplo más detallado, consulta el ejemplo de un conflicto de mapeo independiente de extremos.

Reduce los conflictos independientes del endpoint

Puedes realizar cambios en la configuración para reducir los conflictos independientes de extremos. Para obtener más información, consulta Paquetes descartados con un conflicto de extremos independiente del motivo.

Demora para la reutilización de puertos de origen TCP

Después de que una puerta de enlace de Cloud NAT cierra una conexión TCP, Google Cloud aplica una demora antes de que la puerta de enlace pueda volver a usar la misma dirección IP de origen de NAT y la tupla de puerto de origen con el mismo destino (dirección IP de destino, puerto de destino y protocolo). La duración del retraso se controla mediante la configuración Tiempo de TCP_WAIT.

Si es necesario, puedes reducir esta demora; para ello, modifica el valor predeterminado del tiempo de espera de TCP TIME_WAIT. Para obtener información sobre cómo modificar los tiempos de espera de NAT, consulta Cambia los tiempos de espera de NAT. Como alternativa, puedes realizar uno de los siguientes cambios:

  • Aumenta la cantidad mínima de puertos por instancia de VM para que el procedimiento de reserva de puertos asigne a la VM más direcciones IP de origen de NAT y tuplas de puertos de origen.

  • Si una VM necesita abrir y cerrar con rapidez conexiones TCP a la misma dirección IP y puerto de destino mediante el mismo protocolo, en lugar de Cloud NAT, debes asignar una dirección IP externa a la VM y usar reglas de firewall para limitar las conexiones de entrada no solicitadas.

Puertos de origen y seguridad

Si dependes de la aleatorización del puerto de origen como una medida de seguridad, debes tener en cuenta lo siguiente:

  • Aumenta la cantidad mínima de puertos por instancia de VM para que el procedimiento de reserva de puertos asigne a la VM más direcciones IP de origen de NAT y tuplas de puertos de origen. Cuando se aumenta la cantidad mínima de puertos por instancia de VM, se asigna un rango de puertos al azar a cada VM. Sin embargo, el puerto de origen elegido de ese rango es secuencial.

  • Asigna una dirección IP externa a la VM en lugar de usar NAT pública.

Ejemplos

En los siguientes ejemplos, se demuestra cómo Cloud NAT reserva direcciones IP de origen de NAT y puertos de origen para una VM y cómo realiza una NAT para los paquetes enviados a Internet.

Reserva de puertos

En los siguientes ejemplos, se muestran los usos del procedimiento de reserva de puertos.

Supongamos que estás configurando una puerta de enlace NAT pública a fin de proporcionar NAT para el rango de direcciones IP principal de una subred, y las VM que usan esa subred no tienen ningún rango de alias de IP del rango de direcciones IP principal de la subred. Redondea el resultado de cualquier operación de división al número entero más cercano. ⌊⌋ corresponde a la función floor (número entero más grande); es decir, descarta cualquier resultado fraccionario de división.

  • Si configuras la puerta de enlace NAT pública con una sola dirección IP de NAT mediante la asignación manual y estableces la cantidad mínima de puertos por instancia de VM en 64, la puerta de enlace puede proporcionar servicios de NAT para hasta 1,008 VMs:

    ⌊(1 dirección IP de NAT) × (64,512 puertos por dirección) / (64 puertos por VM)⌋ = 1,008 VM

  • Si necesitas admitir más de 1,008 VM, puedes asignar una segunda dirección IP de NAT a la puerta de enlace de Cloud NAT. Con dos direcciones IP de NAT, que mantienen la cantidad mínima de puertos por VM en 64, puedes admitir 2,016 VM:

    ⌊(2 direcciones IP de NAT) × (64,512 puertos por dirección) / (64 puertos por VM)⌋ = 2,016 VM

  • Si estableces la cantidad mínima de puertos por VM en 4,096, cada dirección IP de NAT puede admitir 15 VM. Este cálculo se redondea al número entero más cercano:

    ⌊(1 dirección IP de NAT) × (64,512 puertos por dirección) / (4,096 puertos por VM)⌋ = 15 VM

Supongamos que estás configurando una puerta de enlace NAT privada para proporcionar NAT a todas las direcciones IP de una subred:

  • El tamaño de subred mínimo que puedes crear es ocho direcciones IPv4, que es una máscara de subred de /29. Si configuras una puerta de enlace NAT privada con una subred de NAT de tamaño mínimo y estableces la cantidad mínima de puertos por instancia de VM en 64, la puerta de enlace puede proporcionar servicios de NAT para hasta 2,016 VM:

    ⌊(2(32-29) - 4) direcciones IP de NAT × (64,512 puertos por dirección) / (64 puertos por VM × 2)⌋ = 2,016 VMs

    En el ejemplo anterior, si estableces la cantidad mínima de puertos por instancia de VM en 1,024, la puerta de enlace puede proporcionar servicios NAT para hasta 126 VM:

    ⌊(2(32-29) - 4) direcciones IP de NAT × (64,512 puertos por dirección) / (1,024 puertos por VM × 2)⌋ = 126 VMs

  • Si configuras una puerta de enlace NAT privada con una máscara de subred NAT de /28 y estableces la cantidad mínima de puertos por instancia de VM en 64, la puerta de enlace puede proporcionar servicios de NAT para hasta 6,048 VM:

    ⌊(2(32-28) - 4) direcciones IP de NAT × (64,512 puertos por dirección) / (64 puertos por VM × 2)⌋ = 6,048 VMs

Conflicto de mapeo independiente de extremos

En el siguiente ejemplo, se ilustra cómo la asignación independiente de extremos podría reducir la cantidad de conexiones simultáneas de una VM cliente a la misma tupla triple de destino, incluso cuando hay una cantidad suficiente de direcciones IP de origen de NAT y tuplas de puerto de origen disponibles para la VM cliente.

Supongamos que configuraste una puerta de enlace NAT pública a fin de proporcionar NAT para el rango de direcciones IP principal de una subred. Creaste 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 una dirección IP externa asignada a su interfaz de red.

  1. La VM abre una conexión con las siguientes características:

    • Puerto y dirección IP internas de origen: 10.0.0.2:10001
    • Tupla triple de destino: 203.0.113.1:80 mediante TCP
    • La NAT pública usa la siguiente dirección IP de origen de NAT y la tupla de puerto de origen: 192.0.2.10:30009
  2. La VM abre una segunda conexión con las siguientes características:

    • Puerto y dirección IP internas de origen: 10.0.0.2:10002
    • Tupla triple de destino: 203.0.113.2:80 mediante TCP
    • La NAT pública también podría usar la misma dirección IP de origen de NAT y la tupla de puerto de origen,192.0.2.10:30009, para esta conexión. Se puede usar la misma dirección IP de origen de NAT y la tupla de puerto de origen para una dirección IP de cliente diferente y un puerto de origen efímero.
  3. Mientras la primera y la segunda conexión están activas, la NAT pública no puede abrir una tercera conexión TCP con estas características:

    • La misma dirección IP interna de origen y puerto que la primera conexión: 10.0.0.2:10001
    • La misma tupla triple de destino que la segunda conexión: 203.0.113.2:80 mediante TCP

    Este tercer intento de conexión se descarta con un error de conflicto independiente del extremo porque la asignación independiente de extremos establecida por la primera conexión exige que todas las conexiones de 10.0.0.2:10001 usen la misma dirección IP de origen de NAT y la misma tupla de puerto de origen, 192.0.2.10:30009. Sin embargo, la segunda conexión TCP a 203.0.113.2:80 ya usa 192.0.2.10:30009.

  4. Para evitar la ambigüedad, un intento de conexión posterior en este ejemplo es correcto siempre que uno de los siguientes casos sea verdadero:

    • Se cerró la primera conexión TCP. Si cierras la conexión, se quita la asignación independiente de extremos entre 10.0.0.2:10001 y 192.0.2.10:30009, por lo que la tercera conexión se puede asignar a una dirección IP de origen de NAT y a una tupla de puerto de origen diferentes para comunicarse con 203.0.113.2:80 mediante TCP.
    • Se cerró la segunda conexión TCP. Si cierras la conexión, se libera 10.0.0.2:10001 para usar la dirección IP de origen de NAT y el puerto de origen 192.0.2.10:30009 para comunicarse con 203.0.113.2:80 a través de TCP.
    • El tercer intento de conexión selecciona un puerto de origen efímero (interno) diferente. En este ejemplo, un mapeo independiente de extremos estableció un mapeo de varios a uno para direcciones IP NAT de origen internas y los puertos de origen 10.0.0.2:10001 y 10.0.0.2:10002 a fin de usar 192.0.2.10:30009 cuando se realiza la comunicación con 203.0.113.2:80 mediante TCP. Si el tercer intento de conexión usa un puerto de origen efímero distinto de 10001 y 10002, existe la posibilidad de que se use una dirección IP de origen de NAT y un puerto de origen diferentes para comunicarse con 203.0.113.2:80 mediante TCP.
    • Desactivar la independencia del extremo: Esto permite que la nueva conexión de 10.0.0.2:10001 no necesite usar 192.0.2.10:30009, lo que le permite usar una dirección IP y un puerto de origen de NAT diferentes.

Para ver técnicas que puedas usar a fin de evitar conflictos, consulta Reduce los conflictos independientes de extremos.

¿Qué sigue?