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 destino198.51.100.20/30
. - Las VM deben usar la dirección IP NAT
203.0.113.30
para enviar tráfico al destino198.51.100.30
o198.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.
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:
- Crea una puerta de enlace llamada
Cloud NAT Gateway 1
paraSubnet-1
con la dirección IP de NAT203.0.113.40
y agrega las siguientes reglas:- Regla 1 de NAT 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 sea198.51.100.30
o198.51.100.31
, usa NAT de origen con203.0.113.30
.
- Regla 1 de NAT en
- 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 como203.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 tener el mismo nivel.
No puedes usar una combinación de direcciones IP de nivel Premium y Estándar la misma regla (incluida la 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
oDrain
no vacía. Si la regla tiene una dirección IPActive
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 Common Expression Language sintaxis.
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.ip
y 198.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?
- Aprende a configurar reglas de NAT.