Reglas de Cloud NAT

En esta página, se proporciona una descripción general de las reglas de Cloud NAT para la 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 (versión preliminar) o de 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 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 coincide 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 la NAT pública admiten la coincidencia de direcciones de origen y destino:

  • En las reglas basadas en la fuente (vista previa), los paquetes se correlacionan según su dirección IP de origen. Solo se admiten direcciones IPv4 de origen.
  • En las reglas basadas en el destino, los paquetes se correlacionan según su dirección IP de destino. Solo se admiten direcciones de destino IPv4.

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

Ejemplo de configuración de la regla de Cloud NAT

En el siguiente ejemplo, se ilustra 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 VMs de Trusted Cloud en subredes privadas se traduzca con SNAT solo con las direcciones IP permitidas. 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 sea 198.51.100.20/30, usa 203.0.113.20 para la NAT.
    2. Regla de NAT 2 en Cloud NAT Gateway 1: Cuando el destino sea 198.51.100.30 o 198.51.100.31, usa 203.0.113.30 para la 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 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.
    • En el caso de las reglas basadas en la fuente y el destino, el rango de CIDR de IP de la regla predeterminada es 0.0.0.0/0.
  • 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 en 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 un paquete determinado. Si un paquete coincide con una regla basada en la fuente y en 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 habilitado. No puedes habilitar el mapeo independiente de extremos en una puerta de enlace NAT con reglas NAT.

Además, todas las VM obtienen puertos asignados desde el valor de puertos mínimos por VM para cada regla de Cloud NAT. Si se agotan los puertos asignados a una VM desde una regla de NAT, se descartan las conexiones nuevas que coinciden con la regla de NAT.

Por ejemplo, si configuras 4,096 puertos por VM y tienes 16 VM y 2 reglas NAT (rule1 con 1 dirección IP y rule2 con 2 direcciones IP), junto con la regla predeterminada (default) con 2 direcciones IP, las 16 VM obtendrán 4,096 puertos en cada paquete de reglas NAT. En este ejemplo, no hay problemas en default o rule2 para todas sus VM, pero rule1 no puede asignar puertos a todas sus VM. Por lo tanto, el tráfico de las VM que necesitan pasar por rule1 podría descartarse y mostrar signos de falta de recursos, ya que no usa la regla predeterminada.

Lenguaje de expresión de reglas

Las reglas de NAT se escriben con la sintaxis de Common Expression Language.

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) devuelve true si el rango de IP de 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 de destino, pero no ambas.

Ejemplos de coincidencias basadas en la fuente

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

"source.ip == '10.0.0.25'"

Haz coincidir los 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 los paquetes con el rango de direcciones IP de origen 10.0.2.0/24:

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

Haz coincidir los 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 los paquetes con la dirección IP de destino 198.51.100.20:

"destination.ip == '198.51.100.20'"

Haz coincidir los 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 los paquetes con el rango de direcciones IP de destino 198.51.100.10/30:

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

Haz coincidir los 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?