Reglas de Cloud NAT

En esta página, se proporciona una descripción general de las reglas de Cloud NAT para NAT pública. Estas reglas te permiten definir cómo se usa Cloud NAT para conectarse a Internet.

Las reglas de Cloud NAT para NAT pública admiten la traducción de direcciones de red de origen (SNAT) según la dirección de origen o destino.

Reglas de NAT

De forma predeterminada, cuando configuras una puerta de enlace de Cloud NAT para NAT pública, los paquetes que traduce esa puerta de enlace de NAT usan el mismo conjunto de direcciones IP de NAT para llegar a todas las direcciones de Internet. Si necesitas más control sobre los paquetes que traduce Cloud NAT, puedes agregar reglas de NAT.

Una regla de NAT define una condición de coincidencia y una acción correspondiente. Después de especificar las reglas de NAT, cada paquete se compara con cada regla de NAT. Si un paquete coincide con la condición establecida en una regla, se produce la acción correspondiente a esa coincidencia.

Las reglas de NAT para NAT pública admiten la coincidencia de direcciones de origen y destino:

  • En las reglas basadas en el origen, los paquetes coinciden con su dirección IP de origen. Solo se admiten direcciones de origen IPv4.
  • En las reglas basadas en el destino, los paquetes coinciden con su dirección IP de destino. Solo se admiten direcciones de destino IPv4.

No se permite combinar condiciones basadas en el origen y el destino en una sola regla de NAT. Para obtener más información, consulta Especificaciones de las reglas de NAT.

Ejemplos de configuración de reglas de Cloud NAT

En esta sección, se proporcionan ejemplos de configuración para reglas de NAT basadas en el origen y el destino.

Reglas basadas en el origen

En el siguiente ejemplo, se muestra cómo puedes usar reglas de NAT basadas en el origen.

De forma predeterminada, cuando se configura una puerta de enlace de Cloud NAT para el tráfico IPv4 en una subred, la puerta de enlace proporciona NAT para la dirección IP interna principal y los rangos de alias de IP de cualquier instancia de VM en esa subred. Si usas reglas de NAT basadas en el origen, también puedes configurar NAT para instancias de VM con el reenvío de IP habilitado, como se describe en el siguiente ejemplo.

En este ejemplo, Cloud NAT está configurado en Subnet A. En la subred, una instancia de VM con la dirección IP interna principal 10.1.1.2 y un rango de alias de IP 10.2.1.0/24 envía tráfico a Internet. Considera los siguientes requisitos para la instancia de VM:

  • Si un paquete se origina en el rango de IP 192.168.1.0/24, la VM debe usar la dirección IP de NAT 203.0.113.10 para enviar tráfico a cualquier destino de Internet.
  • Si un paquete se origina en el rango de IP 192.168.2.0/24, la VM debe usar la dirección IP de NAT 203.0.113.20 para enviar tráfico a cualquier destino de Internet.
  • Si un paquete se origina en la dirección IP 10.1.1.2 o el rango de IP 10.2.1.0/24, la VM debe usar la dirección IP de NAT 203.0.113.30 para enviar tráfico a cualquier destino de Internet.
Configuración de Cloud NAT con reglas basadas en la fuente.
Configuración de Cloud NAT con dos reglas basadas en el origen (haz clic para ampliar).

Para cumplir con estos requisitos, crea dos reglas de NAT basadas en el origen para los paquetes reenviados y la regla predeterminada para los paquetes de la dirección IP interna principal y el rango de alias de IP de la instancia de VM:

  • Regla 1 basada en el origen: Si la dirección de origen es 192.168.1.0/24, usa 203.0.113.10 para enviar tráfico a Internet.
  • Regla 2 basada en el origen: Si la dirección de origen es 192.168.2.0/24, usa 203.0.113.20 para enviar tráfico a Internet.
  • La regla predeterminada: Para todos los demás paquetes, usa 203.0.113.30 para enviar tráfico a Internet.

Si la dirección de origen de un paquete reenviado por la instancia de VM no coincide con la regla 1 ni con la regla 2, se descarta el paquete.

Para obtener otro ejemplo de cómo puedes usar reglas de NAT basadas en el origen, consulta Cloud WAN en detalle: Un análisis más profundo de sus capacidades de red diferenciadas.

Reglas basadas en el destino

En el siguiente ejemplo, se muestra cómo usar las reglas de NAT cuando el destino permite el acceso desde solo unas pocas direcciones IP. Recomendamos que el tráfico a esos destinos desde tus Cloud de Confiance VMs en subredes privadas se traduzca con SNAT solo con las direcciones IP permitidas. Del mismo modo, te recomendamos que no uses estas direcciones IP para otros destinos.

Considera los siguientes requisitos para las VM en Subnet-1 (10.10.10.0/24), que se encuentra en la región A de la red de VPC test:

  • Las VM deben usar la dirección IP NAT 203.0.113.20 para enviar tráfico al destino 198.51.100.20/30.
  • Las VM deben usar la dirección IP NAT 203.0.113.30 para enviar tráfico al destino 198.51.100.30 o 198.51.100.31.
  • Las VM deben usar la dirección IP de NAT 203.0.113.40 para enviar tráfico a cualquier otro destino de Internet.

Esta red de VPC también contiene dos subredes adicionales en la misma región. Estas VM deben usar la dirección IP NAT 203.0.113.10 para enviar tráfico a cualquier destino.

Configuración de Cloud NAT con dos puertas de enlace de Cloud NAT.
Configuración de Cloud NAT con dos puertas de enlace de Cloud NAT (haz clic para ampliar).

Puedes usar reglas NAT para este ejemplo, pero necesitas dos puertas de enlace NAT porque Subnet-1 (10.10.10.0/24) tiene reglas NAT que son diferentes de las otras subredes. Para crear esta configuración, sigue estos pasos:

  1. Crea una puerta de enlace llamada Cloud NAT Gateway 1 para Subnet-1 con la dirección IP de NAT 203.0.113.40 y agrega las siguientes reglas:
    1. Regla 1 de NAT en Cloud NAT Gateway 1: Cuando el destino es 198.51.100.20/30, usa 203.0.113.20 para NAT.
    2. Regla 2 de NAT en Cloud NAT Gateway 1: Cuando el destino es 198.51.100.30 o 198.51.100.31, usa 203.0.113.30 para NAT.
  2. Crea una puerta de enlace llamada Cloud NAT Gateway 2 para las otras subredes de la región y asigna la dirección IP de NAT como 203.0.113.10. No se necesitan reglas de NAT en este paso.

Especificaciones de las reglas de NAT

  • Cloud NAT admite reglas basadas en el origen y el destino. Cada regla define una condición que se basa en la dirección de origen o destino, pero no en ambas.
  • La prioridad de una regla identifica de forma única una regla de NAT, desde 0 (prioridad más alta) hasta 65,000 (prioridad más baja). No puede haber dos reglas con la misma prioridad.
  • Cada configuración de NAT tiene una regla predeterminada:
    • La regla predeterminada se aplica si ninguna otra regla NAT coincide en la misma configuración de NAT.
    • La prioridad de la regla predeterminada es 65001.
    • Para las reglas basadas en el origen y el destino, el rango CIDR de IP de la regla predeterminada es 0.0.0.0/0.
    • La regla predeterminada no se aplica a los paquetes reenviados. Para usar NAT para estos paquetes, tu configuración de NAT debe incluir una regla basada en el origen coincidente. Para obtener más información, consulta Reglas basadas en el origen.
  • Las reglas de Cloud NAT solo son compatibles cuando el valor de la opción de asignación de IP de NAT es MANUAL_ONLY.
  • Todas las direcciones IP configuradas en una regla determinada deben ser del mismo nivel.

    No puedes usar una combinación de direcciones IP del nivel Premium y del nivel Estándar dentro de la misma regla (incluida la regla predeterminada).

  • Los rangos de CIDR de IP en las condiciones de coincidencia no deben superponerse en las reglas NAT. Como máximo, se puede aplicar una regla a cualquier paquete determinado. Si un paquete coincide con una regla basada en el origen y el destino, Cloud NAT aplica la regla que tiene mayor prioridad.

    No puedes crear una regla de NAT con 0.0.0.0/0 como rango de origen o destino porque la usa la regla predeterminada.

  • Las direcciones IP de NAT en las reglas NAT no se deben superponer.

  • Una regla debe tener una dirección IP Active o Drain no vacía. Si la regla tiene una dirección IP Active vacía, se descartan las conexiones nuevas que coinciden con la regla de NAT.

  • No se pueden agregar reglas NAT a una puerta de enlace NAT con el mapeo independiente de extremos (EIM) habilitado. No puedes habilitar el EIM en una puerta de enlace NAT con reglas NAT.

  • La puerta de enlace NAT usa el valor de configuración de puertos mínimos por VM para asignar puertos de origen a las VMs para cada regla NAT. Con 64,512 puertos disponibles por dirección IP de NAT, este valor de configuración determina la cantidad total de VMs que puede admitir una IP de NAT. Si una VM agota sus puertos asignados para una regla específica, se descartan las conexiones nuevas que coinciden con esa regla, incluso si otras reglas tienen puertos disponibles.

    Por ejemplo, considera una subred con 16 VMs en la que la puerta de enlace NAT está configurada con 4,096 puertos por VM. La puerta de enlace tiene dos reglas NAT (rule-1 con una dirección IP de NAT y rule-2 con dos direcciones IP de NAT), además de la regla NAT predeterminada con dos direcciones IP de NAT. En este ejemplo, la regla predeterminada y rule-2 tienen capacidad suficiente para asignar la cantidad requerida de puertos para todas las VMs. Sin embargo, rule-1 no puede proporcionar la asignación completa para las 16 VMs (16 × 4,096) porque su única dirección IP solo admite 64,512 puertos. En consecuencia, es posible que se descarte el tráfico que coincida con rule-1 para cualquier VM que no reciba su asignación de puertos completa.

  • Para minimizar las asignaciones de puertos inactivos cuando se usan reglas basadas en el origen, Cloud NAT asigna puertos a un extremo de VM solo si su dirección IP interna principal o de alias coincide con la dirección de origen que se especifica en la regla NAT. Por ejemplo, si una regla especifica 10.1.1.1, pero a una VM se le asigna 10.1.1.2, Cloud NAT no asigna puertos a esa VM para esa regla específica.

    Sin embargo, si una VM apta tiene habilitado el reenvío de IP, los puertos siempre se asignan porque la VM puede reenviar paquetes para otras fuentes.

Lenguaje de expresión de reglas

Las reglas de NAT se escriben con la sintaxis del lenguaje de expresiones comunes.

Una expresión requiere los siguientes dos componentes:

  • Atributos que se pueden inspeccionar en expresiones de reglas
  • Operaciones que se pueden realizar en los atributos como parte de una expresión

Por ejemplo, en la siguiente expresión, se usan los atributos destination.ip198.51.100.0/24 en la operación inIpRange(). En este caso, la expresión muestra un valor verdadero si destination.ip está dentro del rango de direcciones IP 198.51.100.0/24.

inIpRange(destination.ip, '198.51.100.0/24')

Las reglas de NAT solo admiten los siguientes atributos y operaciones:

Atributos

Los atributos representan información de un paquete saliente, como la dirección IP de origen y destino.

Nombre del atributo Descripción
source.ip Dirección IP de origen del paquete
destination.ip Dirección IP de destino del paquete

Operations

En la siguiente referencia, se describen los operadores que puedes usar con atributos para definir expresiones de reglas.

Operación Descripción
inIpRange(string, string) -> bool inIpRange(x, y) muestra true si el rango CIDR y contiene la dirección IP x.
|| Operador lógico. x || y devuelve true si x o y es true.
== Operador de igualdad. x == y devuelve true si x es igual a y.

Expresiones de ejemplo

Puedes hacer coincidir paquetes según la dirección de origen o destino, pero no ambas.

Ejemplos de coincidencias basadas en el origen

Haz coincidir paquetes con la dirección IP de origen 10.0.0.25:

"source.ip == '10.0.0.25'"

Haz coincidir paquetes con la dirección IP de origen 10.0.0.25 o 10.0.0.26:

"source.ip == '10.0.0.25' || source.ip == '10.0.0.26'"

Haz coincidir paquetes con el rango de direcciones IP de origen 10.0.2.0/24:

"inIpRange(source.ip, '10.0.2.0/24')"

Haz coincidir paquetes con la dirección IP de origen 10.0.0.25 o el rango de direcciones IP de origen 10.0.2.0/24:

"source.ip == '10.0.0.25' || inIpRange(source.ip, '10.0.2.0/24')"

Ejemplos de coincidencias basadas en el destino

Haz coincidir paquetes con la dirección IP de destino 198.51.100.20:

"destination.ip == '198.51.100.20'"

Haz coincidir paquetes con la dirección IP de destino 198.51.100.20 o 198.51.100.21:

"destination.ip == '198.51.100.20' || destination.ip == '198.51.100.21'"

Haz coincidir paquetes con el rango de direcciones IP de destino 198.51.100.10/30:

"inIpRange(destination.ip, '198.51.100.10/30')"

Haz coincidir paquetes con la dirección IP de destino 198.51.100.20 o el rango de direcciones IP de destino 198.51.100.10/30:

"destination.ip == '198.51.100.20' || inIpRange(destination.ip, '198.51.100.10/30')"

¿Qué sigue?