I servizi in uscita, come le API di recupero URL, Socket e Mail, utilizzano un grande 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 provenire da due indirizzi IP diversi.
Se devi conoscere gli indirizzi IP associati al traffico in uscita dal tuo servizio, puoi trovare gli intervalli di indirizzi IP attuali per il tuo servizio o configurare un indirizzo IP statico per il tuo servizio.
Indirizzi IP per i servizi App Engine
Puoi trovare gli intervalli di indirizzi IP attuali per i tuoi servizi App Engine in base alle informazioni sugli intervalli IP pubblicate da Google:
Google pubblica l'elenco completo degli intervalli IP che rende disponibili utenti su internet in goog.json.
Google pubblica inoltre un elenco di indirizzi IP esterni globali e a livello di regione disponibili per i clienti alle risorse Google Cloud cloud.json.
Gli indirizzi IP utilizzati dalle API e dai servizi Google rientrano
nelll'elenco degli intervalli calcolati sottraendo tutti gli intervalli in cloud.json
da quelli in goog.json
. Questi elenchi vengono aggiornati di frequente.
Puoi utilizzare il seguente script Python per creare un elenco di intervalli di indirizzi IP che includono quelle utilizzate dalle API e dai servizi Google.
Per informazioni sull'esecuzione di questo script, consulta Come eseguire.
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 Con l'accesso VPC serverless, puoi inviare il traffico in uscita una rete VPC (Virtual Private Cloud). Tramite un indirizzo di rete di traduzione (NAT) sul tuo VPC, puoi instradare al traffico di App Engine attraverso un indirizzo IP dedicato.
L'indirizzamento del traffico tramite Cloud NAT non causa un hop aggiuntivo nel tuo stack di rete, 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.
Gli indirizzi IP in uscita statici non possono essere configurati per il traffico inviato utilizzando il servizio di recupero dell'URL. Il traffico inviato tramite il servizio di recupero URL continuerà a utilizzare
dal pool di indirizzi IP pubblici. Se vuoi che tutto il traffico in uscita utilizzi un
indirizzo IP statico,
disattiva il valore predefinito di recupero dell'URL
e interrompi qualsiasi utilizzo esplicito della libreria urlfetch
.
I passaggi riportati di seguito mostrano come configurare un indirizzo IP in uscita statico per il servizio dell'ambiente standard di App Engine.
Assicurati di avere roles/compute.networkAdmin o un ruolo personalizzato con le stesse autorizzazioni.
Crea una sottorete all'interno della rete VPC per il traffico di App Engine. Ciò garantisce che le altre risorse in La rete VPC non può utilizzare l'indirizzo IP statico.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
Nel comando riportato sopra, sostituisci:
SUBNET_NAME
con il nome che vuoi assegnare alla una subnet.RANGE
con Intervallo IP in CIDR che desideri assegnare alla subnet (ad es.10.124.0.0/28
)NETWORK_NAME
con il nome della rete VPC.REGION
con la regione del tuo dal servizio App Engine.
Collega il servizio App Engine alla sottorete.
Segui la guida Connettersi a una rete VPC, e specificare il nome della subnet creata nel passaggio precedente per con una subnet del connettore AWS.
Crea un nuovo router Cloud. Cloud Router è un componente necessario del piano di controllo 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 Cloud Router che vuoi creare.NETWORK_NAME
con il nome della rete VPC.REGION
con la regione in cui vuoi creare un gateway NAT.
Prenota un indirizzo IP statico.
Si tratta dell'indirizzo che il servizio utilizzerà per inviare il traffico in uscita. R di indirizzi IP riservati 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 tuo progetto Google Cloud.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
Nel comando riportato sopra, sostituisci:
ORIGIN_IP_NAME
con il nome che vuoi assegnare alla risorsa dell'indirizzo IP.REGION
con la regione in cui verrà eseguito il router Cloud NAT. Possibilmente la stessa regione di 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
Crea un gateway Cloud NAT e specifica il tuo indirizzo IP.
Il traffico proveniente dalla tua subnet passerà attraverso questo gateway e utilizzerà all'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 Cloud NAT gateway VPN ad alta disponibilità.ROUTER_NAME
con il nome del tuo router Cloud.REGION
con la regione in cui vuoi creare un gateway NAT.ORIGIN_IP_NAME
con il nome della risorsa indirizzo IP riservato che hai creato nel passaggio precedente.
Imposta l'impostazione di uscita Accesso VPC serverless su
all-traffic
.Per impostazione predefinita, i servizi App Engine che utilizzano Accesso VPC serverless inviano solo traffico interno alla tua rete VPC. Per inviare traffico con indirizzi verso la rete VPC, in modo che abbia statico specificato, devi modificare l'impostazione del traffico in uscita.
Specifica l'impostazione di uscita nel file
app.yaml
per il tuo servizio:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: all-traffic
Sostituisci:
PROJECT_ID
con il tuo ID progetto Google Cloud.REGION
con la regione in cui si trova il tuo connettore.CONNECTOR_NAME
con il nome del connettore.
Esegui il deployment del servizio:
gcloud app deploy