Regras do Cloud NAT
O recurso de regras NAT permite criar regras de acesso que definem como o Cloud NAT é usado para se conectar à Internet. As regras NAT são compatíveis com NAT de origem com base no endereço de destino.
Quando você configura um gateway NAT sem regras NAT, as VMs que usam 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 que passam 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á.
Exemplo de configuração de regras do Cloud NAT
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 NAT 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 destino198.51.100.20/30
. - As VMs precisam usar o endereço IP NAT
203.0.113.30
para enviar o tráfego para o destino198.51.100.30
ou198.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.
É 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:
- Crie um gateway chamado
Cloud NAT Gateway 1
paraSubnet-1
com o endereço IP NAT203.0.113.40
e adicione as seguintes regras:- Regra NAT 1 em
Cloud NAT Gateway 1
: quando o destino for198.51.100.20/30
, use NAT de origem com203.0.113.20
. - Regra NAT 2 em
Cloud NAT Gateway 1
: quando o destino for198.51.100.30
ou198.51.100.31
, use NAT de origem com203.0.113.30
.
- Regra NAT 1 em
- Crie um gateway chamado
Cloud NAT Gateway 2
para as outras sub-redes da região e atribua o endereço IP NAT como203.0.113.10
. Nenhuma regra NAT é necessária nesta etapa.
Especificações de regras NAT
Antes de trabalhar com regras NAT, observe as seguintes especificações:
- Um número de regra identifica exclusivamente uma regra NAT. Duas regras não podem ter o mesmo número de regra.
- Cada configuração NAT tem uma regra padrão:
- A regra padrão é aplicada quando nenhuma outra regra NAT corresponde à mesma configuração NAT.
- O número da regra padrão é
65001
. - O intervalo CIDR de IP de destino da regra padrão é
0.0.0.0/0
.
- 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 de destino na condição de correspondência não podem se sobrepor em regras NAT. Somente uma regra pode corresponder a qualquer pacote.
Não é possível criar uma regra NAT com um intervalo de CIDR de IP de destino de
0.0.0.0/0
, porque esse intervalo é usado na 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
ouDrain
não vazio. Se a regra tiver um endereço IPActive
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 ativado. Não é possível ativar o mapeamento independente de endpoint em um gateway NAT que tenha regras NAT.
Além disso, todas as VMs recebem portas atribuídas a elas a partir do valor das portas mínimas por VM para cada regra do Cloud NAT. Se as portas alocadas a uma VM de uma regra NAT estiverem esgotadas, as novas conexões que correspondem à regra NAT serão descartadas.
Por exemplo, se você configurar 4.096 portas por VM e tiver 16 VMs e 2 regras NAT
(rule1
com 1 endereço IP e rule2
com 2 endereços IP), junto com a regra padrão
(default
) com 2 endereços IP, todas as 16 VMs receberão 4.096 portas em cada pacote
de regras NAT. Neste exemplo, não há problemas em default
ou rule2
para
todas as VMs, mas rule1
não pode alocar portas para todas as VMs.
Portanto, o tráfego de VMs que precisam passar por rule1
pode ser descartado
e mostrar sinais de estar sem recursos porque o tráfego não usa a
regra padrão.
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 destino.
Nome do atributo | Descrição |
---|---|
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 verdadeiro se o intervalo IP CIDR Y contiver o endereço IP X. |
|| |
Operador lógico. x y retorna verdadeiro se x ou y for verdadeiro. |
== |
Operador igual. x == y retorna verdadeiro se x for igual a y. |
Exemplos de expressões
Corresponder ao tráfego com o endereço IP de destino 198.51.100.20
.
"destination.ip == '198.51.100.20'"
Faça a correspondência do 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'"
A seguir
- Saiba como configurar regras NAT.