Acceder a las API desde máquinas virtuales con direcciones IP externas

Una instancia de máquina virtual (VM) con una dirección IP externa asignada a su interfaz de red puede conectarse a las APIs y los servicios de Google si cumple los requisitos de red que se describen en esta página. Aunque la conexión se establece desde la dirección IP externa de la VM, el tráfico permanece en Google Cloud y no se envía a través de la red pública de Internet.

Requisitos de red

Para acceder a las APIs y los servicios de Google desde una VM con una dirección IP externa, debes cumplir los siguientes requisitos:

  • Si es necesario, habilita la API de los servicios a los que quieras acceder:

    • Si accedes a un endpoint de servicio de una API de Google, debes habilitar la API de ese servicio.

      Por ejemplo, para crear un segmento de Cloud Storage a través del endpoint del servicio de la API storage.googleapis.com o de una biblioteca de cliente, debes habilitar la API de Cloud Storage.

    • Si accedes a otros tipos de recursos, puede que no tengas que habilitar ninguna API.

      Por ejemplo, para acceder a un segmento de Cloud Storage de otro proyecto a través de su URL storage.googleapis.com , no es necesario habilitar la API Cloud Storage.

  • Si quieres conectarte a las APIs y los servicios de Google mediante IPv6, debes cumplir estos dos requisitos:

  • En función de la configuración que elijas, puede que tengas que actualizar las entradas de DNS, las rutas y las reglas de cortafuegos. Para obtener más información, consulta el resumen de las opciones de configuración.

Resumen de las opciones de configuración

En la siguiente tabla se resumen las diferentes formas de configurar el acceso privado a Google. Para obtener información más detallada sobre la configuración, consulta Configuración de la red.

Opción de dominio Configuración de DNS Configuración de enrutamiento Configuración del cortafuegos
Dominios predeterminados Accedes a las APIs y los servicios de Google a través de sus direcciones IP públicas, por lo que no se requiere ninguna configuración de DNS especial.

Comprueba que tu red VPC pueda enrutar el tráfico a los intervalos de direcciones IP que usan las APIs y los servicios de Google.

  • Configuración básica: confirma que tienes rutas predeterminadas con el siguiente salto default-internet-gateway y un intervalo de destino 0.0.0.0/0 (para el tráfico IPv4) y ::/0 (para el tráfico IPv6, si es necesario). Crea esas rutas si faltan.
  • Configuración personalizada: crea rutas para los intervalos de direcciones IP que usan las APIs y los servicios de Google.

Comprueba que tus reglas de cortafuegos permitan el tráfico saliente a los intervalos de direcciones IP que usan las APIs y los servicios de Google.

La regla de cortafuegos de salida predeterminada permite este tráfico si no hay ninguna regla de mayor prioridad que lo bloquee.

private.googleapis.com

Configura los registros DNS en una zona DNS privada para enviar solicitudes a las siguientes direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.8/30

Para el tráfico IPv6:

  • 2600:2d00:0002:2000::/64

Comprueba que tu red de VPC tenga rutas a los siguientes intervalos de direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Para el tráfico IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42

Asegúrate de que tus reglas de cortafuegos permitan el tráfico saliente a los siguientes intervalos de direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.8/30
  • 34.126.0.0/18

Para el tráfico IPv6:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42
restricted.googleapis.com

Configura los registros DNS para enviar solicitudes a las siguientes direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.4/30

Para el tráfico IPv6:

  • 2600:2d00:0002:1000::/64

Comprueba que tu red de VPC tenga rutas a los siguientes intervalos de direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Para el tráfico IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Asegúrate de que tus reglas de cortafuegos permitan el tráfico saliente a los siguientes intervalos de direcciones IP:

En el caso del tráfico IPv4:

  • 199.36.153.4/30
  • 34.126.0.0/18

Para el tráfico IPv6:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Configuración de red

En esta sección se describen los requisitos de red básicos que debes cumplir para que una VM de tu red VPC pueda acceder a las APIs y los servicios de Google.

Opciones de dominio

Elige el dominio que quieras usar para acceder a las APIs y los servicios de Google.

Las direcciones IP virtuales (VIPs) private.googleapis.com y restricted.googleapis.com solo admiten protocolos basados en HTTP a través de TCP (HTTP, HTTPS y HTTP/2). No se admiten otros protocolos, como MQTT e ICMP. No se admiten sitios web ni funciones interactivas que usen Internet (por ejemplo, para redirecciones o para obtener contenido).

Intervalos de dominios y direcciones IP Servicios admitidos Ejemplo de uso

Dominios predeterminados.

Todos los nombres de dominio de las APIs y los servicios de Google, excepto private.googleapis.com y restricted.googleapis.com.

Varios intervalos de direcciones IP: puedes determinar un conjunto de intervalos de IP que contenga las posibles direcciones que usan los dominios predeterminados. Para ello, consulta Direcciones IP de los dominios predeterminados.

Permite el acceso a la API a la mayoría de las APIs y los servicios de Google, independientemente de si son compatibles con Controles de Servicio de VPC. Incluye acceso a las APIs de Google Maps, Google Ads y Google Cloud. Incluye aplicaciones web de Google Workspace, como Gmail y Documentos de Google, y otras aplicaciones web.

Los dominios predeterminados se utilizan cuando no configuras registros DNS para private.googleapis.com y restricted.googleapis.com.

private.googleapis.com

199.36.153.8/30

2600:2d00:0002:2000::/64

Permite el acceso a la API a la mayoría de las APIs y los servicios de Google, independientemente de si son compatibles con Controles de Servicio de VPC. Incluye acceso a las APIs de Google Maps, Google Ads, Google Cloudy la mayoría de las demás APIs de Google, como las que se indican en la siguiente lista. No es compatible con las aplicaciones web de Google Workspace, como Gmail y Documentos de Google.

Nombres de dominio que coinciden:

  • accounts.google.com (solo admite las rutas necesarias para la autenticación OAuth de cuentas de servicio; la autenticación de cuentas de usuario es interactiva y no se admite)
  • *.aiplatform-notebook.cloud.google.com
  • *.aiplatform-notebook.googleusercontent.com
  • appengine.google.com
  • *.appspot.com
  • *.backupdr.cloud.google.com
  • backupdr.cloud.google.com
  • *.backupdr.googleusercontent.com
  • backupdr.googleusercontent.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.composer.cloud.google.com
  • *.composer.googleusercontent.com
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • *.dataproc.cloud.google.com
  • dataproc.cloud.google.com
  • *.dataproc.googleusercontent.com
  • dataproc.googleusercontent.com
  • dl.google.com
  • gcr.io o *.gcr.io
  • *.googleapis.com
  • *.gke.goog
  • *.gstatic.com
  • *.kernels.googleusercontent.com
  • *.ltsapis.goog
  • *.notebooks.cloud.google.com
  • *.notebooks.googleusercontent.com
  • packages.cloud.google.com
  • pkg.dev o *.pkg.dev
  • pki.goog o *.pki.goog
  • *.run.app
  • source.developers.google.com
  • storage.cloud.google.com

Usa private.googleapis.com para acceder a las APIs y los servicios de Google mediante un conjunto de direcciones IP a las que solo se puede acceder desde Google Cloud.

Elige private.googleapis.com en las siguientes circunstancias:

  • No usas Controles de Servicio de VPC.
  • Usas Controles de Servicio de VPC, pero también necesitas acceder a APIs y servicios de Google que no son compatibles con Controles de Servicio de VPC.1

restricted.googleapis.com

199.36.153.4/30

2600:2d00:0002:1000::/64

Habilita el acceso a las APIs de Google y a los servicios compatibles con Controles de Servicio de VPC.

Bloquea el acceso a las APIs y los servicios de Google que no admiten Controles de Servicio de VPC. No admite APIs de Google Workspace ni aplicaciones web de Google Workspace, como Gmail y Documentos de Google.

Usa restricted.googleapis.com para acceder a las APIs y los servicios de Google mediante un conjunto de direcciones IP a las que solo se puede acceder desde Google Cloud.

Elige restricted.googleapis.com cuando solo necesites acceder a las APIs y los servicios de Google que sean compatibles con Controles de Servicio de VPC.

El dominio restricted.googleapis.com no permite el acceso a las APIs y los servicios de Google que no admiten Controles de Servicio de VPC.1

1 Si necesitas restringir el acceso de los usuarios solo a las APIs y los servicios de Google que admitan Controles de Servicio de VPC, usa restricted.googleapis.com, ya que ofrece medidas adicionales para mitigar el riesgo de filtración externa de datos. Si usas restricted.googleapis.com, se deniega el acceso a las APIs y los servicios de Google que no son compatibles con Controles de Servicio de VPC. Para obtener más información, consulta el artículo sobre configurar la conectividad privada en la documentación de Controles de Servicio de VPC.

Compatibilidad con IPv6 para private.googleapis.com y restricted.googleapis.com

Se pueden usar los siguientes intervalos de direcciones IPv6 para dirigir el tráfico de clientes IPv6 a las APIs y los servicios de Google:

  • private.googleapis.com: 2600:2d00:0002:2000::/64
  • restricted.googleapis.com: 2600:2d00:0002:1000::/64

Configura las direcciones IPv6 si quieres usar el dominio private.googleapis.com o restricted.googleapis.com y tienes clientes que usan direcciones IPv6. Los clientes IPv6 que también tengan configuradas direcciones IPv4 pueden acceder a las APIs y los servicios de Google mediante las direcciones IPv4. No todos los servicios aceptan tráfico de clientes IPv6.

Configuración de DNS

Para conectarte a las APIs y los servicios de Google, puedes enviar paquetes a las direcciones IP asociadas a la VIP de private.googleapis.com o restricted.googleapis.com. Para usar una IP virtual, debes configurar el DNS de forma que las VMs de tu red VPC accedan a los servicios mediante las direcciones de IP virtual en lugar de las direcciones IP públicas.

En las siguientes secciones se describe cómo usar las zonas DNS para enviar paquetes a las direcciones IP asociadas a la IP virtual que elijas. Sigue las instrucciones de todos los casos que se apliquen a tu situación:

Cuando configures los registros DNS de las IPs virtuales, utiliza solo las direcciones IP que se describen en los pasos siguientes. No mezcles direcciones de los VIPs de private.googleapis.com y restricted.googleapis.com. Esto puede provocar fallos intermitentes porque los servicios que se ofrecen varían en función del destino de un paquete.

Configurar DNS para googleapis.com

Crea una zona DNS y registros para googleapis.com:

  1. Crea una zona de DNS privada para googleapis.com. Te recomendamos que crees una zona privada de Cloud DNS para este fin.
  2. En la zona googleapis.com, crea los siguientes registros DNS privados para private.googleapis.com o restricted.googleapis.com, según el dominio que hayas elegido.

    • Para private.googleapis.com:

      1. Crea un registro A para private.googleapis.com que apunte a las siguientes direcciones IP: 199.36.153.8, 199.36.153.9, 199.36.153.10 y 199.36.153.11.

      2. Para conectarte a las APIs mediante direcciones IPv6, también debes configurar un registro AAAA para private.googleapis.com que apunte a 2600:2d00:0002:2000::.

    • Para restricted.googleapis.com:

      1. Crea un registro A para restricted.googleapis.com que apunte a las siguientes direcciones IP: 199.36.153.4, 199.36.153.5, 199.36.153.6 y 199.36.153.7.

      2. Para conectarte a las APIs mediante direcciones IPv6, también debes crear un registro AAAA para restricted.googleapis.com que apunte a 2600:2d00:0002:1000::.

    Para crear registros DNS privados en Cloud DNS, consulta cómo añadir un registro.

  3. En la zona googleapis.com, cree un registro CNAME para *.googleapis.com que apunte al dominio que ha configurado: private.googleapis.com o restricted.googleapis.com.

Configurar el DNS de otros dominios

Algunas APIs y servicios de Google se proporcionan mediante nombres de dominio adicionales, como *.gcr.io, *.gstatic.com, *.pkg.dev, pki.goog, *.run.app y *.gke.goog. Consulta la tabla de intervalos de dominios y direcciones IP de la sección Opciones de dominio para determinar si se puede acceder a los servicios del dominio adicional mediante private.googleapis.com o restricted.googleapis.com. A continuación, sigue estos pasos para cada uno de los dominios adicionales:

  1. Crea una zona de DNS para DOMAIN (por ejemplo, gcr.io). Si usas Cloud DNS, asegúrate de que esta zona se encuentre en el mismo proyecto que tu zona privada googleapis.com.

  2. En esta zona de DNS, crea los siguientes registros DNS privados para private.googleapis.com o restricted.googleapis.com, según el dominio que hayas elegido.

    • Para private.googleapis.com:

      1. Crea un registro A para DOMAIN que apunte a las siguientes direcciones IP: 199.36.153.8, 199.36.153.9, 199.36.153.10 y 199.36.153.11.

      2. Para conectarte a las APIs mediante direcciones IPv6, también debes crear un registro AAAA para DOMAIN que apunte a 2600:2d00:0002:2000::.

    • Para restricted.googleapis.com:

      1. Crea un registro A para DOMAIN que apunte a las siguientes direcciones IP: 199.36.153.4, 199.36.153.5, 199.36.153.6 y 199.36.153.7.

      2. Para conectarte a las APIs mediante direcciones IPv6, también debes crear un registro AAAA para restricted.googleapis.com que apunte a 2600:2d00:0002:1000::.

  3. En la zona DOMAIN, crea un registro CNAME para *.DOMAIN que apunte a DOMAIN. Por ejemplo, crea un registro CNAME para *.gcr.io que apunte a gcr.io.

Configurar el DNS para nombres de dominio personalizados de Cloud Storage

Si usas segmentos de Cloud Storage y envías solicitudes a un nombre de dominio personalizado de Cloud Storage, no basta con configurar los registros DNS del nombre de dominio personalizado de Cloud Storage para que apunten a las direcciones IP de private.googleapis.com o restricted.googleapis.com para permitir el acceso a los segmentos de Cloud Storage.

Si quieres enviar solicitudes a un nombre de dominio personalizado de Cloud Storage, también debes definir explícitamente el encabezado Host de la solicitud HTTP y el SNI de TLS en storage.googleapis.com. Las direcciones IP de private.googleapis.com y restricted.googleapis.com no admiten nombres de host personalizados de Cloud Storage en los encabezados Host de las solicitudes HTTP ni en los SNIs de TLS.

Opciones de enrutamiento

Tu red VPC debe tener rutas adecuadas cuyos siguientes saltos sean la pasarela de Internet predeterminada. Google Cloud no admite el enrutamiento del tráfico a las APIs y los servicios de Google a través de otras instancias de VM o de otros siguientes saltos personalizados. Aunque se denomina pasarela de Internet predeterminada, los paquetes enviados desde las VMs de tu red de VPC a las APIs y los servicios de Google no abandonan la red de Google.

  • Si seleccionas los dominios predeterminados, tus instancias de VM se conectarán a las APIs y los servicios de Google mediante un subconjunto de las direcciones IP externas de Google. Estas direcciones IP se pueden enrutar públicamente, pero la ruta de una VM de una red de VPC a esas direcciones permanece en la red de Google.

  • Google no publica rutas en Internet a ninguna de las direcciones IP que usan los dominios private.googleapis.com o restricted.googleapis.com. Por lo tanto, solo se puede acceder a estos dominios desde VMs de una red de VPC o desde sistemas locales conectados a una red de VPC.

Si tu red VPC contiene una ruta predeterminada cuyo siguiente salto es la pasarela de Internet predeterminada, puedes usar esa ruta para acceder a las APIs y los servicios de Google sin tener que crear rutas personalizadas. Consulta más información sobre el enrutamiento con una ruta predeterminada.

Si has sustituido una ruta predeterminada (destino 0.0.0.0/0 o ::0/0) por una ruta personalizada cuyo siguiente salto no es la pasarela de Internet predeterminada, puedes cumplir los requisitos de enrutamiento de las APIs y los servicios de Google mediante el enrutamiento personalizado.

Si tu red VPC no tiene una ruta predeterminada de IPv6, no tendrás conectividad IPv6 con las APIs y los servicios de Google. Añade una ruta predeterminada de IPv6 para permitir la conectividad IPv6.

Enrutamiento con una ruta predeterminada

Cada red de VPC contiene una ruta predeterminada IPv4 (0.0.0.0/0) cuando se crea. Si habilitas las direcciones IPv6 externas en una subred, se añadirá una ruta predeterminada IPv6 generada por el sistema (::/0) a esa red de VPC.

Las rutas predeterminadas proporcionan una ruta a las direcciones IP de los siguientes destinos:

  • Los dominios predeterminados.

  • private.googleapis.com: 199.36.153.8/30 y 2600:2d00:0002:2000::/64.

  • restricted.googleapis.com: 199.36.153.4/30 y 2600:2d00:0002:1000::/64.

Para comprobar la configuración de una ruta predeterminada en una red determinada, sigue estas instrucciones.

Consola

  1. En la Google Cloud consola, ve a la página Rutas.

    Ir a Rutas

  2. Filtra la lista de rutas para que se muestren solo las de la red que quieras inspeccionar.

  3. Busca una ruta cuyo destino sea 0.0.0.0/0 para el tráfico IPv4 o ::/0 para el tráfico IPv6 y cuyo siguiente salto sea pasarela de Internet predeterminada.

gcloud

Usa el siguiente comando gcloud y sustituye NETWORK_NAME por el nombre de la red que quieras inspeccionar:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Si necesitas crear una ruta IPv4 predeterminada de sustitución, consulta Añadir una ruta estática.

Si necesitas crear una ruta IPv6 predeterminada de sustitución, consulta Añadir una ruta predeterminada IPv6.

Enrutamiento personalizado

Como alternativa a una ruta predeterminada, puedes usar rutas estáticas personalizadas, cada una con un destino más específico y cada una con el siguiente salto de la pasarela de Internet predeterminada. El número de rutas que necesitas y sus direcciones IP de destino dependen del dominio que elijas.

Además, te recomendamos que añadas rutas para 34.126.0.0/18 y 2001:4860:8040::/42. Para obtener más información, consulta el resumen de las opciones de configuración.

Para comprobar la configuración de las rutas personalizadas de las APIs y los servicios de Google en una red determinada, sigue estas instrucciones.

Consola

  1. En la Google Cloud consola, ve a la página Rutas.

    Ir a Rutas

  2. Usa el campo de texto Filtrar tabla para filtrar la lista de rutas según los siguientes criterios. Sustituye NETWORK_NAME por el nombre de tu red de VPC.

    • Red: NETWORK_NAME
    • Tipo del siguiente salto: default internet gateway
  3. Consulte la columna Intervalo de IP de destino de cada ruta. Si has elegido los dominios predeterminados, comprueba que haya varias rutas estáticas personalizadas, una por cada intervalo de direcciones IP que utilice el dominio predeterminado. Si has elegido private.googleapis.com o restricted.googleapis.com, busca el intervalo de direcciones IP de ese dominio.

gcloud

Usa el siguiente comando gcloud y sustituye NETWORK_NAME por el nombre de la red que quieras inspeccionar:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Las rutas se muestran en formato de tabla, a menos que personalices el comando con la marca --format. Consulta la columna DEST_RANGE para ver el destino de cada ruta. Si has elegido los dominios predeterminados, busca varias rutas estáticas personalizadas, una por cada intervalo de direcciones IP que utilice el dominio predeterminado. Si has elegido private.googleapis.com o restricted.googleapis.com, busca el intervalo de direcciones IP de ese dominio.

Si necesitas crear rutas, consulta el artículo Añadir una ruta estática.

Configuración del cortafuegos

La configuración del cortafuegos de tu red VPC debe permitir el acceso de las VMs a las direcciones IP que usan las APIs y los servicios de Google. La regla implícita allow egress cumple este requisito.

En algunas configuraciones de cortafuegos, debes crear reglas de salida específicas. Por ejemplo, supongamos que ha creado una regla de denegación de salida que bloquea el tráfico a todos los destinos (0.0.0.0 para IPv4 o ::/0 para IPv6). En ese caso, debes crear una regla de cortafuegos de salida que permita el acceso y cuya prioridad sea superior a la regla de salida que deniega el acceso para cada intervalo de direcciones IP que utilice el dominio que hayas elegido para las APIs y los servicios de Google.

Además, te recomendamos que incluyas 34.126.0.0/18 y 2001:4860:8040::/42 en tu regla de firewall de salida permitida. Para obtener más información, consulta el Resumen de las opciones de configuración.

Para crear reglas de cortafuegos, consulta Crear reglas de cortafuegos. Puedes limitar las VMs a las que se aplican las reglas de cortafuegos cuando defines el destino de cada regla de salida permitida.

Direcciones IP de dominios predeterminados

En esta sección se describe cómo crear una lista de intervalos de direcciones IP de dominios predeterminados que usan las APIs y los servicios de Google, como *.googleapis.com y *.gcr.io. Estos intervalos se asignan de forma dinámica y cambian con frecuencia, por lo que no es posible definir intervalos de IP específicos para servicios o APIs concretos. Para mantener una lista precisa, configura la automatización para que ejecute la secuencia de comandos todos los días. Como alternativa a mantener una lista de intervalos de direcciones IP, puedes usar la IP virtual private.googleapis.com o Private Service Connect.

  • 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 los dominios predeterminados de 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 los dominios predeterminados de las APIs y los servicios de Google.

Para obtener información sobre cómo ejecutar esta secuencia de comandos, consulta Cómo ejecutar.

from __future__ import print_function

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen
    from urllib.error import HTTPError

import netaddr

IPRANGE_URLS = {
    "goog": "https://www.gstatic.com/ipranges/goog.json",
    "cloud": "https://www.gstatic.com/ipranges/cloud.json",
}


def read_url(url):
    try:
        return json.loads(urlopen(url).read())
    except (IOError, HTTPError):
        print("ERROR: Invalid HTTP response from %s" % url)
    except json.decoder.JSONDecodeError:
        print("ERROR: Could not parse HTTP response from %s" % url)


def get_data(link):
    data = read_url(link)
    if data:
        print("{} published: {}".format(link, data.get("creationTime")))
        cidrs = netaddr.IPSet()
        for e in data["prefixes"]:
            if "ipv4Prefix" in e:
                cidrs.add(e.get("ipv4Prefix"))
            if "ipv6Prefix" in e:
                cidrs.add(e.get("ipv6Prefix"))
        return cidrs


def main():
    cidrs = {group: get_data(link) for group, link in IPRANGE_URLS.items()}
    if len(cidrs) != 2:
        raise ValueError("ERROR: Could process data from Google")
    print("IP ranges for Google APIs and services default domains:")
    for ip in (cidrs["goog"] - cidrs["cloud"]).iter_cidrs():
        print(ip)


if __name__ == "__main__":
    main()