Utilizzare Public NAT con Compute Engine
Questa pagina mostra una dimostrazione di un gateway NAT pubblico che fornisce servizi di Network Address Translation per un'istanza VM di Compute Engine. Prima di iniziare, leggi la panoramica del NAT pubblico.
Prerequisiti
Prima di configurare NAT pubblico, devi eseguire le seguenti operazioni.
Ottieni autorizzazioni IAM
Il ruolo roles/compute.networkAdmin ti concede le autorizzazioni per creare un gateway NAT su router Cloud, riservare e assegnare indirizzi IP NAT e specificare le subnet il cui traffico deve utilizzare la Network Address Translation tramite il gateway NAT.
Configura Trusted Cloud by S3NS
Prima di iniziare, configura i seguenti elementi in Trusted Cloud.
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Install the Google Cloud CLI.
-
Configura gcloud CLI per utilizzare la tua identità federata.
Per ulteriori informazioni, vedi Accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
Esempio
Di seguito è riportato un esempio end-to-end che mostra un gateway Public NAT di esempio e una VM Compute Engine di esempio che utilizza il gateway Public NAT.
Passaggio 1: crea una rete VPC e una subnet
Se hai già una rete e una subnet, puoi saltare questo passaggio.
Console
Nella console Trusted Cloud , vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Inserisci un nome per
custom-network1
.In Subnet, imposta Modalità di creazione subnet su Personalizzata.
In Nuova subnet, inserisci un Nome di
subnet-us-east-192
.In Regione, seleziona us-east4.
Inserisci un intervallo di indirizzi IP di
192.168.1.0/24
.Fai clic su Fine, quindi su Crea.
gcloud
Crea una nuova rete VPC in modalità personalizzata nel tuo progetto:
gcloud compute networks create custom-network1 \ --subnet-mode custom
Specifica il prefisso della subnet per la prima regione. In questo esempio, assegniamo
192.168.1.0/24
alla regioneus-east4
.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Terraform
Puoi utilizzare un modulo Terraform per creare una rete Virtual Private Cloud (VPC) e una subnet personalizzate.
Passaggio 2: crea un'istanza VM senza indirizzo IP esterno
Console
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Specifica un nome di
nat-test-1
per l'istanza.Imposta Regione su us-east4.
Imposta la zona su us-east4-c.
Fai clic sul link Gestione, sicurezza, dischi, networking, single-tenancy.
Fai clic sulla scheda Networking.
In Interfacce di rete, fai clic su
Modifica per l'interfaccia predefinita della VM.- Imposta Rete su
custom-network1
. - Imposta Subnet su
subnet-us-east-192
. - Imposta IP esterno su Nessuno.
- Fai clic su Fine.
- Imposta Rete su
Per creare e avviare l'istanza, fai clic su Crea.
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
Puoi utilizzare una risorsa Terraform per creare un'istanza VM.
Passaggio 3: crea una regola firewall che consenta le connessioni SSH
Console
Nella console Trusted Cloud , vai alla pagina Policy firewall.
Fai clic su Crea regola firewall.
Inserisci un nome per
allow-ssh
.Specifica una rete di
custom-network1
.Imposta Direzione del traffico su In entrata.
Imposta Azione in caso di corrispondenza su Consenti.
Imposta Destinazioni su Tutte le istanze nella rete.
Imposta Filtro di origine su Intervalli IPv4.
Imposta Intervalli IP di origine su
35.235.240.0/20
.Imposta Protocolli e porte su Protocolli e porte specificati.
Seleziona la casella di controllo tcp e inserisci la porta
22
.Fai clic su Crea.
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Puoi utilizzare una risorsa Terraform per creare una regola firewall.
Passaggio 4: crea le autorizzazioni SSH IAP per l'istanza di test
In un passaggio successivo, utilizza Identity-Aware Proxy (IAP) per connetterti all'istanza di test.
Console
Nella console Trusted Cloud , vai alla pagina Identity-Aware Proxy.
Seleziona la scheda Risorse SSH e TCP.
Per aggiornare le autorizzazioni dei membri sulle risorse, seleziona la casella di controllo accanto a Tutte le risorse tunnel > us-east4-c > nat-test-1.
Nel riquadro a destra, fai clic su Aggiungi membro.
Per concedere a utenti, gruppi o service account l'accesso alle risorse, nel campo Nuovi membri, specifica i loro indirizzi email.
Se stai solo testando questa funzionalità, puoi inserire il tuo indirizzo email.
Per concedere ai membri l'accesso alle risorse tramite la funzionalità di forwarding TCP di Cloud IAP, seleziona Cloud IAP > Utente del tunnel con protezione IAP nell'elenco a discesa Ruolo.
Fai clic su Salva.
gcloud
Questo comando concede l'accesso SSH utilizzando IAP a tutte le istanze VM del tuo progetto. Se vuoi concedere l'accesso SSH utilizzando IAP a una singola VM, segui le istruzioni della console Trusted Cloud .
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_INFO \ --role=roles/iap.tunnelResourceAccessor
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoMEMBER_INFO
: un elenco separato da virgole di coppie di membritype:email
. Esempi:- Per un singolo utente:
user:test-user@example.com
- Per un gruppo:
group:admins@example.com
- Per un account di servizio:
serviceAccount:test123@example.domain.com
- Per un singolo utente:
Terraform
Puoi utilizzare una risorsa Terraform per creare autorizzazioni SSH IAP per l'istanza di test.
Passaggio 5: accedi a
nat-test-1
e verifica che non riesca a connettersi a internetConsole
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Per
nat-test-1
, nella colonna Connetti, fai clic sulla freccia del menu a discesa SSH e seleziona Apri nella finestra del browser.Al prompt dei comandi della VM, inserisci
curl example.com
e premi Invio.Non dovresti ottenere alcun risultato. In questo caso, potresti aver creato
nat-test-1
con un indirizzo IP esterno o potrebbe esserci un altro problema. Per la risoluzione dei problemi, consulta la sezione Le VM possono raggiungere internet in modo imprevisto senza Cloud NAT.Per terminare il comando, potresti dover inserire
Ctrl+C
.
gcloud
Aggiungi una chiave SSH Compute Engine al tuo host locale:
ssh-add ~/.ssh/google_compute_engine
Connettiti a
nat-test-1
ed esegui un comando:gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Non dovresti ottenere alcun risultato. In questo caso, potresti aver creato
nat-test-1
con un indirizzo IP esterno o potrebbe esserci un altro problema. Per la risoluzione dei problemi, consulta la sezione Le VM possono raggiungere internet in modo imprevisto senza Cloud NAT.Per terminare il comando, potresti dover inserire
Ctrl+C
.
Passaggio 6: crea una configurazione NAT utilizzando router Cloud
Devi creare il router Cloud nella stessa regione delle istanze che utilizzano NAT pubblico. Il router Cloud viene utilizzato solo per inserire le informazioni NAT nelle VM. Non viene utilizzato come parte del gateway NAT effettivo.
Questa configurazione consente a tutte le istanze nella regione di utilizzare NAT pubblico per tutti gli intervalli IP primari e alias. Inoltre, alloca automaticamente gli indirizzi IP esterni per il gateway NAT. Per altre opzioni, consulta la documentazione di Google Cloud CLI.
Console
Nella Trusted Cloud console, vai alla pagina Cloud NAT.
Fai clic su Inizia o Crea gateway NAT.
Inserisci un nome gateway di
nat-config
.Imposta la rete VPC su
custom-network1
.Imposta Regione su us-east4.
In Router Cloud, seleziona Crea nuovo router.
- Inserisci un nome per
nat-router
. - Fai clic su Crea.
- Inserisci un nome per
Fai clic su Crea.
gcloud
Crea un router Cloud:
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Aggiungi una configurazione al 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
Terraform
Puoi utilizzare una risorsa Terraform per creare un router Cloud.
Puoi utilizzare un modulo Terraform per creare una configurazione NAT.
Passaggio 7: prova a connetterti di nuovo a internet
La propagazione della configurazione NAT alla VM potrebbe richiedere fino a 3 minuti, quindi attendi almeno un minuto prima di riprovare ad accedere a internet.
Console
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Per
nat-test-1
, nella colonna Connetti, fai clic sulla freccia del menu a discesa SSH e seleziona Apri nella finestra del browser.Al prompt dei comandi della VM, inserisci
curl example.com
e premi Invio.
gcloud
Connettiti a
nat-test-1
ed esegui un comando:gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Dovresti vedere un output contenente i seguenti contenuti:
<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>
Passaggi successivi
- Configura un gateway Public NAT.
- Crea una configurazione di esempio di Google Kubernetes Engine (GKE).