Usar Public NAT com Compute Engine
Esta página mostra uma demonstração de um gateway do Public NAT que fornece serviços de conversão de endereços de rede para uma instância de VM do Compute Engine. Antes de começar, leia as Informações gerais do Public NAT.
Pré-requisitos
É necessário fazer o seguinte antes de configurar o Public NAT.
Acessar permissões do IAM
O papel roles/compute.networkAdmin concede permissões para criar um gateway NAT no Cloud Router, reservar e atribuir endereços IP de NAT e especificar sub-redes (sub-redes) cujo tráfego deve usar a conversão de endereços de rede pelo gateway NAT.
Configurar o Google Cloud
Antes de começar, configure os seguintes itens no Google Cloud.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Exemplo
Confira a seguir um exemplo completo que demonstra um gateway de amostra do Private NAT e uma VM de exemplo do Compute Engine que usa o gateway do Private NAT.
Etapa 1: criar uma rede e sub-rede da VPC
Se você já tiver uma rede e uma sub-rede, pule esta etapa.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
custom-network1
.Em Sub-redes, defina o Modo de criação da sub-rede como Personalizado.
Em Nova sub-rede, insira um Nome de
subnet-us-east-192
.Em Região, selecione us-east4.
Digite um intervalo de endereço IP
192.168.1.0/24
.Clique em Concluído e em Criar.
gcloud
Crie uma nova rede VPC de modo personalizado no seu projeto.
gcloud compute networks create custom-network1 \ --subnet-mode custom
Especifique o prefixo de sub-rede da primeira região. Neste exemplo, atribuímos
192.168.1.0/24
à regiãous-east4
.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Terraform
É possível usar um módulo do Terraform para criar uma rede e uma sub-rede de nuvem privada virtual (VPC) personalizada.
Etapa 2: criar uma instância de VM sem endereço IP externo
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Especifique um Nome de
nat-test-1
para sua instância.Defina a Região como us-east4.
Defina a Zona como us-east4-c.
Clique no link Gerenciamento, segurança, discos, rede, locatário individual.
Clique na guia Rede.
Em Interfaces de rede, clique em
Editar na interface padrão da VM.- Defina o Rede para
custom-network1
. - Defina o Sub-rede para
subnet-us-east-192
. - Defina IP externo como None.
- Clique em Concluído.
- Defina o Rede para
Para criar e iniciar a instância, clique em Criar.
gcloud
gcloud compute instances create nat-test-1 \ --image-family debian-9 \ --image-project debian-cloud \ --network custom-network1 \ --subnet subnet-us-east-192 \ --zone us-east4-c \ --no-address
Terraform
É possível usar um recurso do Terraform para criar uma instância de VM.
Etapa 3: criar uma regra de firewall que permita conexões SSH
Console
No Console do Google Cloud, acesse a página Firewall.
Clique em Criar regra de firewall.
Informe um Nome de
allow-ssh
.Especifique uma rede de
custom-network1
.Defina a Direção do tráfego como Entrada.
Defina a Ação se houver correspondência como Permitir.
Defina Destinos como Todas as instâncias na rede.
Defina Filtro de origem como Intervalos IPv4.
Defina Intervalos de IPs de origem como
35.235.240.0/20
.Defina Protocolos e portas como Protocolos e portas especificados.
Marque a caixa de seleção tcp e insira a porta
22
.Clique em Criar
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Use um recurso do Terraform para criar uma regra de firewall.
Etapa 4: criar permissões SSH de IAP para sua instância de teste
Em uma etapa posterior, use o Identity-Aware Proxy (IAP) para se conectar à sua instância de teste.
Console
No console do Google Cloud, acesse a página Identity-Aware Proxy.
Selecione a guia Recursos SSH e TCP.
Para atualizar as permissões dos membros nos recursos, marque a caixa de seleção ao lado de Todos os recursos do túnel > us-east4-c > nat-test-1.
No painel à direita, clique em Adicionar membro.
Para conceder aos usuários, grupos ou contas de serviço acesso aos recursos, no campo Novos membros, especifique os endereços de e-mail.
Se você estiver apenas testando esse recurso, poderá inserir seu próprio endereço de e-mail.
Para conceder aos membros acesso aos recursos por meio do recurso de encaminhamento TCP do Cloud IAP, na lista suspensa Papel, selecione Cloud IAP > Usuário do túnel protegido pelo IAP.
Clique em Salvar.
gcloud
Esse comando concede acesso SSH usando o IAP para todas as instâncias de VM no projeto. Se você quiser conceder acesso SSH com o IAP a uma VM individual, use as instruções do console do Google Cloud.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_INFO \ --role=roles/iap.tunnelResourceAccessor
Substitua:
PROJECT_ID
: ID do projetoMEMBER_INFO
: uma lista separada por vírgulas de pares detype:email
dos membros. Exemplos:- Para um único usuário:
user:test-user@example.com
- Para um grupo:
group:admins@example.com
- Para uma conta de serviço:
serviceAccount:test123@example.domain.com
- Para um único usuário:
Terraform
É possível usar um recurso do Terraform para criar permissões SSH de IAP para sua instância de teste.
Etapa 5: faça login em nat-test-1
e confirme que não é possível acessar a Internet
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Para
nat-test-1
, na coluna Conectar, clique na seta suspensa SSH e selecione Abrir na janela do navegador.No prompt de comando da VM, insira
curl example.com
e pressione Enter.Você não deve obter nenhum resultado. Se fizer isso, você pode ter criado
nat-test-1
com um endereço IP externo ou pode haver algum outro problema. Para resolver esse problema, consulte as VMs podem acessar a Internet inesperadamente sem o Cloud NAT.Para finalizar o comando, talvez seja necessário inserir
Ctrl+C
.
gcloud
Adicione uma chave SSH do Compute Engine ao seu host local.
ssh-add ~/.ssh/google_compute_engine
Conecte-se a
nat-test-1
e execute um comando:gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Você não deve obter nenhum resultado. Se fizer isso, você pode ter criado
nat-test-1
com um endereço IP externo ou pode haver algum outro problema. Para resolver esse problema, consulte as VMs podem acessar a Internet inesperadamente sem o Cloud NAT.Para finalizar o comando, talvez seja necessário inserir
Ctrl+C
.
Etapa 6: criar uma configuração NAT usando o Cloud Router
É necessário criar o Cloud Router na mesma região que as instâncias que usam o Public NAT. O Cloud Router é usado apenas para colocar informações NAT nas VMs. Ele não é usado como parte do gateway NAT real.
Essa configuração permite que todas as instâncias da região usem o Public NAT para todos os intervalos de IP alias e primário. Ela também aloca automaticamente os endereços IP externos para o gateway NAT. Para mais opções, consulte a documentação da CLI do Google Cloud.
Console
No Console do Google Cloud, acesse a página do Cloud NAT.
Clique em Primeiros passos ou Criar gateway NAT.
Digite um nome de gateway de
nat-config
.Defina a Rede VPC para
custom-network1
.Defina a Região como us-east4.
Em Cloud Router, selecione Criar novo roteador.
- Informe um Nome de
nat-router
. - Clique em Criar
- Informe um Nome de
Clique em Criar.
gcloud
Criar um Cloud Router
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Adicionar uma configuração ao roteador
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
É possível usar um recurso do Terraform para criar um Cloud Router.
É possível usar um módulo do Terraform para criar uma configuração NAT.
Etapa 7: tentar se conectar à Internet novamente
Pode levar até três minutos para que a configuração de NAT seja propagada para a VM. Portanto, aguarde pelo menos um minuto antes de tentar acessar a Internet novamente.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Para
nat-test-1
, na coluna Conectar, clique na seta suspensa SSH e selecione Abrir na janela do navegador.No prompt de comando da VM, insira
curl example.com
e pressione Enter.
gcloud
Conecte-se a nat-test-1
e execute um comando:
gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Você verá a saída que contém o seguinte conteúdo:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You can use this domain in examples without prior coordination or asking for permission.</p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
A seguir
- Configurar um gateway do Public NAT.
- Criar um exemplo de configuração do Google Kubernetes Engine (GKE).