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 nelas a acesso externo usando IPs externos.
O Cloud NAT tem um design sem proxy, implementando NAT diretamente na camada SDN do Andromeda. Assim, não há impacto no desempenho da carga de trabalho, e ela é escalonada facilmente para muitas VMs, regiões e VPCs.
As regras NAT são uma extensão do Cloud NAT. O recurso de regras NAT no Cloud NAT permite criar regras de acesso que definem como o Cloud NAT é usado para se conectar à Internet. Atualmente, as regras NAT oferecem suporte à seleção do endereço NAT de origem com base no endereço de destino.
Sem as regras NAT, uma VM com o Cloud NAT ativado usa o mesmo conjunto de endereços IP NAT para acessar todos os endereços da Internet.
Às vezes, um caso de uso do NAT chama o Cloud NAT para usar endereços IP de origem diferentes para destinos específicos. Uma regra NAT define uma correspondência e uma ação correspondente. Depois que você especifica as regras NAT, o pacote é combinado 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 Documentação sobre regras NAT .
O que você vai aprender
- Como configurar um gateway do Cloud NAT para se preparar para as regras NAT.
- Como projetar regras NAT usando a Common Expression Language (CEL).
- Como criar regras NAT e anexá-las a um gateway NAT.
- Como testar regras NAT de 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
- É útil fazer um tour sobre redes no GCP, como o laboratório Rede no Google Cloud.
- Noções básicas sobre os 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 neste 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 é o identificador pessoal do projeto. Contanto 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 para todos os projetos do Google Cloud e não pode ser alterado (não pode ser alterado depois de definido). O console do Cloud gera automaticamente uma string exclusiva. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se não gostar dele, gere outro ID aleatório ou faça um teste e veja se ele está disponível. Então está "congelado" depois que o projeto for 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 custo financeiro.
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 depois 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ê 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 para serem usados neste laboratório. Isso vai ajudar você a gravar todas as regras relevantes de NAT e firewall na VPC 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 que foram 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 resposta é 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. VPC do produtor e configuração das instâncias.
Agora criaremos os recursos para os recursos do produtor. As instâncias em execução na VPC do produtor oferecerão 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
A seguir, 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 de VPC para permitir que os endereços IP do NAT alcancem as instâncias do produtor na porta 8080.
Para a primeira regra do 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 do produtor.
As instâncias do produtor executarão 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 todos os softwares necessários, vamos usar o recurso Implantação de contêiner no Compute Engine.
Para escrever regras NAT, provisionaremos 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 a VPC do consumidor, o Cloud NAT e a instância
Agora que você criou o serviço do produtor, é hora de criar a VPC do consumidor 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 nos permitirá estabelecer conexões SSH com as instâncias de consumidores diretamente usando a gcloud.
Depois vamos criar um gateway simples do Cloud NAT no modo de alocação manual e o endereço reservado "nat-address-1" associados 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
A seguir, 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 de 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 ASN privado, mas ele é 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 do produtor reservados aqui para poder se referir a 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 utiliza o mesmo IP reservado "nat-address-1" para comunicação com endereços externos.
Vamos validar esse comportamento antes de usar o novo recurso de regras NAT no Cloud NAT.
Conecte-se via SSH à instância do consumidor. No Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Agora você deve estar no shell da instância.
Exemplo de resposta (resultado completo truncado para concisão)
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, primeiro buscaremos os dois IPs do produtor e os preencheremos 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 usar o comando "curl" nas duas instâncias do 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
O mesmo endereço IP será retornado para os dois endpoints, que é igual ao valor do IP reservado externo "nat-address-1".
Da mesma forma, um curl para qualquer serviço refletor de IP externo deve 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 retornar o SSH depois de configurar as regras 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 o idioma da expressão da regra, consulte Linguagem da expressão da regra.
Também é possível adicionar uma regra NAT a um gateway NAT existente usando comandos gcloud. Vamos analisar as duas opções para criar regras do Cloud NAT.
Primeiro, vamos criar um arquivo YAML de regra 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
Em seguida, vamos atualizar o gateway NAT atual usando esse arquivo de regra. No Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Você deve esperar a seguinte saída :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Confira se a regra foi configurada. No Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
Você deve esperar a seguinte saída :
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
Vamos tentar recriar a mesma regra usando apenas comandos gcloud. Primeiro, exclua a regra existente. No Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Você deve esperar a seguinte saída :
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ê deve esperar a seguinte saída :
Creating Rule [100] in NAT [consumer-nat-gw]...done.
Novamente, repita o comando anterior para confirmar que a regra foi criada. Desta vez, adicionaremos a chave de formatação YAML para exibir 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ê deve esperar a seguinte saída :
--- 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 "nat-address1" e "nat-address-2" endereços externos serão exibidos como "IN_USE". Para ver isso, execute este comando no Cloud Shell:
$ gcloud compute addresses list
Você deve esperar a seguinte saída (os endereços IP reais devem corresponder aos endereços que você reservou) :
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. Conecte-se via SSH à instância do consumidor. No Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Agora você deve estar no shell da instância.
Exemplo de resposta (resultado completo truncado para concisão)
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, primeiro buscaremos os dois IPs do produtor e os preencheremos 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 usar o comando "curl" nas duas instâncias do 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ê verá um endereço IP diferente sendo retornado para os dois endpoints. O primeiro endereço IP deve ser o mesmo que o comportamento padrão. O segundo endereço IP deve ser igual a "nat-address-2" após a adição da nova regra NAT.
Um curl para qualquer serviço refletor de IP externo 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 de volta para testar a drenagem de endereços.
10. Atualizar e Excluir regras do Cloud NAT
É possível atualizar as regras atuais do Cloud NAT. Por exemplo, é possível associar novos endereços IP e drenar os endereços IP atuais associados às regras atuais.
Vamos atualizar o arquivo de regras NAT da seguinte maneira:
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 agora é colocar "nat-address-2" em um estado drenado. E adicione “nat-address-3” no estado ativo. Isso deve permitir que conexões existentes que usam nat-address-2 sejam encerradas normalmente, ao mesmo tempo em que novas conexões são criadas usando apenas nat-address-3.
Em seguida, vamos atualizar o gateway NAT atual usando esse arquivo de regra. No Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Você deve esperar a seguinte saída :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Confira se a regra foi configurada. No Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Você deve esperar a seguinte saída :
--- 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 que "nat-address-2" foi colocado em um estado drenado. Deixaremos para você como um exercício de validar se as novas conexões da VPC do consumidor agora usam os IPs NAT corretos.
Por fim, excluir as regras NAT do gateway do Cloud NAT e voltar ao comportamento padrão. É possível usar o comando gcloud a seguir. No Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Você deve esperar a seguinte saída :
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 "describe" do gateway NAT
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Você deve esperar a seguinte saída :
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
Observe como não há um "rules:" no YAML de saída. Indica 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
Saída 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ê deve esperar a seguinte saída :
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ê deve esperar a seguinte saída :
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 as regras de firewall da VPC. No Cloud Shell:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
Você deve esperar a seguinte saída :
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].
Excluir sub-redes. No Cloud Shell:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
Você deve esperar a seguinte saída :
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ê deve esperar a seguinte saída :
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 de regras do Cloud NAT.
Conteúdo abordado
- Como configurar um gateway do Cloud NAT em preparação para as regras NAT.
- Como projetar regras NAT usando a Common Expression Language (CEL).
- Como criar regras NAT e anexá-las a um gateway NAT.
- Como testar regras NAT de 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
- Crie regras NAT mais complexas, como este exemplo
- Analisar a drenagem de endereços IP NAT e observar o impacto na conexão.
- Saiba mais sobre rede no Google Cloud Platform.
©Google, Inc. ou afiliadas. Todos os direitos reservados. Distribuição proibida.