Los servicios salientes, como las API de recuperación de URL, Sockets y Correo electrónico, usan un gran conjunto de direcciones IP. Los rangos de direcciones IP en este grupo están sujetos a cambios de rutina. De hecho, puede parecer que dos llamadas a la API secuenciales desde la misma aplicación se originan en dos direcciones IP diferentes.
Si necesitas conocer las direcciones IP asociadas con el tráfico saliente de tu servicio, puedes buscar los rangos de direcciones IP actuales de tu servicio o configurar una dirección IP estática para el servicio.
Direcciones IP para servicios de App Engine
Puedes encontrar los rangos de direcciones IP actuales para tus servicios de App Engine en función de la información del rango de IP que Google publica:
Google publica la lista completa de rangos de IP que pone a disposición de los usuarios en Internet, en goog.json.
Google también publica una lista de los rangos de direcciones IP externas internacionales y regionales disponibles para los recursos de Google Cloud del cliente en cloud.json.
Las direcciones IP que usan las APIs y los servicios de Google se ajustan a la lista de rangos calculados si se quitan todos los rangos en cloud.json
de los que están en goog.json
. Estas listas se actualizan con frecuencia.
Puedes usar la siguiente secuencia de comandos de Python para crear una lista de rangos de direcciones IP que incluyan los 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.
Configura una dirección IP saliente estática
A fin de configurar una dirección IP estática para tu servicio de entorno estándar de App Engine, usa el Acceso a VPC sin servidores con Cloud Router y Cloud NAT. Mediante el Acceso a VPC sin servidores, puedes enviar tráfico de salida a la red de nube privada virtual (VPC). Si usas una puerta de enlace 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.
Enrutar el tráfico a través de Cloud NAT no produce un salto adicional en tu pila de herramientas de redes, ya que Cloud Router y la puerta de enlace de Cloud NAT proporcionan solo un plano de control, y los paquetes no pasan por ninguno de ellos.
Las direcciones IP salientes estáticas no se pueden configurar para el tráfico enviado con el servicio de recuperación de URL. El tráfico que se envía mediante el servicio de recuperación de URL seguirá usando el grupo de direcciones IP públicas. Si deseas que todo tu tráfico saliente use una dirección IP estática, deja de usar URLFetchService
.
En los siguientes pasos, se muestra cómo configurar una dirección IP saliente estática para el servicio del entorno estándar de App Engine.
Asegúrate de tener la función roles/compute.networkAdmin o una función personalizada con los mismos permisos.
Crea una subred dentro de tu red de VPC para el tráfico de App Engine. Esto garantiza que otros recursos de la 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, reemplaza los siguientes valores:
SUBNET_NAME
por el nombre que deseas darle a la subredRANGE
por el rango de IP en formato CIDR que deseas asignar a esta subred (p. ej.,10.124.0.0/28
)NETWORK_NAME
por el nombre de la red de VPCREGION
por la región del servicio de App Engine
Conecta tu servicio de App Engine a la subred.
Sigue la guía Conéctate a una red de VPC y especifica el nombre de la subred que creaste en el paso anterior para la subred del conector.
Crea un Cloud Router nuevo. Cloud Router es un componente necesario del plano de control para Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
En el comando anterior, reemplaza los siguientes valores:
ROUTER_NAME
por un nombre para el recurso de Cloud Router que deseas crearNETWORK_NAME
por el nombre de la red de VPCREGION
por la región en la que deseas crear una puerta de enlace 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 retiene la dirección IP subyacente cuando el recurso al que está asociado se borra y se vuelve a crear. Esta dirección IP se considera dentro de las cuotas de direcciones IP estáticas de tu proyecto de Google Cloud.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
En el comando anterior, reemplaza los siguientes valores:
ORIGIN_IP_NAME
por el nombre que deseas asignar al recurso de dirección IPREGION
por la región en la que se ejecutará el router de Cloud NAT. Lo ideal sería que el router esté en la misma región en la que está tu servicio de App Engine para minimizar la latencia y los costos de red.
Usa el comando
compute addresses describe
para ver el resultado:gcloud compute addresses describe ORIGIN_IP_NAME
Crea una puerta de enlace de Cloud NAT y especifica tu dirección IP.
El tráfico que se origina en la subred pasará por esta puerta de enlace y usará la dirección IP estática que reservaste 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, reemplaza los siguientes valores:
NAT_NAME
por un nombre para el recurso de puerta de enlace de Cloud NAT que deseas crearROUTER_NAME
por el nombre de tu Cloud RouterREGION
por la región en la que deseas crear una puerta de enlace NATORIGIN_IP_NAME
por el nombre del recurso de dirección IP reservada que creaste en el paso anterior
Establece el parámetro de configuración de salida del Acceso a VPC sin servidores en
all-traffic
.De forma predeterminada, los servicios de App Engine que usan el Acceso a VPC sin servidores solo envían tráfico interno a tu red de VPC. Para enviar tráfico con destinos externos a tu red de VPC a fin de que tenga la dirección IP estática que especificaste, debes cambiar el parámetro de configuración de salida.
Especifica el parámetro de configuración de salida en el archivo
appengine-web.xml
del servicio:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector>
Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyecto de Google Cloud.REGION
por la región en la que se encuentra el conectorCONNECTOR_NAME
por el nombre de tu conector
Implementa el servicio:
gcloud app deploy WEB-INF/appengine-web.xml