Utilizzo delle route

Questa pagina descrive come creare e gestire le route per le reti Virtual Private Cloud (VPC) in Google Cloud. In questa pagina si presuppone che tu abbia familiarità con i diversi tipi di route Google Cloud e le relative caratteristiche, come descritto in Route.

Ogni nuova rete ha due tipi di route generate dal sistema: una route predefinita, che puoi rimuovere o sostituire, e una route subnet per ciascuna delle sue subnet. Non puoi rimuovere una route di subnet a meno che non elimini la subnet corrispondente.

Oltre alle route generate dal sistema, puoi creare altre route statiche personalizzate.

Elenca le route per una rete VPC

Puoi utilizzare Google Cloud CLI o l'API per elencare e visualizzare i dettagli dei seguenti tipi di route:

Né i comandi dell'interfaccia a riga di comando gcloud né i metodi API mostrano i seguenti tipi di route:

Per vedere la visualizzazione completa della route, utilizza la console Google Cloud. Per elencare e descrivere le route basate su criteri, vedi Utilizzare route basate su criteri.

Console

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Routes

  2. Nella scheda Route operative, procedi nel seguente modo:

    • Scegli una rete VPC.
    • Scegli una regione.
  3. Fai clic su Visualizza.

  4. Puoi filtrare in base al tipo di route, all'intervallo IP di destinazione, al tipo di hop successivo e altro ancora.

gcloud

Utilizza i seguenti comandi gcloud CLI per elencare e visualizzare i dettagli delle route elencate in precedenza:

gcloud compute routes list \
    --filter="network=NETWORK_NAME" \
    --project=PROJECT_ID
gcloud compute routes describe ROUTE_NAME \
    --format="flattened()" \
    --project=PROJECT_ID

Sostituisci quanto segue:

  • NETWORK_NAME: il nome della rete VPC.
  • PROJECT_ID: l'ID progetto che contiene la tua rete VPC.
  • ROUTE_NAME: il nome del percorso.

API

Utilizza i seguenti metodi dell'API per elencare e visualizzare i dettagli sulle route elencate in precedenza:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes?filter=network="NETWORK_URL
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes/ROUTE_NAME

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto che contiene la tua rete VPC.
  • NETWORK_URL: l'URL della rete VPC.
  • ROUTE_NAME: il nome del percorso.

Per ulteriori informazioni, consulta il metodo routes.list e il metodo routes.get.

Elenca le route applicabili per un'interfaccia di rete VM

Puoi utilizzare la console Google Cloud per visualizzare le route applicabili per l'interfaccia di rete di una VM. Questa visualizzazione restringe l'elenco di route che puoi utilizzare per il traffico in uscita.

Per visualizzare le route applicabili per un'interfaccia di rete specifica di una VM, segui questi passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Individua un'istanza VM nell'elenco. Nel menu Altre azioni alla fine della riga, seleziona Visualizza dettagli rete.

  3. Se un'istanza ha più interfacce di rete, seleziona l'interfaccia di rete che vuoi visualizzare nella sezione Dettagli interfaccia di rete.

  4. Nella sezione Dettagli firewall e route, fai clic sulla scheda Route per visualizzare tutte le route applicabili all'interfaccia di rete, ordinate per nome di route.

Aggiungi e rimuovi route statiche

Puoi aggiungere o rimuovere route statiche e basate su criteri che sono locali per la tua rete VPC. Questa sezione descrive come aggiungere ed eliminare route statiche locali. Per ulteriori informazioni su come aggiungere e rimuovere le route basate su criteri, vedi Utilizzare le route basate su criteri.

Le route subnet vengono aggiunte ed eliminate automaticamente quando aggiungi o elimini una subnet. Per ulteriori informazioni su come aggiungere e rimuovere le subnet, consulta Utilizzare le subnet.

Tutte le route in una rete VPC connesse dal peering di rete VPC devono essere manipolate nella rete VPC che esporta queste route. Per saperne di più, consulta Opzioni di scambio di routing.

Prima di aggiungere una route statica

Prima di aggiungere una route statica, assicurati di aver compreso quanto segue:

  • Assicurati di comprendere i diversi tipi di hop successivi che le route statiche possono utilizzare. Per informazioni sui diversi tipi di hop successivi della route statica, inclusi quelli che supportano le destinazioni IPv6, consulta Hop e funzionalità successivi.
  • A meno che non utilizzi subnet ibride, una route statica non può avere un intervallo di destinazione corrispondente o più specifico dell'intervallo di destinazione di una route subnet o di una subnet di peering. Per ulteriori dettagli, consulta Interazioni con route statiche personalizzate nella panoramica delle route e Interazioni con route statiche e subnet nella documentazione sul peering di rete VPC.
  • Per evitare conflitti quando utilizzi una rete in modalità automatica, non creare route statiche le cui destinazioni rientrano in 10.128.0.0/9. Per maggiori dettagli, consulta gli intervalli IP riservati per le reti in modalità automatica.
  • Le destinazioni per le route statiche personalizzate non possono sovrapporsi ad alcun intervallo allocato interno.
  • Prima di creare una route statica personalizzata che utilizza una VM come hop successivo, assicurati di acquisire familiarità con le istanze come hop successivi. Google Cloud verifica l'esistenza di una VM al momento della creazione della route solo se scegli un'istanza dell'hop successivo.
  • Se crei una route utilizzando un tag di rete, solo le VM con quel tag la ricevono. Tuttavia, le VM con tag ricevono comunque tutte le route senza tag di rete.

Aggiungi una route statica

Aggiungi una route statica a una rete. Per ulteriori informazioni sui diversi tipi di hop successivi statici, inclusi quelli che supportano le destinazioni IPv6, consulta Hop e funzionalità successivi.

Console

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Routes

  2. Fai clic sulla scheda Gestione route.

  3. Fai clic su Crea route.

  4. Specifica un nome e una descrizione per il percorso.

  5. Nell'elenco Rete, seleziona una rete esistente per la route.

  6. Nell'elenco Tipo di route, seleziona Route statico.

  7. Nell'elenco Versione IP, seleziona la versione IP richiesta:

    • Per creare una route statica IPv4, seleziona IPv4.
    • Per creare una route statica IPv6, seleziona IPv6.
  8. Specifica un intervallo IP di destinazione. La destinazione più ampia possibile è 0.0.0.0/0 per IPv4 o ::/0 per IPv6.

  9. Specifica una priorità per il percorso. La priorità può essere compresa tra 0 (la priorità più alta) e 65535 (la priorità più bassa).

  10. Per rendere la route applicabile solo a istanze selezionate con tag di rete corrispondenti, specificale nel campo Tag istanza. Lascia vuoto il campo per rendere la route applicabile a tutte le istanze nella rete.

  11. Seleziona un hop successivo per il percorso:

    • Gateway internet predefinito: consegna i pacchetti a internet e alle API e ai servizi Google
    • Specifica un'istanza: consegna i pacchetti all'interfaccia di rete di un'istanza VM. Specifica l'istanza VM per nome e zona. Se la destinazione della route è un indirizzo IPv6, l'istanza VM deve essere a doppio stack.
    • Specifica l'indirizzo IP di un'istanza: specifica l'indirizzo IP di un'istanza esistente nella rete VPC. Per le route statiche IPv6 (anteprima), l'istanza deve essere a doppio stack. Per limitazioni importanti sugli indirizzi IP dell'hop successivo validi, consulta la sezione sugli hop successivi delle route statiche.
    • Specifica il tunnel VPN: consegna i pacchetti a un tunnel della VPN classica esistente utilizzando il routing statico.
    • Specifica una regola di forwarding di un bilanciatore del carico di rete passthrough interno: consegna i pacchetti a un bilanciatore del carico di rete passthrough interno specificato dal nome e dalla regione della regola di forwarding interno.
  12. Fai clic su Crea.

gcloud

Crea una nuova route statica personalizzata con il seguente comando gcloud CLI:

gcloud compute routes create ROUTE_NAME \
    --network=NETWORK \
    --destination-range=DESTINATION_RANGE \
    --priority=PRIORITY \
    NEXT_HOP_SPECIFICATION

Sostituisci quanto segue:

  • ROUTE_NAME: il nome del percorso
  • NETWORK: il nome della rete VPC che contiene la route
  • DESTINATION_RANGE: gli indirizzi IPv4 o IPv6 di destinazione a cui si applica questa route. La destinazione più ampia possibile è 0.0.0.0/0 per IPv4 o ::/0 per IPv6.
  • PRIORITY: la priorità della route, che può variare da 0 (la priorità più alta) a 65535 (la priorità più bassa)
  • NEXT_HOP_SPECIFICATION: l'hop successivo per la route statica. Utilizza uno dei seguenti parametri o una combinazione di parametri:

    • --next-hop-gateway=default-internet-gateway: consegna i pacchetti a internet e alle API e ai servizi Google.
    • --next-hop-instance=INSTANCE_NAME e --next-hop-instance-zone=ZONE: consente di distribuire pacchetti all'interfaccia di rete di un'istanza VM esistente. Specifica l'istanza VM per nome e zona. Se la destinazione della route è un indirizzo IPv6, l'istanza VM deve essere dual-stack.
    • --next-hop-address=ADDRESS: specifica un indirizzo IP di un'istanza esistente nella rete VPC. Per le route statiche IPv6 (anteprima), l'istanza deve essere a doppio stack. Per conoscere le limitazioni importanti sugli indirizzi IP dell'hop successivo validi, consulta la sezione sugli hop successivi delle route statiche.
    • --next-hop-vpn-tunnel=VPN_TUNNEL_NAME e --next-hop-vpn-tunnel-region=REGION: consegna i pacchetti a un tunnel della VPN classica esistente utilizzando il routing statico.
    • --next-hop-ilb=FORWARDING_RULE e --next-hop-ilb-region=REGION: consegna i pacchetti a un bilanciatore del carico di rete passthrough interno. Specifica l'istanza VM in base al nome della regola di forwarding interno (o indirizzo IPv4) e alla regione.

    Per applicare la route statica personalizzata solo a VM selezionate in base al tag di rete, aggiungi il flag --tags e specifica uno o più tag di rete. Per ulteriori informazioni sull'interazione tra i tag di rete e le route statiche personalizzate, consulta Route applicabili nella panoramica delle route. Puoi utilizzare i tag con qualsiasi route statica personalizzata.

Per ulteriori informazioni sulla sintassi gcloud CLI, consulta la documentazione SDK.

API

Crea una nuova route statica personalizzata.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "destRange": "DESTINATION_RANGE",
  "priority": PRIORITY,
  "NEXT_HOP_SPECIFICATION"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui viene creata la route
  • ROUTE_NAME: il nome del percorso
  • NETWORK: il nome della rete VPC che contiene la route.
  • DESTINATION_RANGE: l'intervallo di indirizzi IPv4 o IPv6 di destinazione a cui si applica questa route. La destinazione più ampia è 0.0.0.0/0 per IPv4 o ::/0 per IPv6.
  • PRIORITY: la priorità della route, che può variare da 0 (la priorità più alta) a 65535 (la priorità più bassa)
  • NEXT_HOP_SPECIFICATION: l'hop successivo per la route statica. Utilizza uno dei seguenti parametri o una combinazione di parametri:
    • nextHopGateway: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/gateways/default-internet-gateway: carica i pacchetti a internet e alle API e ai servizi Google
    • nextHopInstance: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME: invia i pacchetti all'interfaccia di rete di un'istanza VM. Specifica l'istanza VM per nome e zona. Se la destinazione della route è un indirizzo IPv6, l'istanza VM deve essere a doppio stack.
    • nextHopIp: ADDRESS: specifica un indirizzo IP di un'istanza esistente nella rete VPC. Per le route statiche IPv6 (anteprima), l'istanza deve essere a doppio stack. Per limitazioni importanti sugli indirizzi IP dell'hop successivo validi, consulta la sezione sugli hop successivi delle route statiche.
    • nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnTunnels/VPN_TUNNEL_NAME: invia i pacchetti a un tunnel della VPN classica esistente utilizzando il routing statico.
    • nextHopIlb: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE: consegna i pacchetti a un bilanciatore del carico di rete passthrough interno. Specifica l'istanza VM in base al nome della regola di forwarding interno (o indirizzo IPv4) e alla regione.

Per applicare la route statica personalizzata solo a VM selezionate in base al tag di rete, aggiungi il campo tags e specifica uno o più tag di rete. Per ulteriori informazioni sull'interazione tra i tag di rete e le route statiche personalizzate, consulta Route applicabili nella panoramica delle route. Puoi utilizzare i tag con qualsiasi route statica personalizzata.

Per ulteriori informazioni, consulta il metodo routes.insert.

Terraform

Puoi creare una route statica utilizzando un modulo Terraform.

Questa route statica crea una route predefinita verso internet.

module "google_compute_route" {
  source       = "terraform-google-modules/network/google//modules/routes"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "default"

  routes = [
    {
      name              = "egress-internet"
      description       = "route through IGW to access internet"
      destination_range = "0.0.0.0/0"
      tags              = "egress-inet"
      next_hop_internet = "true"
    }
  ]
}

Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.

Aggiungi una route predefinita IPv4

La route statica predefinita IPv4 (0.0.0.0/0) con next-hop-gateway impostato su default-internet-gateway viene configurata automaticamente per ogni rete VPC. Segui questi passaggi per ricreare questa route se necessario.

Console

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Routes

  2. Fai clic sulla scheda Gestione route.

  3. Fai clic su Crea route.

  4. Specifica un nome e una descrizione per il percorso.

  5. Seleziona una rete esistente per il percorso.

  6. Per Intervallo IP di destinazione, inserisci 0.0.0.0/0.

  7. Specifica una priorità per il percorso. La priorità può variare da 0 (la priorità più alta) a 65535 (la priorità più bassa).

  8. Per Hop successivo, seleziona Gateway internet predefinito.

  9. Fai clic su Crea.

gcloud

Ricrea la route predefinita IPv4 per una rete.

gcloud compute routes create ROUTE_NAME \
    --destination-range=0.0.0.0/0 \
    --network=NETWORK \
    --next-hop-gateway=default-internet-gateway

Sostituisci quanto segue:

  • ROUTE_NAME: un nome per il percorso
  • NETWORK: il nome della rete VPC che contiene la route

API

Ricrea la route predefinita IPv4 per una rete.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "destRange": "0.0.0.0/0",
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "nextHopGateway": "projects/PROJECT_ID/global/gateways/default-internet-gateway"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui viene creata la route
  • ROUTE_NAME: un nome per il percorso
  • NETWORK_NAME: il nome della rete VPC che contiene la route

Aggiungi una route predefinita IPv6

La route statica predefinita IPv6 (::/0) con next-hop-gateway impostato su default-internet-gateway viene configurata automaticamente per la rete VPC quando crei una subnet a doppio stack con tipo di accesso IP esterno. Puoi eliminare il route per bloccare tutto il traffico IPv6 dalle VM a internet. Se necessario, puoi anche ricreare la route.

Console

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Routes

  2. Fai clic sulla scheda Gestione route.

  3. Fai clic su Crea route.

  4. Specifica un nome e una descrizione per il percorso.

  5. Seleziona una rete esistente per il percorso.

  6. Per Intervallo IP di destinazione, inserisci ::/0.

  7. Specifica una priorità per il percorso. La priorità può essere compresa tra 0 (la priorità più alta) e 65535 (la priorità più bassa).

  8. Per Hop successivo, seleziona Gateway internet predefinito.

  9. Fai clic su Crea.

gcloud

Ricrea la route predefinita IPv6 per una rete.

gcloud compute routes create ROUTE_NAME \
    --destination-range=::/0 \
    --network=NETWORK \
    --next-hop-gateway=default-internet-gateway

Sostituisci quanto segue:

  • ROUTE_NAME: un nome per il percorso.
  • NETWORK: il nome della rete VPC che contiene la route.

API

Ricrea la route predefinita IPv6 per una rete.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "destRange": "::/0",
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "nextHopGateway": "projects/PROJECT_ID/global/gateways/default-internet-gateway"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui viene creata la route
  • ROUTE_NAME: un nome per il percorso
  • NETWORK_NAME: il nome della rete VPC che contiene la route

Modifica una route statica

Non puoi modificare o aggiornare una route statica dopo averla creata. Per modificare una route statica, devi eliminarla e creare una route sostitutiva.

Elimina una route statica

Per eliminare un percorso, procedi nel seguente modo.

Console

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Routes

  2. Fai clic sulla scheda Gestione route.

  3. Seleziona la casella di controllo accanto alla regola da eliminare.

  4. Fai clic su Elimina.

  5. Fai di nuovo clic su Elimina per confermare.

gcloud

Elimina una route statica personalizzata utilizzando il seguente comando gcloud CLI:

gcloud compute routes delete ROUTE_NAME

Sostituisci ROUTE_NAME con il nome della route da eliminare.

API

Elimina una route statica personalizzata per rimuoverla dalla rete VPC utilizzando il metodo routes.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes/ROUTE_NAME

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui si trova il percorso.
  • ROUTE_NAME: il nome della route da eliminare.

Propagazione dei cambi di percorso

Quando aggiungi o elimini una route statica, la route si propaga a tutte le regioni e le istanze VM nella tua rete VPC. Uno stato dell'operazione di route PENDING o RUNNING indica che la modifica della route è in coda.

Dopo la coda, lo stato dell'operazione della route passa a DONE. Potrebbero essere necessari altri 30 secondi prima che tutte le istanze VM nella tua rete VPC e nelle reti di peering di rete VPC utilizzino una nuova route o si interrompano utilizzando una route precedente.

Se aggiungi o rimuovi più route statiche contemporaneamente, le modifiche possono essere applicate in qualsiasi ordine. Non vi è alcuna garanzia che l'ordine in cui invii le modifiche al percorso sia l'ordine in cui vengono elaborate. Istanze diverse potrebbero venire a conoscenza delle modifiche in momenti diversi.

Se devi apportare modifiche al percorso che dipendono l'una dall'altra, devi apportare le modifiche in sequenza eseguendo quelle successive solo dopo che lo stato della modifica precedente è stato DONE e sono trascorsi altri 30 secondi.

Abilita l'IP forwarding per le istanze

Per impostazione predefinita, l'IP forwarding è disattivato e Google Cloud esegue un rigoroso controllo degli indirizzi di origine. Soggetto alla configurazione del firewall in uscita effettiva, una VM può emettere pacchetti con le seguenti origini:

  • L'indirizzo IPv4 interno principale dell'interfaccia di rete (NIC) di un'istanza.
  • Qualsiasi intervallo IP alias configurato sul NIC di un'istanza.
  • Se nella subnet è configurato un intervallo di indirizzi IPv6 e l'istanza è a doppio stack, uno qualsiasi degli indirizzi IPv6 assegnati al NIC.
  • Un indirizzo IP interno o esterno associato a una regola di forwarding, per il bilanciamento del carico passthrough o il forwarding del protocollo, se l'istanza è un backend per un bilanciatore del carico di rete passthrough interno, un bilanciatore del carico di rete passthrough esterno o se fa riferimento a un'istanza di destinazione.

Per utilizzare una VM come hop successivo per una route, la VM deve inoltrare i pacchetti le cui origini non corrispondono a uno degli indirizzi o degli intervalli IP nell'elenco precedente. Per inoltrare i pacchetti con indirizzi di origine arbitrari, devi abilitare l'IP forwarding:

  • Quando crei o aggiorni una VM, abiliti l'IP forwarding seguendo le istruzioni riportate in questa sezione. L'abilitazione dell'IP forwarding si applica a tutte le NIC sulla VM.
  • Oltre ai passaggi in questa sezione, devi abilitare l'IP forwarding all'interno del sistema operativo guest della VM. Per farlo su Linux, imposta il valore di uno o entrambi i seguenti parametri del kernel su 1: net.ipv4.ip_forward (per IPv4) o net.ipv6.conf.all.forwarding (per IPv6).

Per abilitare l'IP forwarding quando crei una VM, completa i seguenti passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Nella sezione Opzioni avanzate, espandi Networking, dischi, sicurezza, gestione, single tenancy.

  4. Espandi la sezione Networking.

  5. Nella sezione IP forwarding, seleziona la casella di controllo Abilita.

gcloud

Quando crei un'istanza, aggiungi il flag --can-ip-forward al comando:

gcloud compute instances create ... --can-ip-forward

API

Quando crei un'istanza, utilizza il campo canIpForward per abilitare l'IP forwarding:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "canIpForward": true,
  ...other fields
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto che contiene l'istanza
  • ZONE: la zona Google Cloud contenente l'istanza

Per maggiori informazioni, consulta il metodo instances.insert.

Terraform

Puoi utilizzare la risorsa Terraform per creare un'istanza VM con l'IP forwarding abilitato.

In questo esempio, gli argomenti Terraform hanno valori assegnati che puoi modificare.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace this with your project ID in quotes
  zone         = "southamerica-east1-b"
  name         = "instance-next-hop"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    network = "default"
  }
  can_ip_forward = true
}

Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.

Dopo aver abilitato l'IP forwarding, continua con il processo di creazione della VM.

Per abilitare l'IP forwarding su una VM esistente, aggiorna la proprietà dell'istanza canIpForward.

Passaggi successivi