Use o NAT público com o Compute Engine
Esta página mostra uma demonstração de um gateway NAT público que fornece serviços de tradução de endereços de rede para uma instância de VM do Compute Engine. Antes de começar, leia a vista geral da NAT pública.
Pré-requisitos
Tem de fazer o seguinte antes de configurar o NAT público.
Obtenha autorizações de IAM
A função roles/compute.networkAdmin concede-lhe autorizações para criar um gateway NAT no Cloud Router, reservar e atribuir endereços IP NAT, e especificar sub-redes (subnets) cujo tráfego deve usar a tradução de endereços de rede pelo gateway NAT.
Configurar Google Cloud
Antes de começar, configure os seguintes itens em 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Introduza um Nome de
custom-network1
.Em Sub-redes, defina o Modo de criação de sub-redes como Personalizado.
Em Nova sub-rede, introduza um Nome de
subnet-us-east-192
.Em Região, selecione us-east4.
Introduza um intervalo de endereços IP de
192.168.1.0/24
.Clique em Concluído e, de seguida, em Criar.
Crie uma nova rede VPC de modo personalizado no seu projeto:
gcloud compute networks create custom-network1 \ --subnet-mode custom
Especifique o prefixo da sub-rede para a sua 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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em Criar instância.
Especifique um nome de
nat-test-1
para a sua instância.Defina a Região como us-east4.
Defina a zona como us-east4-c.
Clique no link Gestão, segurança, discos, trabalhar em rede, arrendamento único.
Clique no separador Rede.
Em Interfaces de rede, clique em
Editar para a interface predefinida da VM.- Defina a Rede como
custom-network1
. - Defina a sub-rede como
subnet-us-east-192
. - Defina IP externo como Nenhum.
- Clique em Concluído.
- Defina a Rede como
Para criar e iniciar a instância, clique em Criar.
Na Google Cloud consola, aceda à página Políticas de firewall.
Clique em Criar regra de firewall.
Introduza um Nome de
allow-ssh
.Especifique uma rede de
custom-network1
.Defina Direction of traffic (Direção do tráfego) como Ingress (Entrada).
Defina a opção Ação na correspondência como Permitir.
Defina Segmentações como Todas as instâncias na rede.
Defina o Filtro de origem como Intervalos IPv4.
Defina os Intervalos IP de origem como
35.235.240.0/20
.Defina Protocolos e portas como Protocolos e portas especificados.
Selecione a caixa de verificação tcp e introduza a porta
22
.Clique em Criar.
Na Google Cloud consola, aceda à página Identity-Aware Proxy.
Selecione o separador Recursos de SSH e TCP.
Para atualizar as autorizações dos membros nos recursos, selecione a caixa de verificação junto a Todos os recursos de túnel > us-east4-c > nat-test-1.
No painel do lado direito, clique em Adicionar membro.
Para conceder aos utilizadores, aos grupos ou às contas de serviço acesso aos recursos, no campo Novos membros, especifique os respetivos endereços de email.
Se estiver apenas a testar esta funcionalidade, pode introduzir o seu próprio endereço de email.
Para conceder aos membros acesso aos recursos através da funcionalidade de encaminhamento TCP do Cloud IAP, na lista pendente Função, selecione Cloud IAP > Utilizador do túnel protegido pelo IAP.
Clique em Guardar.
PROJECT_ID
: o ID do seu projetoMEMBER_INFO
: uma lista separada por vírgulas de pares detype:email
membros. Exemplos:- Para um utilizador individual:
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 utilizador individual:
Na Google Cloud consola, aceda à página Instâncias de VM.
Para
nat-test-1
, na coluna Ligar, clique na seta suspensa SSH e, de seguida, selecione Abrir na janela do navegador.Na linha de comandos da VM, introduza
curl example.com
e, de seguida, prima Enter.Não deve receber nenhum resultado. Se o fizer, pode ter criado o grupo de IPs com um endereço IP externo ou pode existir outro problema.
nat-test-1
Para resolver problemas, consulte o artigo As VMs podem aceder à Internet inesperadamente sem o Cloud NAT.Para terminar o comando, pode ter de introduzir
Ctrl+C
.Adicione uma chave SSH do Compute Engine ao seu anfitrião local:
ssh-add ~/.ssh/google_compute_engine
Ligue-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
Não deve receber nenhum resultado. Se o fizer, pode ter criado o grupo de IPs com um endereço IP externo ou pode existir outro problema.
nat-test-1
Para resolver problemas, consulte o artigo As VMs podem aceder à Internet inesperadamente sem o Cloud NAT.Para terminar o comando, pode ter de introduzir
Ctrl+C
.Na Google Cloud consola, aceda à página Cloud NAT.
Clique em Começar ou Criar gateway de NAT.
Introduza um Nome da gateway de
nat-config
.Defina a rede de VPC como
custom-network1
.Defina a Região como us-east4.
Em Cloud Router, selecione Criar novo router.
- Introduza um Nome de
nat-router
. - Clique em Criar.
- Introduza um Nome de
Clique em Criar.
Crie um Cloud Router:
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Adicione uma configuração ao router:
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Na Google Cloud consola, aceda à página Instâncias de VM.
Para
nat-test-1
, na coluna Ligar, clique na seta suspensa SSH e, de seguida, selecione Abrir na janela do navegador.Na linha de comandos da VM, introduza
curl example.com
e, de seguida, prima Enter.- Configure um gateway de NAT público.
- Crie uma configuração de exemplo do Google Kubernetes Engine (GKE).
Exemplo
Segue-se um exemplo completo que demonstra um exemplo de gateway NAT público e um exemplo de VM do Compute Engine que usa o gateway NAT público.
Passo 1: crie uma rede VPC e uma sub-rede
Se já tiver uma rede e uma sub-rede, pode ignorar este passo.
Consola
gcloud
Terraform
Pode usar um módulo do Terraform para criar uma rede de nuvem virtual privada (VPC) personalizada e uma sub-rede.
Passo 2: crie uma instância de VM sem um endereço IP externo
Consola
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
Pode usar um recurso do Terraform para criar uma instância de VM.
Passo 3: crie uma regra de firewall que permita ligações SSH
Consola
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Pode usar um recurso do Terraform para criar uma regra de firewall.
Passo 4: crie autorizações de SSH de IAP para a sua instância de teste
Num passo posterior, use o Identity-Aware Proxy (IAP) para estabelecer ligação à sua instância de teste.
Consola
gcloud
Este comando concede acesso SSH através do IAP a todas as instâncias de VM no seu projeto. Se quiser conceder acesso SSH através do IAP a uma VM individual, siga as instruções da Google Cloud consola.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_INFO \ --role=roles/iap.tunnelResourceAccessor
Substitua o seguinte:
Terraform
Pode usar um recurso do Terraform para criar autorizações de SSH do IAP para a sua instância de teste.
Passo 5: inicie sessão no nat-test-1
e confirme que não consegue aceder à Internet
Consola
gcloud
Passo 6: crie uma configuração de NAT com o Cloud Router
Tem de criar o Cloud Router na mesma região que as instâncias que usam NAT público. O Cloud Router só é usado para colocar informações de NAT nas VMs. Não é usado como parte do gateway NAT real.
Esta configuração permite que todas as instâncias na região usem o NAT público para todos os intervalos de IP de alias primários. Também atribui automaticamente os endereços IP externos para o gateway NAT. Para mais opções, consulte a documentação da CLI do Google Cloud.
Consola
gcloud
Terraform
Pode usar um recurso do Terraform para criar um Cloud Router.
Pode usar um módulo Terraform para criar uma configuração de NAT.
Passo 7: tente estabelecer ligação à Internet novamente
A propagação da configuração de NAT para a VM pode demorar até três minutos. Por isso, aguarde, pelo menos, um minuto antes de tentar aceder novamente à Internet.
Consola
gcloud
Ligue-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
Deverá ver um resultado que contenha 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>