Reglas de Cloud NAT

La función de reglas NAT te permite crear reglas de acceso que definan cómo se usa Cloud NAT para conectarse a Internet. Las reglas de NAT admiten NAT de origen según la dirección de destino.

Cuando configuras una puerta de enlace NAT sin reglas NAT, las VM que usan 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 pasan a través de 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.

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 VM de Google Cloud en subredes privadas se traduzca con NAT 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 sea 198.51.100.20/30, usa NAT de origen con 203.0.113.20.
    2. Regla de NAT 2 en Cloud NAT Gateway 1: Cuando el destino sea 198.51.100.30 o 198.51.100.31, usa NAT de origen con 203.0.113.30.
  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

Antes de trabajar con reglas NAT, ten en cuenta las siguientes especificaciones:

  • Un número de regla identifica de forma exclusiva una regla NAT. No pueden existir dos reglas con el mismo número.
  • 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.
    • El número de la regla predeterminada es 65001.
    • El rango de CIDR de IP de destino 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 de destino en la condición de coincidencia no deben superponerse en las reglas NAT. Puede existir, como máximo, una regla que coincida con un paquete determinado.

    No puedes crear una regla de NAT con un rango de CIDR de IP de destino de 0.0.0.0/0, ya que ese rango se usa en 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 mediante 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 destino.

Nombre del atributo Descripción
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 verdadero si el rango de IP de CIDR contiene la dirección IP X.
|| Operador lógico. x || y muestra verdadero si x o y son verdaderos.
== Operador de igualdad. x == y muestra verdadero si x es igual a y.

Expresiones de ejemplo

Haz coincidir el tráfico con la dirección IP de destino 198.51.100.20

"destination.ip == '198.51.100.20'"

Haz coincidir el tráfico con la dirección IP de destino 198.51.100.10/30 o 198.51.100.20.

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

¿Qué sigue?