1. Visão geral
O Cloud NAT é uma ferramenta poderosa: com ele, as cargas de trabalho do Compute Engine e do Google Kubernetes Engine (GKE) podem acessar recursos da Internet de maneira escalonável e segura, sem expor as cargas de trabalho em execução a acessos externos usando IPs externos.
O Cloud NAT tem um design sem proxy, implementando o NAT diretamente na camada SDN do Andromeda. Assim, não há impacto na performance da sua carga de trabalho, e ela é escalonada sem esforço para muitas VMs, regiões e VPCs.
As regras de NAT são uma extensão do Cloud NAT. Com esse recurso, é possível criar regras de acesso que definem como o Cloud NAT é usado para se conectar à Internet. No momento, as regras NAT são compatíveis com a seleção de endereços NAT de origem com base no endereço de destino.
Sem regras de NAT, uma VM com o Cloud NAT ativado usa o mesmo conjunto de endereços IP NAT para alcançar todos os endereços da Internet.
Às vezes, um caso de uso do NAT exige que o Cloud NAT use diferentes endereços IP de origem para destinos específicos. Uma regra NAT define uma correspondência e uma ação correspondente. Depois de especificar as regras NAT, o pacote será correspondido com cada regra NAT. Se uma regra for correspondida, a ação correspondente a essa correspondência será realizada.
Para mais informações, consulte a seção de documentação sobre regras de NAT .
O que você vai aprender
- Como configurar um gateway do Cloud NAT em preparação para as regras de NAT.
- Como criar regras NAT usando a Common Expression Language (CEL).
- Como criar regras NAT e anexá-las a um gateway NAT.
- Como testar regras de NAT em uma instância.
- Como atualizar as regras de um gateway NAT.
- Como excluir regras NAT e reverter para o comportamento padrão do Cloud NAT.
O que é necessário
- Conhecimento básico do Google Compute Engine
- Conhecimento básico de TCP/IP e rede
- Conhecimento básico de linha de comando do Unix/Linux
- É recomendável ter concluído um tour de redes no GCP, como o laboratório Redes no Google Cloud.
- Entendimento dos conceitos básicos do Cloud NAT.
2. Como usar o console do Google Cloud e o Cloud Shell
Para interagir com o GCP, vamos usar o console do Google Cloud e o Cloud Shell ao longo deste laboratório.
Console do Google Cloud
O console do Cloud pode ser acessado em https://console.cloud.google.com.

Configuração de ambiente autoguiada
- Faça login no console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O nome do projeto é seu identificador pessoal para ele. Desde que você siga as convenções de nomenclatura, é possível usar o que quiser e atualizar a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser alterado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar dele, crie outro aleatório ou tente usar um próprio para ver se ele está disponível. Em seguida, ele fica "congelado" depois que o projeto é criado.
- Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de US$300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
No Console do GCP, clique no ícone do Cloud Shell na barra de ferramentas localizada no canto superior direito:

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Todo o trabalho neste laboratório pode ser feito apenas com um navegador.
3. configurar o laboratório
Neste laboratório, você vai usar um projeto e criar duas VPCs com uma sub-rede em cada uma. Você vai reservar endereços IP externos e criar e configurar um gateway do Cloud NAT (com um Cloud Router), duas instâncias de produtor e uma instância de consumidor. Depois de validar o comportamento padrão do Cloud NAT, você vai criar regras personalizadas do Cloud NAT e validar o comportamento delas.
Visão geral da arquitetura de rede:

4. Reservar endereços IP externos
Vamos reservar todos os endereços IP externos que serão usados neste laboratório. Isso vai ajudar você a escrever todas as regras de NAT e firewall relevantes nas VPCs do consumidor e do produtor.
No Cloud Shell:
gcloud compute addresses create nat-address-1 nat-address-2 nat-address-3 producer-address-1 producer-address-2 --region us-east4
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
Preencha os endereços IP reservados como variáveis de ambiente.
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export natip3=`gcloud compute addresses list --filter name:nat-address-3 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
Nenhuma saída é esperada, mas para confirmar que os endereços foram preenchidos corretamente. Vamos gerar os valores de todas as variáveis de ambiente.
$ env | egrep '^(nat|producer)ip[1-3]'
Saída:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2> natip3=<NAT IP 3>
5. Configuração da VPC e das instâncias do produtor.
Agora vamos criar os recursos do produtor. As instâncias em execução na VPC do produtor vão oferecer o serviço voltado à Internet usando dois IPs públicos "producer-address-1" e "producer-address-2" .
Primeiro, vamos criar a VPC. No Cloud Shell:
gcloud compute networks create producer-vpc --subnet-mode custom
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Em seguida, vamos criar a sub-rede em us-east4. No Cloud Shell:
gcloud compute networks subnets create producer-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/producer-e4]. NAME REGION NETWORK RANGE producer-e4 us-east4 producer-vpc 10.0.0.0/24
Em seguida, vamos criar regras de firewall da VPC para permitir que os endereços IP do NAT alcancem as instâncias do produtor na porta 8080.
Para a primeira regra, no Cloud Shell:
gcloud compute firewall-rules create producer-allow-8080 \ --network producer-vpc --allow tcp:8080 \ --source-ranges $natip1,$natip2,$natip3
Saída:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/producer-allow-8080]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-8080 producer-vpc INGRESS 1000 tcp:8080 False
A próxima etapa é criar as duas instâncias de produtor.
As instâncias de produtor vão executar um serviço de eco de IP em um contêiner do Docker disponível no Docker Hub. O código-fonte está disponível no repositório do GitHub do autor do serviço.
Para provisionar rapidamente as instâncias com todo o software necessário, vamos usar o recurso Implantação de contêineres no Compute Engine.
Para escrever regras de NAT, vamos provisionar cada instância com um endereço IP reservado diferente.
Crie a primeira instância. No Cloud Shell:
gcloud compute instances create-with-container producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <producer IP 1> RUNNING
Em seguida, crie a segunda instância. No Cloud Shell:
gcloud compute instances create-with-container producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <producer IP 2> RUNNING
6. Configurar VPC do consumidor, Cloud NAT e instância
Agora que você criou o serviço produtor, é hora de criar a VPC consumidora e o gateway do Cloud NAT.
Depois de criar a VPC e a sub-rede, vamos adicionar uma regra de firewall de entrada simples para permitir o IAP para intervalos de IP de origem TCP. Isso vai permitir que façamos SSH nas instâncias do consumidor diretamente usando o gcloud.
Em seguida, vamos criar um gateway simples do Cloud NAT no modo de alocação manual e o endereço reservado "nat-address-1" associado a ele. Nas próximas partes do codelab, vamos atualizar a configuração do gateway para adicionar regras personalizadas. .
Primeiro, vamos criar a VPC. No Cloud Shell:
gcloud compute networks create consumer-vpc --subnet-mode custom
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Em seguida, vamos criar uma sub-rede em us-east4. No Cloud Shell:
gcloud compute networks subnets create consumer-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/consumer-e4]. NAME REGION NETWORK RANGE consumer-e4 us-east4 consumer-vpc 10.0.0.0/24
Em seguida, vamos criar regras de firewall da VPC para permitir que os endereços de intervalos do IAP alcancem as instâncias do consumidor na porta 22.
Para a primeira regra de firewall, execute o seguinte no Cloud Shell:
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
Saída:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
Antes de criar um gateway NAT, precisamos criar uma instância do Cloud Router. Usamos um número de ASN particular, mas isso é irrelevante para as atividades deste laboratório. No Cloud Shell:
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
Saída:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
Em seguida, crie a instância do gateway NAT. No Cloud Shell:
gcloud compute routers nats create consumer-nat-gw \
--router=consumer-cr \
--router-region=us-east4 \
--nat-all-subnet-ip-ranges \
--nat-external-ip-pool=nat-address-1
Saída:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
Crie a instância de teste do consumidor. Preenchemos os IPs de produtor reservados aqui para poder consultar eles na instância mais tarde. No Cloud Shell:
gcloud compute instances create consumer-instance --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=consumer-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
Saída:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/consumer-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance us-east4-a e2-medium 10.0.0.2 RUNNING
7. Verificar o comportamento padrão do Cloud NAT
Neste ponto, a instância do consumidor usa o comportamento padrão do Cloud NAT, que usa o mesmo IP reservado "nat-address-1" para se comunicar com todos os endereços externos.
Vamos validar esse comportamento primeiro antes de usar o novo recurso de regras de NAT no Cloud NAT.
Acesse a instância do consumidor por SSH. No Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Agora você está no shell da instância.
Exemplo de saída (saída completa truncada para brevidade)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Na instância do consumidor, vamos buscar os IPs do produtor e preenchê-los como variáveis de ambiente.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Em seguida, tente curl para as duas instâncias de produtor e observe o endereço IP de origem retornado.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.136.8.83
Você vai ver o mesmo endereço IP retornado para os dois endpoints, que é igual ao valor do IP externo reservado "nat-address-1".
Da mesma forma, um curl para qualquer serviço externo de refletor de IP vai mostrar o mesmo IP. Por exemplo:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Saia da sessão SSH da instância por enquanto. Vamos voltar ao SSH depois de configurar as regras de NAT.
8. Criar regras do Cloud NAT
As regras NAT são escritas usando a sintaxe da Common Expression Language. Para mais informações sobre a linguagem de expressão de regra, consulte Linguagem de expressão de regra.
Também é possível adicionar uma regra NAT a um gateway NAT usando comandos gcloud. Vamos conhecer as duas opções para criar regras do Cloud NAT.
Primeiro, vamos criar um arquivo YAML de regra de NAT.
No Cloud Shell:
export projectid=`gcloud config get-value project`
cat <<EOF >natrulesfile.txt
rules:
- ruleNumber: 100
match: destination.ip == '$producerip2'
action:
sourceNatActiveIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-2
EOF
Agora vamos atualizar o gateway NAT usando esse arquivo de regras. No Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \
--router=consumer-cr \
--rules=natrulesfile.txt \
--router-region=us-east4
Você vai receber esta resposta :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Valide se a regra foi configurada corretamente. No Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
Você vai receber esta resposta :
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
Vamos tentar recriar a mesma regra usando apenas comandos gcloud. Primeiro, exclua a regra atual. No Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Você vai receber esta resposta :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Em seguida, recrie a regra usando este comando gcloud. No Cloud Shell:
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Você vai receber esta resposta :
Creating Rule [100] in NAT [consumer-nat-gw]...done.
Para validar se a regra foi criada corretamente, repita o comando anterior. Desta vez, vamos adicionar a chave de formatação YAML para conferir todos os detalhes da regra.
No Cloud Shell:
gcloud alpha compute routers nats rules list\ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Você vai receber esta resposta :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2 match: destination.ip == <actual IP for producer-IP 2> ruleNumber: 100
Por fim, observe que agora os endereços externos "nat-address1" e "nat-address-2" aparecem como "IN_USE". Para conferir, execute este comando no Cloud Shell:
$ gcloud compute addresses list
Você vai receber a seguinte saída (os endereços IP reais precisam corresponder aos endereços reservados) :
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS nat-address-1 34.136.8.83 EXTERNAL us-east4 IN_USE nat-address-2 34.70.137.35 EXTERNAL us-east4 IN_USE nat-address-3 34.135.103.88 EXTERNAL us-east4 RESERVED producer-address-1 34.66.0.105 EXTERNAL us-east4 IN_USE producer-address-2 35.192.142.134 EXTERNAL us-east4 IN_USE
9. Verificar o comportamento das regras do Cloud NAT
Neste ponto, a instância do consumidor deve usar a regra do Cloud NAT criada para usar nat-address-2 e se comunicar com producer-address-2.
Vamos validar esse comportamento. Acesse a instância do consumidor por SSH. No Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Agora você está no shell da instância.
Exemplo de saída (saída completa truncada para brevidade)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Na instância do consumidor, vamos buscar os IPs do produtor e preenchê-los como variáveis de ambiente.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Em seguida, tente curl para as duas instâncias de produtor e observe o endereço IP de origem retornado.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.70.137.35
Agora você vai ver um endereço IP diferente sendo retornado para os dois endpoints. O primeiro endereço IP será o mesmo do comportamento padrão. O segundo endereço IP precisa ser igual a "nat-address-2" após a adição da nova regra de NAT.
Um curl para qualquer serviço externo de refletor de IP ainda vai mostrar o mesmo IP que o comportamento padrão. Por exemplo:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Saia da sessão SSH da instância por enquanto. Vamos usar o SSH novamente para testar o esgotamento de endereço.
10. Atualizar e excluir regras do Cloud NAT
É possível atualizar as regras do Cloud NAT. Por exemplo, é possível associar novos endereços IP e esgotar os endereços IP associados às regras atuais.
Vamos atualizar o arquivo de regras NAT da seguinte forma:
No Cloud Shell:
export projectid=`gcloud config get-value project`
cat <<EOF >natrulesfile.txt
rules:
- ruleNumber: 100
match: destination.ip == '$producerip2'
action:
sourceNatDrainIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-2
sourceNatActiveIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-3
EOF
O que esse novo arquivo faz é colocar "nat-address-2" em um estado esgotado. E adicione "nat-address-3" no estado ativo. Isso permite que as conexões atuais que usam nat-address-2 sejam encerradas normalmente, enquanto cria novas conexões apenas usando nat-address-3.
Agora vamos atualizar o gateway NAT usando esse arquivo de regras. No Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \
--router=consumer-cr \
--rules=natrulesfile.txt \
--router-region=us-east4
Você vai receber esta resposta :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Valide se a regra foi configurada corretamente. No Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Você vai receber esta resposta :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3 sourceNatDrainIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2 match: destination.ip == '35.192.142.134' ruleNumber: 100
Observe como "nat-address-2" agora está em um estado de drenagem. Deixamos para você, como exercício, validar se as novas conexões da VPC do consumidor agora usam os IPs NAT corretos.
Por fim, para excluir as regras NAT do gateway do Cloud NAT e reverter para o comportamento padrão. É possível usar o seguinte comando gcloud. No Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Você vai receber esta resposta :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Para verificar se não há mais regras NAT, use o comando de descrição do gateway NAT.
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Você vai receber esta resposta :
enableEndpointIndependentMapping: false name: consumer-nat-gw natIpAllocateOption: MANUAL_ONLY natIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1 sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
Não há uma seção "rules:" no YAML de saída. Indicando que não há regras NAT configuradas.
11. Etapas de limpeza
Para evitar cobranças recorrentes, exclua todos os recursos associados a este codelab.
Primeiro, exclua todas as instâncias.
No Cloud Shell:
gcloud compute instances delete consumer-instance \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
Resposta esperada :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
Em seguida, exclua o Cloud Router. No Cloud Shell:
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
Você vai receber esta resposta :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
Libere todos os endereços IP externos. No Cloud Shell:
gcloud compute addresses delete nat-address-1 \ nat-address-2 nat-address-3 producer-address-1 \ producer-address-2 --region us-east4 --quiet
Você vai receber esta resposta :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
Exclua regras de firewall da VPC. No Cloud Shell:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
Você vai receber esta resposta :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-8080].
Exclua sub-redes. No Cloud Shell:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
Você vai receber esta resposta :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-e4].
Por fim, vamos excluir as VPCs. No Cloud Shell:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
Você vai receber esta resposta :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
12. Parabéns!
Você concluiu o laboratório "Regras do Cloud NAT".
O que você abordou
- Como configurar um gateway do Cloud NAT em preparação para as regras de NAT.
- Como criar regras NAT usando a Common Expression Language (CEL).
- Como criar regras NAT e anexá-las a um gateway NAT.
- Como testar regras de NAT em uma instância.
- Como atualizar as regras de um gateway NAT.
- Como excluir regras NAT e reverter para o comportamento padrão do Cloud NAT.
Próximas etapas
- Teste a criação de regras NAT mais complexas, como este exemplo.
- Aprenda a drenar endereços IP de NAT e observe o impacto na conexão.
- Saiba mais sobre rede no Google Cloud Platform.
©Google, Inc. ou afiliadas. Todos os direitos reservados. Distribuição proibida.