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 pública de NAT 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 (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 o eliges los valores predeterminados de Google Cloud, la NAT pública agrega automáticamente direcciones IP externas regionales a tu puerta de enlace según lo siguiente:
- El nivel de red que selecciones
- La cantidad de VMs que usan la puerta de enlace
- Es la cantidad de puertos que se reservan 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 dirección IP externa regional (reservada) estática en el nivel de red que seleccionaste cuando configuraste 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 tienen en cuenta para las cuotas por proyecto.
- Si cambias el nivel de red de una puerta de enlace de NAT pública, se liberarán las direcciones IP existentes de esa puerta de enlace 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 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 última VM asignada a la dirección ya no usa ningún puerto. Por lo tanto, cuando la cantidad de VMs que usan Public NAT disminuye, es posible que no veas una reducción en las IP . El motivo es que Cloud NAT no reasigna las VMs de forma dinámica 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 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 el nivel Premium, el nivel Estándar o ambos, sujetas 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 de direcciones IP de NAT manual, puedes asignar una combinación de direcciones IP de nivel Premium y 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 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 rechazará la configuración.
Cambia el método de asignación
Puedes cambiar una puerta de enlace de 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 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 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 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. El desvío le indica a la puerta de enlace de NAT pública que deje de usar la dirección IP de NAT para las conexiones nuevas, pero que continúe usándolas para las conexiones establecidas. Estas últimas pueden cerrarse normalmente, en vez de hacerlo de forma repentina. Para desviar una dirección IP asociada con una puerta de enlace de NAT pública que no use reglas de NAT, consulta Desvía las direcciones IP externas asociadas con NAT. Para desviar una dirección IP asociada con una puerta de enlace de NAT que usa reglas de NAT, consulta Actualiza las reglas de NAT.
Direcciones IP NAT privadas
Una dirección NAT privada es una dirección IPv4 interna regional que proviene del rango de direcciones IPv4 principal de una subred de NAT privada ubicada en la misma región y red de VPC que una puerta de enlace de NAT privada. Una dirección IP de NAT privada no se puede enrutar en Internet. Solo las puertas de enlace de NAT privadas pueden usar las direcciones IP de los rangos de direcciones IPv4 principales de las subredes de 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 concentrador 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. En cambio, cuando creas una regla en una puerta de enlace de NAT privada, especificas manualmente las subredes de NAT privadas. Las subredes de NAT privadas deben estar ubicadas en la misma red de VPC y región 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 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 rango de direcciones IPv4 principal de la subred de NAT privada. Cuatro direcciones IP son inutilizables en cada 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 los primeros 1,024 puertos conocidos (privilegiados).
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. 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 el cambio del método de asignación de puertos de una puerta de enlace de Cloud NAT afecta a las conexiones establecidas, consulta Cambia 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. Cuando se configura la asignación de puertos estática, la cantidad de puertos asignados a cada VM es fija 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, 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. La NAT pública usa la asignación de puertos estáticos de forma predeterminada.
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 está habilitada la asignación independiente de extremos 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.
Cambia el 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.
Si cambias al método de asignación de puertos dinámica, se interrumpirán las conexiones de NAT existentes solo si se cumple alguna de las siguientes condiciones:
Estableces la cantidad máxima de puertos por VM en un valor que sea 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
.
A menos que se cumpla alguna de las condiciones anteriores, cambiar a la asignación dinámica de puertos no interrumpe las conexiones NAT existentes.
Inhabilitar la asignación dinámica de puertos y cambiar a la asignación de puertos estática es disruptivo y rompe 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 para cada VM que entrega la puerta de enlace de Cloud NAT (NAT pública y NAT 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 de 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 realiza NAT para ambas direcciones IP internas principales de la VM y cualquiera de los rangos de alias de IP de la VM del rango de direcciones IP principal de la subred.
Si la puerta de enlace de 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 realizará NAT para cualquier rango de IP de alias de ese rango de direcciones IP de la subred.
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 los puertos mínimos por instancia de VM, se usa el valor predeterminado:
64
para la asignación de puertos estáticos 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.
En el caso de la NAT pública, Google Cloud asigna direcciones IP de origen y tuplas de puerto de origen de NAT mediante varios múltiplos de dos, de manera que la cantidad de direcciones IP de origen y tuplas de puerto de origen de NAT es mayor o igual que los puertos mínimos por instancia de VM que especifiques.
En el caso de Private NAT, Google Cloud asigna el doble de la cantidad de puertos mínimos requeridos 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.
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 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 por VM:
Cuando uses la NAT pública con asignación manual de direcciones IP de NAT, debes calcular la cantidad de direcciones IP NAT de origen que necesitas. Antes de aumentar los puertos mínimos por VM, asigna al menos esa cantidad de direcciones IP 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 las conexiones de NAT existentes ni interrumpe el tráfico que pasa por la puerta de enlace de 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
La cantidad de direcciones IP de origen de NAT y de tuplas de puerto de origen que reserva una puerta de enlace de Cloud NAT 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 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 el mapeo independiente de extremos, como se define en la Sección 2.3 de la RFC 5128. Como resultado, la cantidad de conexiones simultáneas que una VM cliente puede realizar a una tupla triple de destino única podría reducirse si la NAT pública 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 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, NAT pública crea un mapeo 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 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, 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 triple de destino.
Si la misma VM utiliza 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 pueda asignar la misma dirección IP de origen de NAT y la tupla de puerto de origen a ambas de estas direcciones IP internas y tuplas de puerto de origen efímeras, lo que causa 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 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 del tiempo de espera de 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 conexiones TCP a la misma dirección IP de destino y puerto de destino mediante el mismo protocolo, en lugar de Cloud NAT, 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. Si aumentas la cantidad mínima de puertos por instancia de VM, se asigna un rango de puertos de forma aleatoria a cada VM. Sin embargo, el puerto de origen elegido en 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 de NAT pública para proporcionar NAT para el rango de direcciones IP principal de una subred, y las VMs que usan esa subred no tienen los rangos de alias de IP que corresponden al rango principal de direcciones IP de esa 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 mediante 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 VMs
Supongamos que estás configurando una puerta de enlace 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, que es una 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 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 de NAT para hasta 126 VMs:
⌊(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 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 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 el mapeo independiente de extremos puede reducir la cantidad de conexiones simultáneas de una VM cliente a la misma tupla triple de destino, incluso cuando existe una cantidad suficiente de direcciones IP de origen de NAT y tuplas de puerto de origen libres para la VM cliente.
Supongamos que configuraste una puerta de enlace de NAT pública para proporcionar NAT al 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.
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 también podría usar la misma dirección IP de origen de NAT y 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 que 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 a203.0.113.2:80
ya está usando192.0.2.10:30009
.- 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 del extremo entre
10.0.0.2:10001
y192.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 con203.0.113.2:80
mediante TCP. - Se cerró la segunda conexión TCP. Cerrar la conexión libera
10.0.0.2:10001
para usar la dirección IP de origen y el puerto de origen192.0.2.10:30009
a fin de comunicarse con203.0.113.2:80
mediante 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. - Desactivación de la independencia del extremo. La activación permite que la conexión nueva de
10.0.0.2:10001
no necesite usar192.0.2.10:30009
, lo que le permite utilizar una dirección IP y un puerto NAT diferentes.
- Se cerró la primera conexión TCP. Si cierras la conexión, se quitará el mapeo independiente del 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 de 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.