Accedi alle risorse esterne in una rete privata utilizzando un IP esterno statico

Questa pagina spiega come configurare i pool privati per accedere alle risorse esterne tramite un IP esterno statico.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:

Procedura guidata


Prima di iniziare

  • Enable the Cloud Build, Compute Engine, and Service Networking APIs.

    Enable the APIs

  • Per ottenere le autorizzazioni necessarie per configurare una connessione privata, chiedi all'amministratore per concederti il ruolo IAM Amministratore rete Compute Engine (roles/compute.networkAdmin) per il progetto Cloud in cui risiede la rete VPC. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

  • Per utilizzare i comandi gcloud in questa pagina, installa Google Cloud CLI.

Crea una rete VPC

Console

Per creare una rete VPC utilizzando la console Google Cloud, completa i seguenti passaggi:

  1. Apri la pagina Reti VPC nella console Google Cloud.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC per creare una nuova rete.

    Viene visualizzata la pagina Crea una rete VPC.

  3. Inserisci un nome per la rete.

  4. In Modalità di creazione subnet, seleziona Automatica.

  5. Se vuoi personalizzare ulteriormente altri campi, consulta Creare e gestire reti VPC. In caso contrario, lascia tutti i campi invariati.

  6. Fai clic su Crea per creare la tua rete VPC.

    Dopo aver fatto clic su Crea, vedrai la nuova rete VPC nella pagina Reti VPC.

gcloud

Per creare una rete VPC utilizzando lo strumento a riga di comando gcloud, inserisci il seguente comando nel terminale, dove NETWORK_NAME è il nome della rete VPC:

gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto

Dopo aver fatto clic su Crea, vedrai la nuova rete VPC nella pagina Reti VPC.

Per saperne di più sulla creazione e sulla gestione delle reti VPC, consulta Creare e gestire le reti VPC.

Crea una connessione privata

Console

Creare una connessione privata tra la tua rete VPC e il servizio producer, completa i seguenti passaggi:

  1. Apri la pagina Reti VPC nella console Google Cloud.

    Vai alle reti VPC

  2. Fai clic sul nome della rete.

    Viene visualizzata la pagina Dettagli rete VPC.

  3. Fai clic sulla scheda Connessione ai servizi privati.

    1. Seleziona la scheda Intervalli IP allocati per i servizi.

    2. Fai clic su Alloca intervallo IP.

      Verrà visualizzata la finestra popup Alloca un intervallo IP interno.

      1. Inserisci un nome per il tuo intervallo IP.

      2. In Intervallo IP, seleziona Automatico.

      3. Nel campo Lunghezza prefisso, inserisci una lunghezza del prefisso per la rete.

      4. Fai clic su Assegna per assegnare l'intervallo IP.

    3. Seleziona la scheda Connessioni private ai servizi.

    4. Fai clic su Crea connessione.

      Viene visualizzato il popup Crea una connessione privata.

      1. In Allocazione assegnata, seleziona il tuo intervallo IP.

      2. Fai clic su Connetti.

      La connessione verrà visualizzata nella tabella sotto il Scheda Connessioni private ai servizi.

      Fai clic su Attiva (Esporta route personalizzata) per assicurarti che le route per il VPC vengano applicate alla rete in cui sono in esecuzione le istanze del pool privato.

La rete è stata configurata.

gcloud

Per creare una connessione privata tra la tua rete VPC e la rete del producer di servizi, completa i seguenti passaggi:

  1. Inserisci il seguente comando nel terminale per allocare un intervallo IP per il tuo servizio:

        gcloud compute addresses create RESERVED_RANGE_NAME \
          --global \
          --prefix-length=PREFIX_LENGTH \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • RESERVED_RANGE_NAME è il nome dell'intervallo allocato. Ad esempio, my-allocated-range.
    • PREFIX_LENGTH è la lunghezza del prefisso della tua rete. Il prefisso deve essere lungo /24 o inferiore, ad esempio /22, /21 e così via
    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene il VPC in ogni rete.
  2. Inserisci il seguente comando nel terminale per creare una connessione privata:

        gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • RESERVED_RANGE_NAME è il nome dell'intervallo allocato creato nel passaggio precedente.
    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene il VPC in ogni rete.
  3. Inserisci il seguente comando nel terminale per assicurarti che le route per la VPC vengano applicate alla rete in cui sono in esecuzione le istanze del pool privato:

        gcloud compute networks peerings update servicenetworking-googleapis-com \
          --export-custom-routes \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Dove:

    • VPC_NETWORK è il nome della tua rete VPC, ad esempio my-vpc-network.
    • PROJECT_ID è l'ID del progetto che contiene la rete VPC.

A questo punto, hai configurato la rete.

Per saperne di più sulla configurazione di una rete, consulta Configurazione di una connessione privata tra la tua rete VPC e la rete del producer di servizi.

Crea un pool privato

Console

Per creare un pool privato utilizzando la console Google Cloud, completa i seguenti passaggi:

  1. Apri la pagina Pool di worker nella console Google Cloud:

    Apri la pagina Pool di worker di Cloud Build

  2. Seleziona il progetto in cui vuoi creare il pool privato.

  3. Nella pagina Pool di worker, fai clic su Crea.

    Verrà visualizzato il riquadro Crea pool privato.

  4. Nel riquadro laterale Crea pool privato, inserisci le seguenti informazioni:

    1. Inserisci un nome per il pool privato.

    2. Seleziona una Regione dal menu a discesa.

    3. In Rete, inserisci le seguenti informazioni:

    • Progetto: inserisci l'ID o il numero del progetto.
    • Rete: inserisci il nome della tua rete VPC.
    1. (Facoltativo) Deseleziona la casella Assegna IP esterni per la configurazione di rete più limitata.

Hai creato un pool privato.

gcloud

Per creare un pool privato utilizzando lo strumento a riga di comando gcloud, inserisci il seguente comando nel terminale:

      gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --no-public-egress

Dove:

  • PRIVATEPOOL_ID è l'identificatore univoco del tuo pool privato.
  • PRIVATEPOOL_PROJECT_ID è l'ID del progetto Google Cloud dove vuoi creare il pool privato.
  • REGION è una delle regioni supportate.
  • PEERED_NETWORK è l'URL della risorsa di rete
  • --no-public-egress: se questo flag viene impostato, viene creato il pool privato senza un indirizzo IP esterno.

Hai creato un pool privato.

Per saperne di più su come creare e gestire i pool privati, consulta Creazione e gestione di pool privati.

Accedere a risorse esterne in una rete privata

Per impostazione predefinita, gli indirizzi IP esterni associati a Cloud Build I pool privati non sono statici o configurabili. Sono assegnati da in Google Cloud. Se vuoi configurare i pool privati in modo che accedano alle risorse esterne dalla tua rete privata con un indirizzo IP esterno statico, devi configurare una macchina virtuale (VM) nel progetto per fungere da gateway NAT autogestito per le richieste proxy alla rete internet pubblica. Successivamente, devi configurare route personalizzati per inoltrare queste richieste alla VM per assicurarti che i route vengano scambiati con il progetto di rete di servizi.

Questa sezione illustra come configurare i pool privati per accedere alle risorse esterne tramite un indirizzo IP esterno statico completando i seguenti passaggi:

  1. Crea uno script di avvio per configurare la VM in modo che esegua il proxy per tutto il traffico instradato a alla VM e maschera il traffico come proveniente dal suo indirizzo IP:

    #! /bin/bash
    set -e
    
    sysctl -w net.ipv4.ip_forward=1
    IFACE=$(ip -brief link | tail -1 | awk  {'print $1'})
    iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
  2. Configura una VM nello stesso VPC del pool privato con una regola per consentire il proxy delle richieste tramite il VPC:

    gcloud compute instances create VM_NAME \
      --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \
      --network=NETWORK_NAME \
      --private-network-ip=INTERNAL_IP --can-ip-forward \
      --zone=ZONE \
      --subnet=SUBNETWORK \
      --tags=NAT_TAG  \
      --metadata-from-file=startup-script=STARTUP_SCRIPT
    

    Dove:

    • VM_NAME è il nome che vuoi assegnare alla VM.
    • NETWORK_NAME è il nome della rete che hai creato nella sezione precedente.
    • INTERNAL_IP è un indirizzo IP interno valido all'interno dell'intervallo della subnet della regione della VM. Ad esempio, 10.128.0.2.
    • ZONE è la zona associata alla tua rete, ad esempio us-central1-a.
    • (Facoltativo) SUBNETWORK è il nome della subnet. La della subnet può essere trovato nel REST equivalente della subnet nel seguente formato: projects/project-id/regions/region/subnetworks/subnetwork-name. Se hai selezionato Automatica in Modalità di connessione della subnet durante la creazione di una rete VPC, non è necessario specificare questo campo.
    • NAT_TAG è il nome del tag del gateway NAT che ti consente di instradare le richieste in modo condizionale, in base al fatto che abbiano o meno un tag di questa VM. Puoi specificare un nome qualsiasi per il tag.
    • STARTUP_SCRIPT è il nome della startup creato nel passaggio precedente. Ad esempio, startup-script-example.sh. In questo esempio, il flag --metadata-from-file viene utilizzato per passare i contenuti dello script di avvio specificato a una chiave denominata startup-script.

    Dopo aver eseguito questo comando, vedrai un output contenente il valore dell'IP esterno. Prendi nota del valore dell'IP esterno. Tutto il traffico dal pool privato alla risorsa esterna, viene inviato tramite questo indirizzo. Puoi scegliere di utilizzare questo indirizzo per ulteriori configurazioni, ad esempio e configurare regole firewall sulla rete esterna.

  3. Configura un percorso per indirizzare tutte le richieste alla risorsa esterna all'istanza creata nel passaggio precedente, in modo che le richieste vengano inoltrate alle istanze del pool privato:

    gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \  
      --destination-range=DESTINATION_RANGE \
      --next-hop-address=INTERNAL_IP \
      --network=NETWORK_NAME \
      --priority=POOL_ROUTE_PRIORITY
    

    Dove:

    • PRIVATE_POOL_ROUTE_NAME è il nome che vuoi assegnare al percorso.
    • DESTINATION_RANGE è un intervallo di indirizzi CIDR valido contenente la destinazione verso cui vuoi eseguire il routing. Ad esempio, un'istanza GitHub Enterprise Edition. Ad esempio, 8.8.8.0/24.
    • INTERNAL_IP è il valore dell'IP interno ottenuto dal passaggio precedente. Ad esempio, 10.128.0.2.
    • NETWORK_NAME è il nome della rete creata nella sezione precedente.
    • POOL_ROUTE_PRIORITY è il numero di priorità che vuoi specificare per il percorso.

    Questo comando garantisce che qualsiasi traffico da una build all'interno di un'istanza di pool privato venga indirizzato alla VM proxy che hai creato e non direttamente alla rete internet pubblica.

  4. Configura una route per inoltrare le richieste dal proxy dalle istanze codificate a l'intervallo IP di destinazione esterno. Il comando seguente crea una route da inoltrare richieste alla rete internet pubblica associate alle tue istanze del pool private.

    gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ 
      --destination-range=DESTINATION_RANGE \    
      --next-hop-gateway=default-internet-gateway \
      --network=NETWORK_NAME \
      --priority=NAT_ROUTE_PRIORITY \
      --tags=NAT_TAG
    

    Dove:

    • NAT_EGRESS_ROUTE_NAME è il nome che vuoi assegnare al percorso del gateway NAT.
    • DESTINATION_RANGE è l'indirizzo della destinazione a cui vuoi calcolare il percorso. Ad esempio, un'istanza GitHub Enterprise Edition. Ad esempio, 8.8.8.0/24.
    • NETWORK_NAME è il nome della rete che hai creato nella sezione precedente.
    • NAT_TAG è il nome del tag del gateway NAT che ti consente di instradare le richieste in modo condizionale, in base al fatto che siano o meno associate a un tag di questa VM. Puoi specificare qualsiasi nome per il tag.
    • NAT_ROUTE_PRIORITY è il numero di priorità che vuoi specificare per il tuo percorso.

    Questo comando garantisce che qualsiasi traffico dalla VM proxy possa essere indirizzato alla rete internet pubblica.

  5. Aggiungi una regola firewall per consentire il traffico dal pool privato alla VM gateway NAT:

    gcloud compute firewall-rules create RULE_NAME \
      --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \
      --network=NETWORK_NAME \
      --source-ranges=RESERVED_RANGE \
      --target-tags=NAT_TAG
    

    Dove:

    • RULE_NAME è il nome che vuoi assegnare alla regola firewall.
    • FIREWALL_PRIORITY è il numero di priorità che vuoi specificare per la regola firewall.
    • NETWORK_NAME è il nome della rete che hai creato nella sezione precedente.
    • RESERVED_RANGE è l'intervallo CIDR che allocati durante la configurazione della rete VPC.
    • NAT_TAG è il nome del tag del gateway NAT che ti consente di instradare le richieste in modo condizionale, in base al fatto che abbiano o meno un tag di questa VM. Puoi specificare qualsiasi nome per il tag.

Ora puoi accedere alle risorse esterne dall'indirizzo IP statico del gateway NAT autonomo nel tuo VPC.

Passaggi successivi