Configura il peering VPC

Puoi utilizzare il peering di rete VPC per consentire a Datastream di comunicare privatamente con le risorse nella tua rete Virtual Private Cloud (VPC).

Il peering di rete VPC è una connessione tra la tua rete VPC e la rete privata di Datastream, che consente a Datastream di comunicare con le risorse interne utilizzando indirizzi IP interni. L'utilizzo della connettività privata stabilisce una connessione dedicata sulla rete Datastream, il che significa che nessun altro cliente può condividerla.

La connessione di peering di rete VPC tra la tua rete VPC e la rete VPC di Datastream consente a Datastream di connettersi a:

La connessione di peering di rete VPC tra la tua rete VPC e la rete VPC di Datastream non consente a Datastream di connettersi a:

Per stabilire la connettività tra Datastream e una risorsa accessibile solo dalla tua rete VPC, puoi utilizzare una VM Network Address Translation (NAT) nella tua rete VPC. Un caso d'uso comune per una VM NAT si verifica quando Datastream deve connettersi a un'istanza Cloud SQL.

Questa pagina descrive un esempio di configurazione della VM NAT che consente a Datastream di connettersi privatamente a un'istanza Cloud SQL.

Diagramma di flusso dell'utente Datastream

Prerequisiti per il peering VPC

Prima di creare una configurazione di connettività privata, devi eseguire i passaggi riportati di seguito affinché Datastream possa creare la connessione di peering VPC al tuo progetto:

  • Assicurati di avere una rete VPC in grado di connettersi alla rete privata di Datastream e che soddisfi i requisiti descritti nella pagina Peering di rete VPC. Per ulteriori informazioni sulla creazione di questa rete, consulta Utilizzo del peering di rete VPC.
  • Identifica un intervallo IP disponibile (con un blocco CIDR di /29) sulla rete VPC. Non può essere un intervallo IP già esistente come subnet, un intervallo IP preallocato per l'accesso privato ai servizi o qualsiasi route (diversa dalla route predefinita 0.0.0.0) che includa l'intervallo IP. Datastream utilizza questo intervallo IP per creare una subnet in modo da poter comunicare con il database di origine. La tabella seguente descrive gli intervalli IP validi.
Intervallo Descrizione
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Indirizzi IP privati RFC 1918
100.64.0.0/10 Spazio di indirizzi condiviso RFC 6598
192.0.0.0/24 Assegnazioni di protocollo IETF RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Documentazione RFC 5737
192.88.99.0/24 Relay da IPv6 a IPv4 (ritirato) RFC 7526
198.18.0.0/15 Test di benchmark RFC 2544
  • Verifica che Google Cloud e il firewall on-premise consentano il traffico dall'intervallo IP selezionato. In caso contrario, crea una regola firewall in entrata che consenta il traffico sulla porta del database di origine e assicurati che l'intervallo di indirizzi IPv4 nella regola firewall sia lo stesso dell'intervallo di indirizzi IP allocato durante la creazione della risorsa di connettività privata:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    Sostituisci quanto segue:

    • FIREWALL-RULE-NAME: il nome della regola firewall da creare.
    • PRIORITY: la priorità della regola, espressa come numero intero compreso tra 0 e 65535 inclusi. Il valore deve essere inferiore a quello impostato per la regola di blocco del traffico, se esistente. I valori di priorità più bassi implicano una precedenza maggiore.
    • PRIVATE_CONNECTIVITY_VPC: la rete VPC che può eseguire il peering con la rete privata di Datastream e che soddisfa i requisiti descritti nella pagina Peering di rete VPC. Questo è il VPC che specifichi quando crei la configurazione di connettività privata.
    • VPC_PROJECT: Il progetto della rete VPC.
    • FIREWALL_RULES: l'elenco di protocolli e porte a cui si applica la regola firewall, ad esempio tcp:80. La regola deve consentire il traffico TCP all'indirizzo IP e alla porta del database di origine o del proxy. Poiché la connettività privata può supportare più database, la regola deve considerare l'utilizzo effettivo della configurazione.
    • IP-RANGE: l'intervallo di indirizzi IP che Datastream utilizza per comunicare con il database di origine. Si tratta dello stesso intervallo che indichi nel campo Alloca un intervallo IP quando crei la configurazione di connettività privata.

      Potresti anche dover creare una regola firewall di uscita identica per consentire il traffico di ritorno a Datastream.

  • Sono assegnati a un ruolo che contiene l'autorizzazione compute.networks.list. Questa autorizzazione ti concede le autorizzazioni IAM necessarie per elencare le reti VPC nel tuo progetto. Puoi scoprire quali ruoli contengono questa autorizzazione visualizzando il riferimento alle autorizzazioni IAM.

Prerequisiti del VPC condiviso

Se utilizzi il VPC condiviso, devi completare le seguenti azioni oltre ai passaggi descritti nella sezione Prerequisiti VPC:

  1. Nel progetto di servizio:

    1. Attiva l'API Datastream.
    2. Recupera l'indirizzo email utilizzato per il service account di Datastream. I service account Datastream vengono creati quando esegui una delle seguenti operazioni:

      • Crea una risorsa Datastream, ad esempio un profilo di connessione o uno stream.
      • Crea una configurazione di connettività privata, seleziona la tua VPC condivisa e fai clic su Crea account di servizio Datastream. L'account di servizio viene creato nel progetto host.

      Per ottenere l'indirizzo email utilizzato per il account di servizio Datastream, individua il numero di progetto nella home page della console Google Cloud . L'indirizzo email del account di servizio è service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com.

  2. Nel progetto host:

    1. Concedi l'autorizzazione del ruolo Identity and Access Management (IAM) compute.networkAdmin all'account di servizio Datastream. Questo ruolo è obbligatorio solo quando crei il peering VPC. Una volta stabilito il peering, non hai più bisogno del ruolo.

      Se la tua organizzazione non consente la concessione dell'autorizzazione, crea un ruolo personalizzato con le seguenti autorizzazioni minime per creare ed eliminare risorse di connessione privata:

    Per saperne di più sui ruoli personalizzati, vedi Creare e gestire ruoli personalizzati.

Configura una VM NAT

  1. Identifica l'indirizzo IP dell'istanza Cloud SQL a cui Datastream deve connettersi.

  2. Identifica la tua rete VPC. Questa è la rete VPC connessa alla rete VPC Datastream tramite il peering di rete VPC.

  3. Se non l'hai ancora fatto, crea una configurazione di connettività privata in Datastream. In questo modo viene creata la connessione di peering di rete VPC che connette la tua rete VPC e la rete VPC di Datastream. Prendi nota dell'intervallo di indirizzi IP utilizzato dalla configurazione di connettività privata di Datastream.

  4. Scegli un tipo di macchina da utilizzare per la VM NAT che crei nel passaggio successivo. Google Cloud impone un limite massimo di larghezza di banda in uscita per istanza, per i pacchetti instradati dagli hop successivi all'interno di una rete VPC, in base al tipo di macchina dell'istanza VM. Per ulteriori informazioni, consulta Traffico in uscita verso destinazioni instradabili all'interno di una rete VPC e Larghezza di banda in uscita massima per istanza.

  5. Crea la VM NAT nella tua rete VPC. Se la tua rete VPC è una rete VPC condiviso, puoi creare la VM NAT nel progetto host o in qualsiasi progetto di servizio, a condizione che l'interfaccia di rete della VM NAT si trovi nella rete VPC condiviso.

    • Per ridurre al minimo tempo di round trip della rete, crea la VM NAT nella stessa regione di Datastream.
    • Questo esempio presuppone che la VM NAT abbia una sola interfaccia di rete.
    • Esegui lo script in una distribuzione Linux, ad esempio Debian 12.
    • Utilizza il seguente script di avvio. Lo script di avvio viene eseguito da root ogni volta che la VM viene avviata. Questo script include commenti che spiegano la funzione di ogni riga. Nello script, sostituisci CLOUD_SQL_INSTANCE_IP con l'indirizzo IP dell'istanza Cloud SQL e DATABASE_PORT con la porta di destinazione utilizzata dal software del database.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. Crea una regola firewall di autorizzazione in entrata (o una regola in un criterio firewall di rete globale, in un criterio firewall di rete regionale o in un criterio firewall gerarchico) con queste caratteristiche:

    • Direzione: in entrata
    • Azione: consenti
    • Parametro target: almeno la VM NAT
    • Parametro di origine: l'intervallo di indirizzi IP utilizzato dalla configurazione della connettività privata di Datastream
    • Protocollo: TCP
    • Porta: deve includere almeno DATABASE_PORT
  7. La regola firewall implicita per il traffico in uscita consente alla VM NAT di inviare pacchetti a qualsiasi destinazione. Se la tua rete VPC utilizza regole firewall di negazione del traffico in uscita, potresti dover creare una regola firewall di autorizzazione del traffico in uscita per consentire alla VM NAT di inviare pacchetti all'istanza Cloud SQL. Se è necessaria una regola di autorizzazione in uscita, utilizza questi parametri:

    • Direzione: in uscita
    • Azione: consenti
    • Parametro target: almeno la VM NAT
    • Parametro di destinazione: l'indirizzo IP dell'istanza Cloud SQL
    • Protocollo: TCP
    • Porta: deve includere almeno DATABASE_PORT
  8. Assicurati di aver configurato l'istanza Cloud SQL in modo che accetti le connessioni dall'indirizzo IPv4 interno principale utilizzato dall'interfaccia di rete della VM NAT. Per le istruzioni, consulta Autorizzazione con reti autorizzate nella documentazione di Cloud SQL.

  9. Crea un profilo di connessione in Datastream. Nei dettagli della connessione del profilo, specifica l'indirizzo IPv4 interno principale della VM NAT che hai creato. Inserisci la porta del database di origine nel campo della porta del profilo di connessione.

Configura una coppia di VM NAT e un bilanciatore del carico di rete passthrough interno

Per migliorare l'affidabilità di una soluzione di VM NAT, considera la seguente architettura, che utilizza una coppia di VM NAT e un bilanciatore del carico di rete passthrough interno:

  1. Crea due VM NAT in zone diverse della stessa regione. Segui le istruzioni per configurare una VM NAT per creare ogni VM e posizionarla nel proprio gruppo di istanze non gestite a livello di zona.

    In alternativa, puoi creare un gruppo di istanze gestite regionale. Nel modello di gruppo di istanze gestite, includi uno script di avvio come lo script di avvio di esempio nelle istruzioni Configura una VM NAT.

  2. Crea un bilanciatore del carico di rete passthrough interno il cui servizio di backend utilizza il gruppo di istanze o i gruppi del passaggio precedente come backend. Per un esempio di bilanciatore del carico di rete passthrough interno, consulta Configura un bilanciatore del carico di rete passthrough interno con backend di gruppi di istanze VM.

    Quando configuri il controllo di integrità del bilanciatore del carico, puoi utilizzare un controllo di integrità TCP che utilizza una porta TCP di destinazione corrispondente a DATABASE_PORT. I pacchetti di controllo di integrità vengono instradati a CLOUD_SQL_INSTANCE_IP in base alla configurazione della VM NAT. In alternativa, puoi eseguire un processo locale sulla VM NAT che risponde a un controllo di integrità TCP o HTTP su una porta personalizzata.

  3. Crea regole firewall e configura le reti autorizzate Cloud SQL come descritto nelle istruzioni per la configurazione di una VM NAT. Assicurati che le reti autorizzate Cloud SQL includano l'indirizzo IPv4 interno principale di entrambe le VM NAT.

  4. Quando crei un profilo di connessione Datastream, specifica l'indirizzo IP della regola di forwarding del bilanciatore del carico di rete passthrough interno nei dettagli di connessione del profilo.

Passaggi successivi