Los servicios salientes, como las APIs URL Fetch, Sockets y Mail, utilizan un gran conjunto de direcciones IP. Los intervalos de direcciones IP de este grupo están sujetos a cambios rutinarios. De hecho, puede parecer que dos llamadas a la API secuenciales de la misma aplicación proceden de dos direcciones IP diferentes.
Si necesitas saber las direcciones IP asociadas al tráfico saliente de tu servicio, puedes buscar los intervalos de direcciones IP actuales de tu servicio o configurar una dirección IP estática para tu servicio.
Direcciones IP de los servicios de App Engine
Puedes consultar los intervalos de direcciones IP actuales de tus servicios de App Engine en la información sobre intervalos de IP que publica Google:
Google publica la lista completa de intervalos de direcciones IP que pone a disposición de los usuarios en Internet en goog.json.
Google también publica una lista de intervalos de direcciones IP externas globales y regionales disponibles para los recursos de los clientes en cloud.json. Google Cloud
Las direcciones IP que usan las APIs y los servicios de Google se obtienen a partir de la confluencia entre estas dos fuentes, restando los intervalos de cloud.json
de los de goog.json
. Estas listas se actualizan con frecuencia.
Puedes usar la siguiente secuencia de comandos de Python para crear una lista de intervalos de direcciones IP que incluya las que usan las APIs y los servicios de Google.
Para obtener información sobre cómo ejecutar esta secuencia de comandos, consulta Cómo ejecutar.
Configurar una dirección IP de salida estática
Para configurar una dirección IP estática para tu servicio del entorno estándar de App Engine, usa Acceso a VPC sin servidor con Cloud Router y Cloud NAT. Con Acceso a VPC sin servidor, puedes enviar tráfico de salida a tu red de nube privada virtual (VPC). Si usas una pasarela de traducción de direcciones de red (NAT) en tu VPC, puedes enrutar el tráfico de App Engine a través de una dirección IP dedicada.
El enrutamiento del tráfico a través de Cloud NAT no provoca un salto adicional en tu pila de redes, ya que la pasarela de Cloud NAT y Cloud Router solo proporcionan un plano de control y los paquetes no pasan por la pasarela de Cloud NAT ni por Cloud Router.
No se pueden configurar direcciones IP de salida estáticas para el tráfico enviado mediante el servicio de obtención de URLs. El tráfico enviado mediante el servicio URL Fetch seguirá usando el grupo de direcciones IP públicas. Si quieres que todo tu tráfico saliente use una dirección IP estática, inhabilita el valor predeterminado de URL Fetch y deja de usar explícitamente la biblioteca urlfetch
.
En los siguientes pasos se muestra cómo configurar una dirección IP saliente estática para tu servicio del entorno estándar de App Engine.
Asegúrate de tener el rol roles/compute.networkAdmin o un rol personalizado con los mismos permisos.
Crea una subred en tu red de VPC para el tráfico de App Engine. De esta forma, te aseguras de que otros recursos de tu red de VPC no puedan usar la dirección IP estática.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
En el comando anterior, sustituye lo siguiente:
SUBNET_NAME
con el nombre que quieras asignar a la subred.RANGE
con el intervalo de IPs en formato CIDR que quieras asignar a esta subred (por ejemplo,10.124.0.0/28
).NETWORK_NAME
con el nombre de tu red de VPC.REGION
con la región de tu servicio de App Engine.
Conecta tu servicio de App Engine a la subred.
Sigue la guía Conectarse a una red de VPC y especifica el nombre de la subred que has creado en el paso anterior para la subred del conector.
Crea un router de Cloud. Cloud Router es un componente del plano de control necesario para Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
En el comando anterior, sustituye lo siguiente:
ROUTER_NAME
con el nombre del recurso de Cloud Router que quieras crear.NETWORK_NAME
con el nombre de tu red de VPC.REGION
por la región en la que quieras crear una pasarela de NAT.
Reserva una dirección IP estática.
Esta es la dirección que usará tu servicio para enviar tráfico saliente. Un recurso de dirección IP reservada conserva la dirección IP subyacente cuando se elimina y se vuelve a crear el recurso al que está asociado. Esta dirección IP se tiene en cuenta en las cuotas de direcciones IP estáticas de tu Google Cloud proyecto.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
En el comando anterior, sustituye lo siguiente:
ORIGIN_IP_NAME
con el nombre que quieras asignar al recurso de dirección IP.REGION
con la región en la que se ejecutará el router de Cloud NAT. Lo ideal es que sea la misma región que tu servicio de App Engine para minimizar la latencia y los costes de red.
Usa el comando
compute addresses describe
para ver el resultado:gcloud compute addresses describe ORIGIN_IP_NAME
Crea una pasarela de Cloud NAT y especifica tu dirección IP.
El tráfico procedente de tu subred pasará por esta pasarela y usará la dirección IP estática que has reservado en el paso anterior.
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
En el comando anterior, sustituye lo siguiente:
NAT_NAME
con el nombre del recurso de pasarela Cloud NAT que quieras crear.ROUTER_NAME
con el nombre de tu Cloud Router.REGION
por la región en la que quieras crear una pasarela de NAT.ORIGIN_IP_NAME
con el nombre del recurso de dirección IP reservada que has creado en el paso anterior.
Define el ajuste de salida de Acceso a VPC sin servidor en
all-traffic
.De forma predeterminada, los servicios de App Engine que usan Acceso a VPC sin servidor solo envían tráfico interno a tu red de VPC. Para enviar tráfico con destinos externos a tu red de VPC de forma que tenga la dirección IP estática que has especificado, debes cambiar el ajuste de salida.
Especifica el ajuste de salida en el archivo
app.yaml
de tu servicio:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: all-traffic
Sustituye:
PROJECT_ID
por el ID de tu proyecto. Google CloudREGION
con la región en la que se encuentra tu conector.CONNECTOR_NAME
con el nombre del conector.
Despliega el servicio:
gcloud app deploy