Reglas de Cloud NAT

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

Cuando configuras una pasarela de NAT sin reglas de NAT, las VMs que usan esa pasarela de NAT usan el mismo conjunto de direcciones IP de NAT para acceder a todas las direcciones de Internet. Si necesitas tener más control sobre los paquetes que pasan por Cloud NAT, puedes añadir reglas de NAT. Una regla NAT define una condición de coincidencia y una acción correspondiente. Una vez que especifiques las reglas de NAT, cada paquete se comparará con cada regla de NAT. Si un paquete coincide con la condición definida en una regla, se lleva a cabo la acción correspondiente a esa coincidencia.

Ejemplo de configuración de reglas de Cloud NAT

En el siguiente ejemplo se muestra cómo usar reglas de NAT cuando el destino solo permite el acceso desde unas pocas direcciones IP. Te recomendamos que el tráfico a estos destinos desde tus Google Cloud VMs en subredes privadas se traduzca mediante NAT de origen con solo las direcciones IP permitidas. Te recomendamos que no uses estas direcciones IP para otros destinos.

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

  • Las VMs deben usar la dirección IP de NAT 203.0.113.20 para enviar tráfico al destino 198.51.100.20/30.
  • Las máquinas virtuales deben usar la dirección IP de NAT 203.0.113.30 para enviar tráfico a los destinos 198.51.100.30 o 198.51.100.31.
  • Las VMs 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 VMs deben usar la dirección IP de NAT 203.0.113.10 para enviar tráfico a cualquier destino.

Configuración de Cloud NAT con dos pasarelas de Cloud NAT.
Configuración de Cloud NAT con dos pasarelas de Cloud NAT (haz clic en la imagen para ampliarla).

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

  1. Crea una pasarela llamada Cloud NAT Gateway 1 para Subnet-1 con la dirección IP de NAT 203.0.113.40 y añade las siguientes reglas:
    1. Regla de NAT 1 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 es 198.51.100.30 o 198.51.100.31, usa NAT de origen con 203.0.113.30.
  2. Crea una pasarela 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 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 puede haber dos reglas con el mismo número.
  • Cada configuración de NAT tiene una regla predeterminada:
    • La regla predeterminada se aplica si no coincide ninguna otra regla de NAT en la misma configuración de NAT.
    • El número de regla de la regla predeterminada es 65001.
    • El intervalo CIDR de IP de destino de la regla predeterminada es 0.0.0.0/0.
  • Las reglas de Cloud NAT solo se admiten 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 de nivel Premium y de nivel Estándar en la misma regla (incluida la regla predeterminada).

  • Los intervalos de notación CIDR de la IP de destino de la condición de coincidencia no deben solaparse entre las reglas NAT. Puede haber como máximo una regla que coincida con un paquete determinado.

    No puedes crear una regla de NAT con un intervalo CIDR de IP de destino de 0.0.0.0/0, porque ese intervalo se usa en la regla predeterminada.

  • Las direcciones IP de NAT de las reglas de NAT no deben solaparse.

  • Una regla debe tener un elemento Active que no esté vacío o una dirección IP Drain que no esté vacía. Si la regla tiene una dirección IP Active vacía, se rechazarán las conexiones nuevas que coincidan con la regla NAT.

  • No se pueden añadir reglas de NAT a una pasarela de NAT que tenga habilitada la opción Asignación independiente de puntos finales. No puedes habilitar la asignación independiente de puntos finales en una pasarela NAT que tenga reglas NAT.

Además, a todas las VMs se les asignan puertos a partir del valor de puertos mínimos por VM de cada regla de Cloud NAT. Si se agotan los puertos asignados a una VM desde una regla NAT, se descartarán las nuevas conexiones que coincidan con la regla NAT.

Por ejemplo, si configuras 4096 puertos por VM y tienes 16 VMs 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 VMs obtendrían 4096 puertos en cada paquete de reglas NAT. En este ejemplo, no hay problemas en default ni en rule2 para todas sus VMs, pero rule1 no puede asignar puertos a todas sus VMs. Por lo tanto, es posible que se elimine el tráfico de las máquinas virtuales que tenga que pasar por rule1 y que muestre signos de falta de recursos, ya que el tráfico no usa la regla predeterminada.

Lenguaje de expresiones de reglas

Las reglas de NAT se escriben con la sintaxis del lenguaje de expresión común.

Una expresión requiere 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, la siguiente expresión usa los atributos destination.ip y 198.51.100.0/24 en la operación inIpRange(). En este caso, la expresión devuelve el valor true si destination.ip está dentro del intervalo de direcciones IP 198.51.100.0/24.

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

Las reglas 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 de atributo Descripción
destination.ip Dirección IP de destino del paquete

Operaciones

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

Operación Descripción
inIpRange(string, string) -> bool inIpRange(X, Y) devuelve true si el intervalo CIDR de IP 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.

Ejemplos de expresiones

Coincide con el tráfico cuya dirección IP de destino es 198.51.100.20.

"destination.ip == '198.51.100.20'"

Coincide con el tráfico que tiene 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'"

Siguientes pasos