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 los 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 puertas de enlace.
Antes de revisar esta información, familiarízate con la descripción general de Cloud NAT.
Direcciones IP públicas de NAT
Una dirección IP de NAT pública es una dirección IP externa regional que se pueden enrutar en Internet. Una VM sin una dirección IP externa, que se encuentra en una subred que entrega una puerta de enlace de 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 de NAT pública, usa uno de los siguientes métodos:
Asignación automática de direcciones IP de NAT. Cuando seleccionas este método elige la configuración predeterminada de Google Cloud, la NAT pública agrega automáticamente externas y regionales a la puerta de enlace en función de lo siguiente:
- El nivel de red que seleccionas
- 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 puertos 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 de NAT pública agrega una dirección IP de NAT, crea una una dirección IP externa regional estática (reservada) en el nivel de red que seleccionados en el momento de configurar la puerta de enlace. Por ejemplo, si seleccionaste el nivel Premium, la puerta de enlace de 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 agregadas 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, existentes de direcciones IP de esa puerta de enlace se liberan 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 ya no están en uso, se quitan. Sin embargo, la NAT pública solo desasigna una dirección cuando la La última VM asignada a la dirección ya no usa ningún puerto. Por lo tanto, cuando la cantidad de VMs que usan NAT pública disminuye, es posible que no veas un de reducción de la IP . Esto se debe a que Cloud NAT no realiza reasignaría las VMs de una dirección IP a otra porque y interrumpir 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 desvío 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 direcciones IP externas regionales estáticas (reservadas) a tu puerta de enlace de NAT pública de forma manual. Puedes asignar direcciones IP de forma manual desde Nivel Premium, del nivel Estándar o de ambos, sujeto a condiciones.
- Para aumentar o disminuir la cantidad de direcciones IP de NAT asignadas manualmente, edita la puerta de enlace de Cloud NAT.
- Cuando uses la asignación manual de dirección IP de NAT, debes calcular la cantidad de direcciones IP externas regionales que necesitas para la puerta de enlace de 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 una combinación de direcciones IP de nivel Premium y Estándar de forma manual
Cuando creas una puerta de enlace de 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 que Las direcciones IP de los diferentes niveles de red no pertenecen a la misma regla. (incluida la regla predeterminada).
Dentro de una regla (incluida la regla predeterminada), todas las direcciones IP asignadas a los rangos 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.
Cambia el método de asignación
Puedes cambiar una puerta de enlace de NAT pública desde una dirección IP de NAT automática a la asignación manual de direcciones IP de NAT; pero 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 de NAT pública con direcciones IP de NAT asignadas automáticamente y, luego, usar las mismas direcciones cuando cambias a las direcciones IP de NAT asignadas manualmente.
El conjunto de direcciones IP externas regionales que la NAT pública usa para la asignación automática de direcciones IP de NAT es diferente del conjunto de externas que puedes elegir manualmente.
Desvía las direcciones IP públicas de NAT
Cuando configuras una puerta de enlace de NAT pública con asignación de dirección IP de NAT manual, 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. Vaciado le indica a la puerta de enlace de NAT pública que deje de usar la dirección IP de NAT para conexiones nuevas, pero seguirá usándola para conexiones establecidas. Estas últimas pueden cerrarse normalmente, en vez de hacerlo de forma repentina. Para desviar una dirección IP asociada con una 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 NAT consulta Actualiza reglas de NAT.
Direcciones IP NAT privadas
Una dirección de NAT privada es una dirección IPv4 interna regional que
proviene del rango de direcciones IPv4 principal de una NAT privada
subred 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. direcciones IP de los rangos de direcciones IPv4 principales de
Solo las subredes NAT privadas pueden usar
Puertas de enlace NAT privadas Para crear una subred de 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 de NAT privada para proporcionar servicios de NAT para una subred en 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 de NAT privada o redes fuera de Google Cloud que están conectadas a Google Cloud a través de Cloud Interconnect o Cloud VPN. En 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 NAT privadas:
- No puedes asignar automáticamente direcciones IP de NAT privadas a una puerta de enlace de NAT privada. Por el contrario, cuando creas una regla en una de puerta de enlace NAT privada, debes especificar Subredes o subredes NAT privadas. NAT privada deben estar ubicadas en la misma región y red de VPC que la puerta de enlace. La puerta de enlace usa direcciones IP solo de los rangos de direcciones IPv4 principales de las subredes de NAT privadas.
- Para determinar cuántas direcciones IP de NAT hay en cada subred de NAT privada
puedes proporcionar, utiliza la siguiente fórmula:
2(32 - PREFIX_LENGTH) - 4
, dondePREFIX_LENGTH
es la longitud de la máscara de subred de la IPv4 principal de la subred NAT privada un rango de direcciones IP. Se incluyen cuatro direcciones IP inutilizables en todas rango de direcciones IPv4 principal de la 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 de TCP y 64,512 puertos de origen de UDP. TCP y UDP admiten 65,536 puertos por dirección IP, pero Cloud NAT no usa 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, eliges si deseas usar estática asignación de puertos o asignación de puertos dinámica. Puedes cambiar el método de asignación de puertos después de crear la puerta de enlace. Para obtener información sobre cómo cambiar el método de asignación de puertos para un La puerta de enlace de Cloud NAT afecta las conexiones establecidas, consulta Cambiar el método de asignación de puertos
Si asignaste manualmente varias direcciones IP externas regionales estáticas (reservadas) a tu puerta de enlace de NAT pública, una sola VM que use 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 por VM, Google Cloud usa el valor predeterminado.
La asignación de puertos estática está habilitada de forma predeterminada para la NAT pública. Por otro lado, la NAT privada usa la asignación de puertos dinámica de forma predeterminada.
Debido a que todas las VMs tienen asignada la misma cantidad de puertos, la asignación estática de puertos funciona mejor si todas las VMs 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 la asignación independiente de extremos en tu puerta de enlace de NAT pública, debes usar la asignación estática de puertos. El mapeo independiente de extremos no está disponible para las puertas de enlace de 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. Para 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:
Si el mapeo independiente de extremos está habilitado en la puerta de enlace de Cloud NAT, No puedes configurar la asignación dinámica de puertos. Si necesitas un mapeo independiente de extremos, usa la asignación de puertos estática.
Mientras se asignan puertos adicionales a las VMs, es posible que veas tiempos de espera de conexión o latencia. Para ver estrategias que ayuden a evitar la pérdida de conexiones, consulta Reduce las conexiones descartadas con la asignación dinámica de puertos.
Cambiar método de asignación de puertos
Puedes cambiar entre la asignación de puertos estática y la asignación de puertos dinámica 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:
Estableces la cantidad máxima de puertos por VM en un valor inferior a 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 configuró en más de
1024
y especificas1024
como la cantidad máxima de puertos por VM en la configuración nueva, las conexiones existentes se interrumpen porque la primera condición tiene prioridad.Estableces la cantidad máxima de puertos por VM en un valor inferior a
1024
.
Cambiar a la asignación dinámica de puertos, a menos que se cumpla alguna de las condiciones anteriores no interrumpe las conexiones NAT existentes.
Inhabilitar la asignación dinámica de puertos y cambiar a la asignación de puertos estáticos es y interrumpe 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 tuplas de puerto de origen para cada VM a la que Cloud NAT (tanto las NAT públicas privada y privada).
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 ejecuta NAT para ambas direcciones IP internas principales de la VM y cualquiera de los rangos de alias de IP de la VM desde la subred rango principal de direcciones IP.
Si la puerta de enlace NAT pública está configurada para realizar NAT para un rango de direcciones IP secundario de la subred que usa la interfaz de red de la VM la puerta de enlace realiza la NAT para cualquier rango de IP de alias desde la puerta de enlace rango de direcciones IP.
Debido a que una puerta de enlace de 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.
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 el Cantidad mínima de puertos por instancia de VM, se usa el valor predeterminado:
64
para el puerto estático y32
para la asignación dinámica de puertos.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 NAT pública, Google Cloud asigna la IP de origen de NAT dirección y tuplas de puerto de origen que usan múltiplos de potencias de dos, de modo que el número de La dirección IP de origen de NAT y las tuplas de puerto de origen son mayores o iguales que la cantidad mínima de puertos por instancia de VM que especifiques.
Para la NAT privada, Google Cloud asigna el doble de de elementos requeridos la cantidad mínima de puertos por VM para garantizar la confiabilidad. Asegúrate de que el tamaño de la subred desde la que la NAT privada asigna direcciones IP y puertos sea el adecuado.
Si la puerta de enlace de Cloud NAT usa dos o más direcciones IP 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 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.
Aumentar 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 la cantidad mínima, máxima o ambas de puertos por VM no interrumpe las conexiones NAT existentes ni interrumpe el tráfico que pasa por la puerta de enlace de NAT.
Ten en cuenta lo siguiente cuando aumentes la cantidad de puertos a la VM:
Cuando uses NAT pública con asignación manual de direcciones IP de NAT, debes hacer lo siguiente: calculate 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 muchas direcciones IP de NAT a la puerta de enlace de NAT pública.
Cuando se usa NAT pública con asignación automática de direcciones IP NAT, el aumento de 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 de forma automática.
Cuando uses NAT privada, asegúrate de que la subred desde la que 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, entonces las siguientes afirmaciones son verdaderas:
- Reducir la cantidad mínima de puertos por VM no interrumpe la NAT existente. o interrumpir el tráfico que fluye a través de la puerta de enlace NAT.
- Si reduces la cantidad máxima de puertos por VM, se interrumpen todas las conexiones NAT existentes de inmediato, y la cantidad de puertos asignados para todas las VMs se restablece temporalmente al valor especificado para la cantidad mínima de puertos por VM.
Puertos y conexiones
El número de direcciones IP de origen de NAT y de tuplas de puerto de origen que un Las reservas de puerta de enlace de Cloud NAT para una VM restringen la cantidad de conexiones que la VM puede hacer en 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 puerto80
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 asignación independiente de extremos, como se define en Sección 2.3 de RFC 5,128. Como Como resultado, la cantidad de conexiones simultáneas que una VM cliente puede hacer a un destino único Es posible que se reduzca 3 tuplas si la NAT pública asigna la misma fuente de NAT Dirección IP y tupla de puerto de origen a más de una dirección IP interna y puerto de origen efímero de la VM del 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 efímeros, la NAT pública crea una red de Asignación independiente de extremo entre los siguientes elementos:
- 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 cliente envía un paquete desde su dirección IP interna
10.0.0.2
a través del puerto de origen efímero 10001
, NAT pública asigna
10.0.0.2:10001
. Luego, se usan esta dirección IP de origen de NAT y la tupla de puerto de origen.
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
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 el
la misma dirección IP de origen de NAT y la tupla de puerto de origen a ambas direcciones IP internas
dirección y tuplas de puerto de origen efímeras que causan un conflicto independiente de extremos
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 de extremos
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 este retraso modificando el valor predeterminado de la Se agotó el tiempo de espera del TCP TIME_WAIT. Para obtener información sobre cómo modificar los tiempos de espera de NAT, consulta Cómo cambiar 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 rápidamente las conexiones TCP a la misma la dirección IP de destino y el puerto de destino usando el mismo protocolo, luego en lugar de Cloud NAT, asigna una dirección IP externa al VM y usa reglas de firewall para limitar las entradas no solicitadas conexiones de red.
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. Si aumentas la cantidad mínima de Los puertos por instancia de VM asignan un rango de puertos de forma aleatoria 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 configuras una puerta de enlace NAT pública para proporcionar NAT a la principal de direcciones IP de una subred, y las VMs que usan esa subred no tener rangos de alias de IP del rango principal de direcciones IP 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 de NAT pública con una sola dirección IP de NAT con la asignación manual y estableces la cantidad mínima de puertos por VM a 64, la puerta de enlace puede proporcionar servicios de NAT para un máximo de 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 VMs
Supongamos que configuras una puerta de enlace NAT privada para proporcionar para todas las direcciones IP de una subred:
El tamaño mínimo de subred que se puede crear es de ocho direcciones IPv4, que es un máscara de subred de
/29
. Si configuras una puerta de enlace de 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 VMs:⌊(2(32-29) - 4) Direcciones IP 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 de NAT para hasta 126 VMs:
⌊(2(32-29) - 4) Direcciones IP NAT × (64,512 puertos por dirección) / (1,024 puertos por VM × 2)⌋ = 126 VMs
Si configuras una puerta de enlace de NAT privada con una máscara de subred de 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 VMs:⌊(2(32-28) - 4) Direcciones IP NAT × (64,512 puertos por dirección) / (64 puertos por VM × 2)⌋ = 6,048 VMs
Conflicto de mapeo independiente de extremos
El siguiente ejemplo ilustra cómo el mapeo 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 haya una cantidad suficiente de fuentes de NAT libres Dirección IP y tuplas de puerto de origen disponibles para la VM del cliente.
Supongamos que configuraste una puerta de enlace NAT pública para proporcionar NAT al
el rango principal de direcciones IP 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.
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
- Puerto y dirección IP internas de origen:
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 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.
- Puerto y dirección IP internas de origen:
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 el mapeo independiente del extremo establecido por la primera conexión exige que todas las conexiones de
10.0.0.2:10001
deban usar 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 ya está usando192.0.2.10:30009
para203.0.113.2:80
- La misma dirección IP interna de origen y puerto que la primera conexión:
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 quitará el
Mapeo independiente de extremo entre
10.0.0.2:10001
y192.0.2.10:30009
, así que la tercera conexión se puede asignar a una dirección IP de origen de NAT diferente y la tupla de puerto de origen para comunicarse con203.0.113.2:80
a través de 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 origen192.0.2.10:30009
para comunicarse con203.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
y10.0.0.2:10002
a fin de usar192.0.2.10:30009
cuando se realiza la comunicación con203.0.113.2:80
mediante TCP. Si el tercer intento de conexión usa un puerto de origen efímero distinto de10001
y10002
, existe la posibilidad de que se use una dirección IP de origen de NAT y un puerto de origen diferentes para comunicarse con203.0.113.2:80
mediante TCP. - Desactiva la independencia del extremo. La activación o desactivación permite que el nuevo
conexión de
10.0.0.2:10001
no necesita usar192.0.2.10:30009
, lo que le permite usar una dirección IP y un puerto de origen de NAT diferentes.
- Se cerró la primera conexión TCP. Si cierras la conexión, se quitará el
Mapeo independiente de extremo entre
Para ver técnicas que puedas usar a fin de evitar conflictos, consulta Reduce los conflictos independientes de extremos.
¿Qué sigue?
- Configura una puerta de enlace NAT pública.
- Configura una puerta de enlace de NAT privada.
- Crea un ejemplo de configuración de Compute Engine.
- Crea una configuración de GKE de ejemplo.
- Soluciona los problemas comunes.