Indirizzi IP in uscita per i servizi App Engine

I servizi in uscita, come API Fetch, URL e Mail, recuperano molti pool di indirizzi IP. Gli intervalli di indirizzi IP in questo pool sono soggetti a modifiche di routine. Infatti, due chiamate API sequenziali della stessa applicazione possono sembrare provenienti da due indirizzi IP diversi.

Se devi conoscere gli indirizzi IP associati al traffico in uscita dal servizio, puoi trovare gli intervalli di indirizzi IP correnti per il tuo servizio o configurare un indirizzo IP statico per il tuo servizio.

Indirizzi IP per servizi App Engine

Gli indirizzi in uscita utilizzati da App Engine rientrano in questi intervalli di indirizzi IP.

  • Google pubblica l'elenco completo degli intervalli IP che rende disponibili agli utenti su Internet in goog.json.

  • Google pubblica inoltre un elenco di intervalli di indirizzi IP esterni, globali e regionali, disponibili per le risorse Google Cloud dei clienti in cloud.json.

Gli indirizzi IP utilizzati dai servizi e dalle API di Google rientrano nell'elenco degli intervalli calcolati rimuovendo tutti gli intervalli in cloud.json da quelli in goog.json.

Configurare un indirizzo IP in uscita statico

Per configurare un indirizzo IP statico per il servizio dell'ambiente standard di App Engine, utilizza Accesso VPC serverless con il router Cloud e Cloud NAT. Utilizzando l'accesso VPC serverless, puoi inviare il traffico in uscita alla tua rete Virtual Private Cloud (VPC). Utilizzando un gateway NAT (Network Address Translation) nel VPC, puoi instradare il traffico App Engine a un indirizzo IP dedicato.

Il routing del traffico tramite Cloud NAT non provoca un hop aggiuntivo nello stack di networking, poiché il gateway Cloud NAT e il router Cloud forniscono solo un piano di controllo e i pacchetti non passano attraverso il gateway Cloud NAT o il router Cloud.

I passaggi seguenti mostrano come configurare un indirizzo IP in uscita statico per il tuo servizio dell'ambiente standard di App Engine.

  1. Assicurati di avere il ruolo roles/compute.networkAdmin o un ruolo personalizzato con le stesse autorizzazioni.

  2. Crea una subnet (subnet) all'interno della tua rete VPC per il traffico di App Engine. Questo garantisce che altre risorse nella tua rete VPC non possano utilizzare l'indirizzo IP statico.

    gcloud compute networks subnets create SUBNET_NAME \
        --range=RANGE \
        --network=NETWORK_NAME \
        --region=REGION

    Nel comando precedente, sostituisci:

    • SUBNET_NAME con un nome che vuoi assegnare alla subnet.
    • RANGE con l'intervallo IP in formato CIDR che vuoi assegnare a questa subnet (ad es. 10.124.0.0/28)
    • NETWORK_NAME con il nome della rete VPC.
    • REGION con l'area geografica del servizio App Engine.
  3. Connetti il tuo servizio App Engine alla subnet.

    Segui la guida Connessione a una rete VPC e specifica il nome della subnet creata nel passaggio precedente per la subnet del connettore.

  4. Crea un nuovo router Cloud. Il router Cloud è un componente del piano di controllo necessario per Cloud NAT.

    gcloud compute routers create ROUTER_NAME \
        --network=NETWORK_NAME \
        --region=REGION

    Nel comando precedente, sostituisci:

    • ROUTER_NAME con un nome per la risorsa router Cloud che vuoi creare.
    • NETWORK_NAME con il nome della rete VPC.
    • REGION con l'area geografica in cui vuoi creare un gateway NAT.
  5. Prenota un indirizzo IP statico.

    Questo è l'indirizzo che il tuo servizio utilizzerà per inviare il traffico in uscita. Una risorsa di indirizzo IP prenotato conserva l'indirizzo IP sottostante quando la risorsa a cui è associata viene eliminata e ricreata. Questo indirizzo IP viene conteggiato ai fini delle quote di indirizzi IP statici nel progetto Google Cloud.

    gcloud compute addresses create ORIGIN_IP_NAME \
        --region=REGION

    Nel comando precedente, sostituisci:

    • ORIGIN_IP_NAME con il nome che vuoi assegnare alla risorsa dell'indirizzo IP.
    • REGION con l'area geografica in cui verrà eseguito il router Cloud NAT. Idealmente nella stessa area geografica del servizio App Engine per ridurre al minimo la latenza e i costi di rete.

    Usa il comando compute addresses describe per visualizzare il risultato:

    gcloud compute addresses describe ORIGIN_IP_NAME
  6. Crea un gateway Cloud NAT e specifica il tuo indirizzo IP.

    Il traffico proveniente dalla subnet attraverserà questo gateway e utilizzerà l'indirizzo IP statico prenotato nel passaggio precedente.

    gcloud compute routers nats create NAT_NAME \
        --router=ROUTER_NAME \
        --region=REGION \
        --nat-custom-subnet-ip-ranges=SUBNET_NAME \
        --nat-external-ip-pool=ORIGIN_IP_NAME
      

    Nel comando precedente, sostituisci:

    • NAT_NAME con un nome per la risorsa gateway NAT NAT che vuoi creare.
    • ROUTER_NAME con il nome del router Cloud.
    • REGION con l'area geografica in cui vuoi creare un gateway NAT.
    • ORIGIN_IP_NAME con il nome della risorsa riservata dell'indirizzo IP che hai creato nel passaggio precedente.
  7. Imposta l'accesso Serverless VPC in uscitasu all-traffic.

    Per impostazione predefinita, i servizi di App Engine che utilizzano l'accesso VPC serverless inviano solo traffico interno alla tua rete VPC. Per inviare il traffico con destinazioni esterne alla tua rete VPC in modo che abbia l'indirizzo IP statico specificato, devi modificare l'impostazione in uscita.

    Specifica l'impostazione di traffico in uscita nel file app.yaml del servizio:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: all-traffic

    Sostituisci:

    • PROJECT_ID con l'ID del tuo progetto Cloud.
    • REGION con l'area geografica in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del connettore.

    Esegui il deployment del servizio:

     gcloud app deploy