Regras do Cloud NAT

Esta página oferece uma visão geral das regras do Cloud NAT para NAT público. Essas regras permitem definir como o Cloud NAT é usado para se conectar à Internet.

As regras do Cloud NAT para NAT público são compatíveis com a conversão de endereços de rede de origem (SNAT) com base no endereço de origem ou de destino.

Regras NAT

Por padrão, quando você configura um gateway do Cloud NAT para o Public NAT, os pacotes traduzidos por esse gateway usam o mesmo conjunto de endereços IP NAT para alcançar todos os endereços da Internet. Se você precisar de mais controle sobre os pacotes traduzidos pelo Cloud NAT, adicione regras NAT.

A regra NAT define uma condição de correspondência e uma ação correspondente. Depois de especificar as regras NAT, cada pacote será correspondido com cada regra NAT. Se um pacote corresponder à condição definida em uma regra, a ação relativa a essa correspondência ocorrerá.

As regras de NAT para o Public NAT são compatíveis com a correspondência de endereços de origem e destino:

  • Em regras baseadas na origem, os pacotes são correspondidos pelo endereço IP de origem. Somente endereços de origem IPv4 são aceitos.
  • Em regras baseadas em destino, os pacotes são correspondidos pelo endereço IP de destino. Somente endereços de destino IPv4 são aceitos.

Não é possível combinar condições com base na origem e no destino em uma única regra de NAT. Para mais informações, consulte Especificações de regras de NAT.

Exemplos de configuração de regras do Cloud NAT

Nesta seção, você encontra exemplos de configuração para regras de NAT baseadas na origem e no destino.

Regras com base em fontes

É possível usar regras de NAT baseadas na origem para qualquer tráfego compatível com o Public NAT. Esta seção mostra um exemplo de configuração para instâncias de VM com o encaminhamento de IP ativado.

Por padrão, quando um gateway do Cloud NAT é configurado para tráfego IPv4 em uma sub-rede, ele fornece NAT para o endereço IP interno principal e intervalos de IP de alias de qualquer instância de VM nessa sub-rede. Usando regras NAT baseadas na origem, também é possível configurar o NAT para instâncias de VM que encaminham pacotes com outros endereços de origem.

Neste exemplo, o Cloud NAT está configurado em Subnet A. Na sub-rede, uma instância de VM com o endereço IP interno principal 10.1.1.2 e um intervalo de IP de alias 10.2.1.0/24 envia tráfego para a Internet. Considere os seguintes requisitos para a instância de VM:

  • Se um pacote for originado do intervalo de IP 192.168.1.0/24, a VM precisará usar o endereço IP NAT 203.0.113.10 para enviar tráfego a qualquer destino da Internet.
  • Se um pacote for originado do intervalo de IP 192.168.2.0/24, a VM precisará usar o endereço IP NAT 203.0.113.20 para enviar tráfego a qualquer destino da Internet.
  • Se um pacote se originar do endereço IP 10.1.1.2 (o endereço IP interno principal da VM) ou do intervalo de IP 10.2.1.0/24 (o intervalo de IP de alias da VM), a VM precisará usar o endereço IP NAT 203.0.113.30 para enviar tráfego a qualquer destino da Internet.
Configuração do Cloud NAT com regras baseadas na origem.
Configuração do Cloud NAT com duas regras baseadas em origem (clique para ampliar).

Para atender a esses requisitos, crie duas regras de NAT baseadas na origem para pacotes encaminhados e a regra padrão para pacotes do endereço IP interno principal e do intervalo de IP de alias da instância de VM:

  • Regra 1 com base na origem: se o endereço de origem for 192.168.1.0/24, use 203.0.113.10 para enviar tráfego à Internet.
  • Regra 2 baseada na origem: se o endereço de origem for 192.168.2.0/24, use 203.0.113.20 para enviar tráfego à Internet.
  • A regra padrão: para todos os outros pacotes, use 203.0.113.30 para enviar tráfego à Internet.

Se o endereço de origem de um pacote encaminhado pela instância de VM não corresponder à regra 1 ou à regra 2, o pacote será descartado. Para informações sobre como o Cloud NAT aloca portas para VMs com encaminhamento de IP ativado, consulte Alocação de portas para encaminhamento de IP.

Para mais informações sobre como usar regras de NAT baseadas na origem, consulte Cloud WAN por dentro: uma análise mais detalhada dos recursos de rede diferenciados.

Regras com base no destino

O exemplo a seguir ilustra como usar regras NAT quando o destino permite o acesso de apenas alguns endereços IP. Recomendamos que o tráfego para esses destinos das VMs do Google Cloud em sub-redes particulares seja fornecido pela SNAT com apenas os endereços IP permitidos. Além disso, recomendamos que você não use esses endereços IP para outros destinos.

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

  • As VMs precisam usar o endereço IP NAT 203.0.113.20 para enviar o tráfego para o destino 198.51.100.20/30.
  • As VMs precisam usar o endereço IP NAT 203.0.113.30 para enviar o tráfego para o destino 198.51.100.30 ou 198.51.100.31.
  • As VMs precisam usar o endereço IP NAT 203.0.113.40 para enviar tráfego para qualquer outro destino da Internet.

Essa rede VPC também contém duas sub-redes adicionais na mesma região. Essas VMs precisam usar o endereço IP NAT 203.0.113.10 para enviar o tráfego para qualquer destino.

Configuração do Cloud NAT com dois gateways NAT do Cloud.
Configuração do Cloud NAT com dois gateways NAT do Cloud (clique para ampliar)

É possível usar regras NAT neste exemplo, mas são necessários dois gateways NAT porque Subnet-1 (10.10.10.0/24) tem regras NAT diferentes das outras sub-redes. Para criar esta configuração, siga estes passos:

  1. Crie um gateway chamado Cloud NAT Gateway 1 para Subnet-1 com o endereço IP NAT 203.0.113.40 e adicione as seguintes regras:
    1. Regra NAT 1 em Cloud NAT Gateway 1: quando o destino for 198.51.100.20/30, use 203.0.113.20 para NAT.
    2. Regra NAT 2 em Cloud NAT Gateway 1: quando o destino for 198.51.100.30 ou 198.51.100.31, use 203.0.113.30 para NAT.
  2. Crie um gateway chamado Cloud NAT Gateway 2 para as outras sub-redes da região e atribua o endereço IP NAT como 203.0.113.10. Nenhuma regra NAT é necessária nesta etapa.

Especificações de regras NAT

  • O Cloud NAT é compatível com regras baseadas em origem e destino. Cada regra define uma condição com base 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). Duas regras não podem ter a mesma prioridade.
  • Cada configuração NAT tem uma regra padrão (prioridade 65.001):
    • A regra padrão é aplicada se um pacote não corresponder a nenhuma regra NAT baseada em origem ou destino na mesma configuração NAT. Exceção: a regra padrão não é aplicada a pacotes encaminhados. Para usar o NAT nesses pacotes, a configuração precisa incluir uma regra correspondente baseada na origem. Para mais informações, consulte Regras baseadas em origem e Alocação de portas para encaminhamento de IP.
    • O intervalo CIDR de IP da regra padrão é 0.0.0.0/0. Se a configuração NAT tiver regras com base na origem e no destino, todo o tráfego qualificado para a regra padrão e que não corresponda a nenhuma das suas regras personalizadas será processado por essa regra padrão, usando os endereços IP NAT atribuídos a ela.
  • As regras do Cloud NAT são compatíveis somente quando o valor da opção de alocação de IP NAT é MANUAL_ONLY.
  • Todos os endereços IP configurados em uma determinada regra precisam ser do mesmo nível.

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

  • Os intervalos de CIDR de IP nas condições de correspondência não podem se sobrepor em regras NAT. No máximo, uma regra pode ser aplicada a um pacote específico. Se um pacote corresponder a uma regra baseada na origem e no destino, o Cloud NAT vai aplicar a regra com maior prioridade.

    Não é possível criar uma regra NAT com 0.0.0.0/0 como intervalo de origem ou destino porque ele é usado pela regra padrão.

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

  • As regras precisam ter um endereço IP Active ou Drain não vazio. Se a regra tiver um endereço IP Active vazio, novas conexões que correspondem à regra NAT serão descartadas.

  • As regras NAT não podem ser adicionadas a um gateway NAT que tenha o mapeamento independente de endpoint (EIM) ativado. Não é possível ativar o EIM em um gateway NAT que tenha regras NAT.

Alocação de porta

O gateway do Cloud NAT usa a configuração de portas mínimas por VM (minPortsPerVm) para determinar quantas portas de origem alocar para cada VM.

Como um único endereço IP NAT fornece 64.512 portas utilizáveis, o valor de minPortsPerVm determina o número máximo de VMs que um endereço IP NAT pode oferecer suporte. Por exemplo, se minPortsPerVm for 1.024 portas, um único endereço IP poderá oferecer suporte a até 63 VMs (64.512 ÷ 1.024).

O valor de minPortsPerVm é usado para calcular de forma independente a alocação de porta para cada regra NAT configurada, incluindo a regra padrão. Se uma VM esgotar as portas alocadas de uma regra específica, as novas conexões que corresponderem a essa regra serão descartadas.

Tipos de regra e alocação de porta

O Cloud NAT aloca portas para regras de NAT com base no tipo delas:

  • Regra padrão. As portas são alocadas para cada VM cujo endereço IP interno principal ou intervalos de IP de alias são atendidos pelo gateway do Cloud NAT, mesmo que a VM tenha o encaminhamento de IP ativado. A regra padrão processa apenas o tráfego originado de endereços IP internos principais ou intervalos de IP de alias e não processa o tráfego encaminhado.
  • Regras com base na origem. As portas são alocadas para uma VM somente se o endereço IP interno principal ou um intervalo de IPs de alias corresponder ao endereço de origem especificado na regra de NAT. Por exemplo, suponha que um gateway do Cloud NAT esteja configurado para atender a um intervalo de endereços IP primários que contenha 10.1.1.1 e 10.1.1.2. Se uma regra baseada em origem especificar 10.1.1.1 para a condição de correspondência, mas uma VM enviar pacotes usando o endereço IP interno principal 10.1.1.2, o Cloud NAT não vai alocar portas para a VM dessa regra específica.

    Limitação: se uma VM tiver o encaminhamento de IP ativado, a alocação de portas vai funcionar de maneira diferente. Nesse caso, o Cloud NAT aloca portas para a VM da regra padrão e de todas as regras baseadas na origem na configuração de NAT simultaneamente. Para mais informações, consulte Alocação de portas para encaminhamento de IP.

  • Regras com base no destino. Para cada regra, as portas são alocadas para cada VM cujo endereço IP interno principal ou intervalos de IP de alias são atendidos pelo gateway do Cloud NAT. Cada VM recebe portas da regra padrão e de cada regra baseada em destino.

    Por exemplo, se o gateway for configurado com 1.024 portas por VM e tiver duas regras NAT baseadas em destino além da regra NAT padrão, cada VM vai receber 1.024 portas de cada regra.

Alocação de porta para encaminhamento de IP

Para oferecer suporte a VMs com o encaminhamento de IP ativado, a correspondência de regras para essas VMs funciona de maneira diferente durante a alocação de portas e o processamento de pacotes:

  • Alocação de porta. Como as VMs de encaminhamento podem emitir pacotes com endereços IP de origem arbitrários, o Cloud NAT trata essas VMs como uma correspondência para a regra padrão e todas as regras NAT baseadas na origem na configuração do NAT. Consequentemente, para cada VM de encaminhamento, o gateway do Cloud NAT aloca o valor minPortsPerVm da regra padrão e de cada regra baseada em origem simultaneamente.

    Por exemplo, considere um gateway do Cloud NAT configurado com um minPortsPerVm de 1.024, uma regra NAT baseada na origem com um endereço IP NAT e a regra NAT padrão com 10 endereços IP NAT. Cada VM de encaminhamento recebe 1.024 portas de ambas as regras. Como a regra baseada na origem tem apenas um endereço IP NAT, ela pode oferecer suporte a até 63 VMs de encaminhamento. O gateway do Cloud NAT também reserva 64.512 portas (63 VMs × 1.024 portas) para elas da regra padrão.

  • Processamento de pacotes. Para a tradução de endereços real, uma regra baseada na origem processa um pacote somente se o endereço IP de origem do pacote corresponder ao endereço de origem definido na condição da regra. A regra padrão não processa o tráfego encaminhado de VMs com o encaminhamento de IP ativado. Pacotes com endereços IP de origem arbitrários são descartados se não corresponderem a uma regra baseada na origem.

Para evitar a exaustão de portas, que resulta em um erro nas configurações de NAT que incluem VMs com encaminhamento de IP ativado, verifique se as regras de NAT estão configuradas com capacidade de porta suficiente:

  • A regra padrão precisa ter um número suficiente de endereços IP NAT para oferecer suporte a todas as VMs de encaminhamento atendidas pelo gateway do Cloud NAT, além de todas as VMs que usam a regra padrão para tráfego do endereço IP interno principal ou intervalos de IP de alias.
  • Cada regra baseada na origem precisa ter um número suficiente de endereços IP NAT para oferecer suporte a todas as VMs de encaminhamento atendidas pelo gateway. A regra também precisa ter um número suficiente de endereços IP NAT para oferecer suporte a todas as VMs que usam essa regra específica com base na origem para o tráfego do endereço IP interno principal ou dos intervalos de IP de alias.

Capacidade da porta

Uma regra de NAT pode esgotar as portas disponíveis se os endereços IP dela não forem compatíveis com as alocações de porta necessárias.

Considere uma sub-rede com 16 VMs e um gateway do Cloud NAT configurado com 4.096 portas por VM. O gateway tem três regras:

  • Regra NAT padrão com dois endereços IP NAT
  • rule-1 com base no destino e um endereço IP NAT
  • rule-2 baseado em destino com dois endereços IP NAT

Como a alocação de portas é calculada de forma independente por regra, cada uma precisa fornecer 65.536 portas (16 VMs × 4.096 portas).

A regra padrão e rule-2 têm capacidade suficiente. No entanto, rule-1 tem apenas um endereço IP (64.512 portas utilizáveis), o que não é suficiente para fornecer a alocação completa para todas as 16 VMs. Consequentemente, o tráfego correspondente a rule-1 pode ser descartado para qualquer VM que não receba a alocação completa de portas.

Para verificar se uma regra de NAT precisa de mais endereços IP, use o campo minExtraIpsNeeded. Esse campo mostra o número de endereços IP que você precisa alocar se os endereços IP atuais na regra de NAT não atenderem aos requisitos de porta para todas as VMs configuradas.

Planejamento de capacidade de porta

Ao planejar a capacidade de porta das suas regras NAT, considere como o Cloud NAT aloca portas para elas:

Linguagem de expressão de regras

As regras NAT são escritas usando a sintaxe da Common Expression Language.

Uma expressão requer dois componentes:

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

Por exemplo, a expressão a seguir usa os atributos destination.ip e 198.51.100.0/24 na operação inIpRange(). Nesse caso, a expressão retornará como verdadeiro se destination.ip estiver dentro do intervalo de endereços IP de 198.51.100.0/24.

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

As regras NAT são compatíveis apenas com 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 a seguir descreve os operadores que podem ser usados com atributos para definir expressões de regra.

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

Exemplos de expressões

É possível 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 em origem

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

"source.ip == '10.0.0.25'"

Faça a correspondência de 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'"

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

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

Faça a correspondência de 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 com base no destino

Corresponder pacotes com o endereço IP de destino 198.51.100.20:

"destination.ip == '198.51.100.20'"

Corresponda 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'"

Corresponda a pacotes com o intervalo de endereços IP de destino 198.51.100.10/30:

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

Corresponda 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')"

A seguir