Regras do NAT na nuvem

Esta página oferece uma vista geral das regras do Cloud NAT para o NAT público. Estas regras permitem-lhe definir como o Cloud NAT é usado para se ligar à Internet.

Regras do Cloud NAT para a tradução de endereços de rede (SNAT) de origem com base no endereço de origem (pré-visualização) ou de destino.

Regras de NAT

Por predefinição, quando configura uma gateway do Cloud NAT para NAT público, os pacotes traduzidos por essa gateway do NAT usam o mesmo conjunto de endereços IP do NAT para alcançar todos os endereços da Internet. Se precisar de mais controlo sobre os pacotes traduzidos pela NAT na nuvem, 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.

As regras de NAT para NAT pública suportam a correspondência de endereços de origem e destino:

  • Nas regras baseadas na origem (Pré-visualização), os pacotes são correspondidos pelo respetivo endereço IP de origem. Apenas são suportados endereços de origem IPv4.
  • Nas regras baseadas no destino, os pacotes são correspondidos pelo respetivo endereço IP de destino. Apenas são suportados endereços de destino IPv4.

Não é permitido combinar condições baseadas na origem e no destino numa única regra NAT. Para mais informações, consulte as especificações das regras de NAT.

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 SNAT 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 203.0.113.20 para NAT.
    2. Regra NAT 2 em Cloud NAT Gateway 1: quando o destino é 198.51.100.30 ou 198.51.100.31, use 203.0.113.30 para NAT.
  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

  • O Cloud NAT suporta regras baseadas na origem e no destino. Cada regra define uma condição baseada no endereço de origem ou de destino, mas não em ambos.
  • Uma prioridade de regra identifica exclusivamente uma regra NAT, de 0 (prioridade mais alta) a 65 000 (prioridade mais baixa). Não podem existir duas regras com a mesma prioridade.
  • 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.
    • A prioridade da regra predefinida é 65001.
    • Para as regras baseadas na origem e no destino, o intervalo CIDR de IP da regra predefinida é 0.0.0.0/0.
  • As regras de NAT na nuvem só são suportadas quando o valor da opção de atribuição de IP de NAT é 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 nas condições de correspondência não podem sobrepor-se nas regras de NAT. No máximo, pode aplicar uma regra a qualquer pacote. Se um pacote corresponder a uma regra baseada na origem e no destino, o Cloud NAT aplica a regra com a prioridade mais alta.

    Não pode criar uma regra NAT com 0.0.0.0/0 como intervalo de origem ou de destino porque é usada pela 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 origem e de destino.

Nome do atributo Descrição
source.ip Endereço IP de origem do pacote
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 true se x ou y for true.
== Operador igual a. x == y devolve true se x for igual a y.

Exemplos de expressões

Pode fazer a correspondência de pacotes com base no endereço de origem ou de destino, mas não em ambos.

Exemplos de correspondência baseada na origem

Corresponda a pacotes com o endereço IP de origem 10.0.0.25:

"source.ip == '10.0.0.25'"

Corresponde a pacotes com o endereço IP de origem 10.0.0.25 ou 10.0.0.26:

"source.ip == '10.0.0.25' || source.ip == '10.0.0.26'"

Corresponder a pacotes com o intervalo de endereços IP de origem 10.0.2.0/24:

"inIpRange(source.ip, '10.0.2.0/24')"

Corresponder a pacotes com o endereço IP de origem 10.0.0.25 ou o intervalo de endereços IP de origem 10.0.2.0/24:

"source.ip == '10.0.0.25' || inIpRange(source.ip, '10.0.2.0/24')"

Exemplos de correspondência baseada no destino

Fazer corresponder pacotes com o endereço IP de destino 198.51.100.20:

"destination.ip == '198.51.100.20'"

Corresponda a pacotes com o endereço IP de destino 198.51.100.20 ou 198.51.100.21:

"destination.ip == '198.51.100.20' || destination.ip == '198.51.100.21'"

Fazer corresponder pacotes com o intervalo de endereços IP de destino 198.51.100.10/30:

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

Corresponder a pacotes com o endereço IP de destino 198.51.100.20 ou o intervalo de endereços IP de destino 198.51.100.10/30:

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

O que se segue?