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 destino198.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 destinos198.51.100.30
o198.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.
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:
- Crea una pasarela llamada
Cloud NAT Gateway 1
paraSubnet-1
con la dirección IP de NAT203.0.113.40
y añade las siguientes reglas:- Regla de NAT 1 en
Cloud NAT Gateway 1
: cuando el destino sea198.51.100.20/30
, usa NAT de origen con203.0.113.20
. - Regla de NAT 2 en
Cloud NAT Gateway 1
: cuando el destino es198.51.100.30
o198.51.100.31
, usa NAT de origen con203.0.113.30
.
- Regla de NAT 1 en
- Crea una pasarela llamada
Cloud NAT Gateway 2
para las otras subredes de la región y asigna la dirección IP de NAT como203.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 IPDrain
que no esté vacía. Si la regla tiene una dirección IPActive
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'"