Regras do NAT na nuvem

A funcionalidade de regras de NAT permite-lhe criar regras de acesso que definem como o Cloud NAT é usado para estabelecer ligação à Internet. As regras de NAT suportam NAT de origem com base no endereço de destino.

Quando configura um gateway NAT sem regras NAT, as VMs que usam esse gateway NAT usam o mesmo conjunto de endereços IP NAT para alcançar todos os endereços da Internet. Se precisar de mais controlo sobre os pacotes que passam pelo Cloud NAT, pode adicionar regras de NAT. Uma regra de NAT define uma condição de correspondência e uma ação correspondente. Depois de especificar as regras de NAT, cada pacote é associado a cada regra de NAT. Se um pacote corresponder à condição definida numa regra, ocorre a ação correspondente a essa correspondência.

Exemplo de configuração de regras do Cloud NAT

O exemplo seguinte ilustra como usar regras de NAT quando o seu destino permite o acesso apenas a partir de alguns endereços IP. Recomendamos que o tráfego para esses destinos a partir das suas VMs em sub-redes privadas seja traduzido por NAT de origem apenas com os endereços IP permitidos. Google Cloud Recomendamos que não use estes endereços IP para outros destinos.

Considere os seguintes requisitos para VMs em Subnet-1 (10.10.10.0/24), que está na região A da rede VPC test:

  • As VMs têm de usar o endereço IP NAT 203.0.113.20 para enviar tráfego para o destino198.51.100.20/30.
  • As VMs têm de usar o endereço IP NAT 203.0.113.30 para enviar tráfego para o destino 198.51.100.30 ou 198.51.100.31.
  • As VMs têm de usar o endereço IP NAT 203.0.113.40 para enviar tráfego para qualquer outro destino de Internet.

Esta rede VPC também contém duas sub-redes adicionais na mesma região. Estas VMs têm de usar o endereço IP NAT 203.0.113.10 para enviar tráfego para qualquer destino.

Configuração do Cloud NAT com duas gateways do Cloud NAT.
Configuração do NAT na nuvem com duas gateways do NAT na nuvem (clique para aumentar).

Pode usar regras de NAT para este exemplo, mas precisa de duas gateways de NAT porque Subnet-1 (10.10.10.0/24) tem regras de NAT diferentes das outras sub-redes. Para criar esta configuração, siga estes passos:

  1. Crie um gateway denominado Cloud NAT Gateway 1 para Subnet-1 com o endereço IP de NAT 203.0.113.40 e adicione as seguintes regras:
    1. Regra de NAT 1 em Cloud NAT Gateway 1: quando o destino é 198.51.100.20/30, use NAT de origem com 203.0.113.20.
    2. Regra NAT 2 em Cloud NAT Gateway 1: quando o destino é 198.51.100.30 ou 198.51.100.31, use o NAT de origem com 203.0.113.30.
  2. Crie um gateway denominado Cloud NAT Gateway 2 para as outras sub-redes da região e atribua o endereço IP de NAT como 203.0.113.10. Não são necessárias regras de NAT neste passo.

Especificações das regras de NAT

Antes de trabalhar com regras de NAT, tenha em atenção as seguintes especificações:

  • Um número de regra identifica de forma exclusiva uma regra de NAT. Nenhuma regra pode ter o mesmo número de regra.
  • Cada configuração de NAT tem uma regra predefinida:
    • A regra predefinida é aplicada se nenhuma outra regra de NAT corresponder na mesma configuração de NAT.
    • O número da regra predefinida é 65001.
    • O intervalo CIDR de IP de destino da regra predefinida é 0.0.0.0/0.
  • As regras de NAT na nuvem só são suportadas quando o valor da opção NAT IP allocate é MANUAL_ONLY.
  • Todos os endereços IP configurados numa determinada regra têm de ser do mesmo nível.

    Não pode usar uma combinação de endereços IP de nível Premium e de nível padrão na mesma regra (incluindo a regra predefinida).

  • Os intervalos CIDR de IP de destino na condição de correspondência não podem sobrepor-se nas regras NAT. Pode existir, no máximo, uma regra que corresponda a qualquer pacote específico.

    Não pode criar uma regra NAT com um intervalo CIDR de IP de destino de 0.0.0.0/0, porque esse intervalo é usado na regra predefinida.

  • Os endereços IP NAT nas regras NAT não se podem sobrepor.

  • Uma regra tem de ter um Active não vazio ou um endereço IP Drain não vazio. Se a regra tiver um endereço IP Active vazio, as novas ligações que correspondam à regra NAT são ignoradas.

  • Não é possível adicionar regras de NAT a um gateway NAT que tenha o mapeamento independente do ponto final ativado. Não pode ativar o mapeamento independente do ponto final num gateway de NAT que tenha regras de NAT.

Além disso, todas as VMs recebem portas atribuídas a partir do valor de portas mínimas por VM para cada regra do Cloud NAT. Se as portas atribuídas a uma VM a partir de uma regra NAT estiverem esgotadas, as novas ligações que correspondam à regra NAT são ignoradas.

Por exemplo, se configurar 4096 portas por VM e tiver 16 VMs e 2 regras de NAT (rule1 com 1 endereço IP e rule2 com 2 endereços IP), juntamente com a regra predefinida (default) com 2 endereços IP, todas as 16 VMs recebem 4096 portas em cada pacote de regras de NAT. Neste exemplo, não existem problemas em default nem em rule2 para todas as respetivas VMs, mas rule1 não consegue atribuir portas a todas as respetivas VMs. Por conseguinte, o tráfego de VMs que tem de passar por rule1 pode ser ignorado e mostrar sinais de falta de recursos porque o tráfego não usa a regra predefinida.

Idioma de expressão de regras

As regras de NAT são escritas com a sintaxe do Idioma de expressão comum.

Uma expressão requer dois componentes:

  • Atributos que podem ser inspecionados em expressões de regras.
  • Operações que podem ser realizadas nos atributos como parte de uma expressão.

Por exemplo, a expressão seguinte usa os atributos destination.ip e 198.51.100.0/24 na operação inIpRange(). Neste caso, a expressão devolve verdadeiro se destination.ip estiver no intervalo de endereços IP 198.51.100.0/24.

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

As regras de NAT suportam apenas os seguintes atributos e operações:

Atributos

Os atributos representam informações de um pacote de saída, como o endereço IP de destino.

Nome do atributo Descrição
destination.ip Endereço IP de destino do pacote

Operações

A referência seguinte descreve os operadores que pode usar com atributos para definir expressões de regras.

Operação Descrição
inIpRange(string, string) -> bool inIpRange(X, Y) devolve true se o intervalo CIDR de IP Y contiver o endereço IP X.
|| Operador lógico. x || y devolve verdadeiro se x ou y for verdadeiro.
== Operador de igualdade. x == y devolve true se x for igual a y.

Exemplos de expressões

Faça corresponder o tráfego ao endereço IP de destino 198.51.100.20.

"destination.ip == '198.51.100.20'"

Faça corresponder o tráfego com o endereço IP de destino 198.51.100.10/30 ou 198.51.100.20.

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

O que se segue?