Configurar acceso privado a servicios

El acceso a servicios privados es una conexión privada entre tu red de VPC y una red propiedad de Google o de un tercero. Google o los terceros que ofrecen servicios también se conocen como productores de servicios. La conexión privada permite que las instancias de VM de tu red de VPC y los servicios a los que accedas se comuniquen exclusivamente mediante direcciones IP internas. Las instancias de VM no necesitan acceso a Internet ni direcciones IP externas para acceder a los servicios que están disponibles a través del acceso a servicios privados.

Para obtener más información sobre el acceso a servicios privados y otras opciones de acceso privado, consulta el artículo Opciones de acceso privado a servicios.

A grandes rasgos, para usar el acceso a servicios privados, debes asignar un intervalo de direcciones IP (bloque CIDR) en tu red de VPC y, a continuación, crear una conexión privada con un productor de servicios.

Antes de empezar

Para establecer una conexión privada, debes cumplir los siguientes requisitos previos:

  • Comprueba que el servicio que estás usando admita el acceso de servicios privados.
  • Crea un Google Cloud proyecto o elige uno que ya tengas. Para saber cómo crear un Google Cloud proyecto, consulta el artículo Crear y gestionar proyectos.
  • Activa la API Service Networking en tu proyecto. La API es necesaria para crear una conexión privada.
  • Crea o elige una red de VPC que vayas a usar para conectarte a la red del productor de servicios. Las instancias de VM deben usar esta red de VPC para conectarse a los servicios a través de una conexión privada.
  • Instala la CLI de gcloud si quieres ejecutar los ejemplos de línea de comandos gcloud de esta guía.

Permisos

Los propietarios del proyecto y los miembros de gestión de identidades y accesos que tengan el rol Administrador de red de Compute (roles/compute.networkAdmin) pueden crear intervalos de direcciones IP asignadas y gestionar conexiones privadas.

Para obtener más información sobre los roles, consulta la documentación sobre roles de gestión de identidades y accesos de VPC.

Situación de VPC compartida

Si utilizas la VPC compartida, crea el intervalo de IP asignado y la conexión privada en el proyecto host. Normalmente, un administrador de red del proyecto host debe realizar estas tareas. Una vez configurado el proyecto host, las instancias de VM de los proyectos de servicio pueden usar la conexión privada.

Cuotas y límites

Como una conexión privada se implementa como una conexión de emparejamiento entre VPCs, se aplican las mismas cuotas y límites que se aplican al emparejamiento entre redes VPCs.

Intervalos de direcciones IP asignados para los servicios

Antes de crear una conexión privada, debes asignar un intervalo de direcciones IPv4 para que lo use la red de VPC del productor de servicios. De esta forma, se asegura de que no haya colisiones de direcciones IP entre su red de VPC y la red del productor de servicios. Crea un intervalo asignado para cada productor de servicios.

Cuando asignas un intervalo en tu red de VPC, ese intervalo no se puede usar para subredes (intervalos principales y secundarios) ni para destinos de rutas estáticas personalizadas.

No se admite el uso de intervalos de direcciones IPv6 con el acceso a servicios privados.

Tamaño del intervalo de direcciones IP

Intervalos de acceso privado a servicios.
Intervalos de acceso a servicios privados (haz clic en la imagen para ampliarla).

Cuando un productor de servicios crea una subred en su lado de la conexión, se selecciona un intervalo abierto de la asignación para el intervalo de direcciones IP de la subred.

Cada productor de servicios exige un tamaño mínimo de intervalo de direcciones IP. En el caso de Google, el tamaño mínimo es un bloque /24 (256 direcciones), pero el tamaño recomendado es un bloque /16 (65.536 direcciones).

El tamaño que elijas dependerá de varios factores, como los siguientes:

  • El número de servicios y regiones que usas.
  • Los requisitos de los servicios que utilices.
    • Tamaño mínimo del intervalo de direcciones IP de los servicios.
    • Si el proveedor de servicios requiere intervalos de IP independientes para cada instancia del servicio que crees o si puede usar el mismo intervalo de IP para varias instancias del servicio.

Si no tienes un bloque /16 contiguo, puedes empezar con una asignación más pequeña y añadir nuevas si necesitas más direcciones IP más adelante.

Acerca de la subred del productor de servicios

Cuando estableces una conexión privada y creas un recurso con una dirección IP privada, el servicio crea una subred en la que aprovisionar el recurso. El servicio selecciona un intervalo de direcciones IP disponible del intervalo asignado. No puedes seleccionar ni modificar el intervalo de direcciones IP de la subred del productor de servicios. El servicio solo elimina la subred cuando se eliminan todos los recursos de la subred.

A medida que aprovisionas recursos adicionales, el servicio los aprovisiona en las subredes regionales que ya ha creado. Si una subred está llena, el servicio crea una nueva en esa región.

Cuestiones importantes

Antes de asignar un intervalo de direcciones IP, ten en cuenta lo siguiente:

  • Selecciona un intervalo asignado que esté completamente separado de los intervalos de subred actuales y futuros, incluidos los intervalos de subred de las redes conectadas mediante el emparejamiento de redes de VPC y los intervalos de subred de los radios de VPC conectados al mismo hub de Network Connectivity Center.
  • Seleccione un intervalo que no coincida exactamente con los destinos de ninguna ruta estática o dinámica personalizada, ni los contenga.

    Cuando un productor de servicios selecciona una parte sin usar de un intervalo asignado para usarla como candidata para nuevos recursos, excluye todos los destinos de ruta personalizados que coincidan exactamente con el intervalo asignado o que se incluyan en él. Cuando una red VPC contiene un intervalo asignado y rutas personalizadas con destinos que coinciden con el intervalo asignado o se ajustan a él, se reduce la parte utilizable del intervalo asignado. Esta configuración puede provocar errores inesperados de asignación agotada.

    Por ejemplo, si crea un intervalo asignado para 10.0.0.0/16, se aplicará lo siguiente:

    • Si existe una ruta personalizada con un destino para 10.0.0.0/16 o se crea más adelante, se considera que todo el intervalo de 10.0.0.0/16 no está disponible. Si un productor de servicios intenta usar el intervalo asignado,Google Cloud devuelve un error de asignación agotada.

    • Si existe o se crea más adelante una ruta personalizada con el destino 10.0.0.0/20, la parte 10.0.0.0/20 del intervalo 10.0.0.0/16 asignado se considera no disponible. Si un creador de servicios intenta usar el intervalo asignado y la parte disponible de tu intervalo asignado no es suficiente para un creador de servicios, Google Cloud devuelve un error de asignación agotada.

    • Si existe o se crea más adelante una ruta personalizada con un destino para 10.0.0.0/8, esto no afectará a la disponibilidad del intervalo asignado 10.0.0.0/16.

  • Selecciona un intervalo que no entre en conflicto con tus otras necesidades de direcciones IP:

    • Algunos productos de Google y de terceros usan 172.17.0.0/16 para enrutar dentro del sistema operativo invitado. Por ejemplo, la red de puente de Docker predeterminada usa este intervalo. Si dependes de un producto que usa 172.17.0.0/16, no utilices 172.17.0.0/16 en un intervalo asignado para acceder a servicios privados.
    • Si usas una red de VPC en modo automático, no puedes crear un intervalo asignado que coincida con 10.128.0.0/9 o se superponga a él. Google usa el intervalo 10.128.0.0/9 para las subredes creadas automáticamente, incluidas las de regiones futuras.
  • Selecciona un bloque CIDR que sea lo suficientemente grande como para satisfacer tus necesidades actuales y futuras. Si más adelante detecta que el intervalo no tiene el tamaño suficiente, amplíelo si es posible. Aunque puedes asignar varias asignaciones a un solo productor de servicios, Google aplica una cuota al número de intervalos de direcciones IP que puedes asignar, pero no al tamaño (máscara de red) de cada intervalo.

  • Si añades un intervalo asignado adicional a una conexión privada, se amplía el intervalo de direcciones IP disponibles para el productor de servicios al crear nuevos recursos de servicio para cualquier servicio que proporcione. No puedes reservar un intervalo asignado específico en una conexión privada para que lo use un servicio concreto.

  • No reutilice el mismo intervalo asignado para varios productores de servicios. Aunque es posible, hacerlo puede provocar que se solapen las direcciones IP. Cada productor de servicios solo tiene visibilidad de su red y no puede saber qué direcciones IP utilizan otros productores de servicios.

  • Solo puedes asignar un bloque CIDR a un intervalo asignado cuando creas la asignación. Si necesitas ampliar el intervalo de direcciones IP, no puedes añadir más bloques a una asignación. En su lugar, puede crear otra asignación o volver a crear la que ya tiene usando un bloque más grande que incluya los intervalos nuevos y los que ya tenía.

  • Si creas la asignación tú mismo en lugar de dejar que lo haga Google (por ejemplo, a través de Cloud SQL), puedes usar la misma convención de nomenclatura para indicar a otros usuarios o servicios de Google que ya existe una asignación para Google. Cuando un servicio de Google asigna un intervalo en tu nombre, el servicio usa el siguiente formato para nombrar la asignación: google-managed-services-[your network name]. Si existe esta asignación, los servicios de Google usarán la que ya esté disponible en lugar de crear otra.

  • Como una conexión privada se implementa como una conexión de emparejamiento entre redes de VPC, los comportamientos y las restricciones de las conexiones de emparejamiento también se aplican a las conexiones privadas, como los límites de emparejamiento entre redes de VPC.

  • Si tienes previsto cambiar la dirección IP interna de una instancia de servicio que ya tengas y que use una VPC, ten en cuenta si esta acción puede provocar interrupciones, por ejemplo, si requiere eliminar y volver a crear la instancia de servicio. Para obtener más información, consulta la documentación del servicio gestionado asociado. Por ejemplo, si usas Cloud SQL, consulta Cambiar la dirección IP privada de una instancia de Cloud SQL.

Crear una asignación de IP

En los siguientes pasos se describe cómo crear un intervalo de direcciones IP asignado.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que se conectará a un productor de servicios.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso a servicios privados, seleccione la pestaña Intervalos de IP asignados a servicios.

  5. Haz clic en Asignar intervalo de IPs.

  6. Escriba un Nombre y una Descripción para el intervalo asignado.

  7. Especifica un intervalo de direcciones IP para la asignación:

    • Para especificar un intervalo de direcciones IP, selecciona Personalizado y, a continuación, introduce un bloque CIDR, como 192.168.0.0/16.
    • Para especificar la longitud del prefijo y dejar que Google seleccione un intervalo disponible, selecciona Automático y, a continuación, introduce la longitud del prefijo, como 16.
  8. Haga clic en Asignar para crear el intervalo asignado.

gcloud

Para crear un intervalo asignado en tu red VPC, usa el comando addresses create.

  • Para especificar un intervalo de direcciones y una longitud de prefijo (máscara de subred), usa las marcas addresses y prefix-length. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/16, especifica 192.168.0.0 para la dirección y 16 para la longitud del prefijo.

    gcloud compute addresses create RESERVED_RANGE_NAME \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --description="DESCRIPTION" \
        --network=VPC_NETWORK
    
  • Para especificar solo la longitud del prefijo (máscara de subred), usa la marca prefix-length. Si omites el intervalo de direcciones, Google Cloud se seleccionará automáticamente un intervalo de direcciones sin usar en tu red de VPC. En el siguiente ejemplo se selecciona un intervalo de direcciones IP sin usar con una longitud de prefijo de 16 bits.

    gcloud compute addresses create RESERVED_RANGE_NAME \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description="DESCRIPTION" \
        --network=VPC_NETWORK
    

Haz los cambios siguientes:

  • RESERVED_RANGE_NAME: un nombre para el intervalo asignado, como my-allocated-range.

  • DESCRIPTION: una descripción del intervalo, como allocated for my-service.

  • VPC_NETWORK: el nombre de tu red de VPC, como my-vpc-network.

En el siguiente ejemplo, se crea una conexión privada a Google para que las instancias de VM de la red de VPC my-network puedan usar el acceso a servicios privados para acceder a los servicios de Google que lo admitan.

gcloud compute addresses create google-managed-services-my-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=my-network

Terraform

Para crear un intervalo asignado en tu red VPC, usa el recurso google_compute_global_address.

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Si ves un error sobre el permiso compute.globalAddresses.list del proyecto, consulta Permisos de la cuenta de servicio.

Lista de intervalos de direcciones IP asignados

Para ver una lista de los intervalos de direcciones IP asignados, usa el comando addresses list.

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Crear conexión privada

Después de crear un intervalo asignado, puedes crear una conexión privada con un productor de servicios. La conexión privada establece una conexión de emparejamiento entre redes VPC entre tu red de VPC y la red del productor de servicios.

Las conexiones privadas son relaciones individuales entre tu red de VPC y un productor de servicios. Si un solo productor de servicios ofrece varios servicios, solo necesitas una conexión privada para todos los servicios del productor.

Si un único productor de servicios ofrece varios servicios y quieres controlar qué intervalos asignados se usan para los diferentes recursos de servicio, puedes usar varias redes de VPC, cada una con sus propias conexiones privadas. Esta configuración le permite seleccionar una red concreta al crear un recurso de servicio gestionado para asegurarse de que los intervalos asignados asociados se utilicen en el nuevo recurso.

Si te conectas a varios productores de servicios, usa una asignación única para cada uno. Esta práctica te ayuda a gestionar la configuración de tu red, como las rutas y las reglas de cortafuegos, de cada productor de servicios.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que se conectará a un productor de servicios.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso privado a servicios, seleccione la pestaña Conexiones privadas a servicios.

  5. Haz clic en Crear conexión para crear una conexión privada entre tu red y un productor de servicios.

  6. En Asignación realizada, selecciona uno o varios rangos asignados que no estén usando otros productores de servicios.

  7. Haz clic en Conectar para crear la conexión.

gcloud

  1. Usa el comando vpc-peerings connect.

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=RESERVED_RANGE_NAME \
        --network=VPC_NETWORK
    

    Haz los cambios siguientes:

    • RESERVED_RANGE_NAME: el nombre de uno o varios intervalos asignados.

    • VPC_NETWORK: el nombre de tu red de VPC.

    El comando inicia una operación de larga duración y devuelve un nombre de operación.

  2. Para comprobar si la operación se ha realizado correctamente, usa el comando vpc-peerings operations describe.

    gcloud services vpc-peerings operations describe \
        --name=OPERATION_NAME
    

    Sustituye OPERATION_NAME por el nombre de la operación que se devolvió en el paso anterior.

Puedes especificar más de un intervalo asignado al crear una conexión privada. Por ejemplo, si se ha agotado un intervalo, puedes asignar intervalos adicionales. El servicio usará las direcciones IP de todos los intervalos proporcionados en el orden que hayas especificado.

Terraform

Para crear una conexión privada, usa el recurso google_service_networking_connection.

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

Mostrar conexiones privadas

Después de crear una conexión privada, puedes mostrarla para comprobar que existe. La lista también muestra los intervalos asignados que están asociados a cada conexión. Por ejemplo, si no recuerdas qué intervalo asignaste a una conexión, consulta la lista para averiguarlo.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que contiene las conexiones.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso privado a servicios, selecciona la pestaña Conexiones privadas a servicios para ver todas las conexiones privadas de la red.

gcloud

Usa el comando vpc-peerings list.

gcloud services vpc-peerings list \
    --network=VPC_NETWORK

Sustituye VPC_NETWORK por el nombre de tu red VPC.

Modificar una conexión privada

En el caso de las conexiones privadas, puedes añadir o quitar intervalos de direcciones IP asignadas sin interrumpir el tráfico. Por ejemplo, a medida que aumente la escala, puede añadir un intervalo asignado si está a punto de agotar el intervalo actual.

Cuando quitas un intervalo de una conexión privada, ocurre lo siguiente:

  • El intervalo asignado ya no está asociado a la conexión privada, pero no se elimina.

  • Es posible que los recursos de productores de servicios sigan usando el intervalo eliminado.

  • El acceso a servicios privados no usa los intervalos eliminados para asignar nuevas subredes.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que contiene las conexiones.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso privado a servicios, selecciona la pestaña Conexiones privadas a servicios para ver todas las conexiones privadas de la red.

  5. Haga clic en el nombre de una conexión de la lista.

  6. En la lista Asignación asignada, selecciona los intervalos asignados que quieras asociar a la conexión privada. Desmarque las casillas de los intervalos asignados que quiera quitar de la conexión privada.

  7. Haz clic en Aceptar.

gcloud

Para añadir o quitar intervalos de direcciones IP asignadas a una conexión privada, usa el comando vpc-peerings update.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=RESERVED_RANGE_NAME \
    --network=VPC_NETWORK \
    [--force]

Haz los cambios siguientes:

  • RESERVED_RANGE_NAME: una lista con uno o varios nombres de intervalos asignados que se asignarán a la conexión privada.

    RESERVED_RANGE_NAME sustituye a la lista anterior de intervalos asignados. Si omites un intervalo que se había asociado previamente a esta conexión privada, se quitará de la conexión. Debes usar la opción --force para quitar un intervalo.

  • VPC_NETWORK: el nombre de tu red de VPC.

Eliminar un intervalo de direcciones IP asignado

Antes de eliminar un intervalo de direcciones IP asignado, comprueba si una conexión privada está usando el intervalo.

Si el intervalo de direcciones IP asignado está en uso, primero modifica la conexión privada para quitar el intervalo. A continuación, elimina el intervalo de direcciones IP asignado.

Si eliminas una dirección IP asignada que está en uso y no modificas la conexión privada, se aplicará lo siguiente:

  • Las conexiones actuales seguirán activas, pero no hay nada que impida que tu red de VPC use direcciones IP que se solapen con la red del productor de servicios.

  • Si eliminas el único intervalo de direcciones IP asignado que está asociado a una conexión privada, el servicio no podrá crear subredes porque no habrá ningún intervalo de direcciones IP asignado entre los que elegir.

  • Si más adelante creas un intervalo de direcciones IP asignado que coincide o se superpone con el intervalo eliminado, no podrás añadirlo a una conexión privada.

Para evitar estos problemas, modifica siempre tus conexiones privadas cuando elimines un intervalo de direcciones IP asignado que esté en uso.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que contiene las asignaciones que quieres eliminar.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso a servicios privados, seleccione la pestaña Intervalos de IP asignados a servicios.

  5. Selecciona la asignación que quieras eliminar.

  6. Haz clic en Liberar para devolver el intervalo de direcciones IP asignado al grupo de direcciones IP internas disponibles de la red.

    Si el intervalo de direcciones IP asignado sigue asignado a una conexión, debes introducir una confirmación adicional para poder liberar la asignación.

  7. Vuelve a hacer clic en Lanzar para confirmar la eliminación.

gcloud

Elimina la asignación especificando su nombre.

gcloud compute addresses delete NAME \
    --global

Sustituye NAME por el nombre del intervalo asignado que quieras eliminar.

Eliminar una conexión privada

Para eliminar una conexión privada, sigue el procedimiento que se describe en esta sección. No intentes eliminar una conexión privada eliminando directamente su conexión de intercambio de tráfico entre redes de VPC asociada.

Antes de eliminar una conexión privada, debes eliminar todas las instancias de servicio a las que accedas a través de la conexión. Por ejemplo, si quieres eliminar una conexión privada que se usa para acceder a Cloud SQL, primero debes eliminar las instancias de Cloud SQL que usen esa conexión. Después de eliminar las instancias de servicio, se eliminan los recursos del productor del servicio, pero es posible que esta eliminación no se produzca inmediatamente. Algunos productores de servicios retrasan la eliminación hasta que haya transcurrido un periodo de espera. No puedes eliminar la conexión privada durante el periodo de espera. Debes esperar a que se hayan eliminado los recursos del productor del servicio para poder eliminar la conexión.

Por ejemplo, si eliminas una instancia de Cloud SQL, recibes una respuesta correcta, pero el servicio espera cuatro días antes de eliminar los recursos del productor del servicio. El periodo de espera significa que, si cambias de opinión sobre la eliminación del servicio, puedes solicitar que se restauren los recursos. Si intentas eliminar la conexión durante el periodo de espera, la eliminación fallará y se mostrará un mensaje que indica que el productor de servicios sigue usando los recursos.

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Selecciona la red de VPC que contiene las conexiones que quieres eliminar.

  3. Seleccione la pestaña Acceso a servicios privados.

  4. En la pestaña Acceso privado a servicios, seleccione la pestaña Conexión privada a servicios.

  5. Selecciona la conexión privada que quieras eliminar.

  6. Haz clic en Eliminar para eliminarlo.

  7. Vuelve a hacer clic en Eliminar para confirmar la acción.

gcloud

Para eliminar una conexión de emparejamiento entre redes de VPC de una conexión privada, usa el comando vpc-peerings delete.

gcloud services vpc-peerings delete \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK

Sustituye VPC_NETWORK por el nombre de tu red VPC.

Compartir zonas de DNS privadas con productores de servicios

Las zonas privadas de Cloud DNS son privadas para tu red de VPC. Si quieres que una red de productor de servicios resuelva nombres de tu zona privada, puedes configurar el peering de DNS entre las dos redes.

Cuando configuras el emparejamiento de DNS, proporcionas una red de VPC y un sufijo de DNS. Si el productor del servicio necesita resolver una dirección con ese sufijo de DNS, reenvía esas consultas a tu red de VPC para que se resuelvan.

Estos servicios admitidos admiten el peering de DNS, excepto Cloud SQL.

Si quieres habilitar el emparejamiento de DNS, debes habilitar la API Cloud DNS en tu proyecto.

Emparejar DNS con un productor de servicios

gcloud

Para configurar el emparejamiento de DNS entre tu red de VPC y la red del proveedor de servicios, usa el comando peered-dns-domains create.

gcloud services peered-dns-domains create PEERING_NAME \
    --network=VPC_NETWORK \
    --dns-suffix=DNS_SUFFIX

Haz los cambios siguientes:

  • PEERING_NAME: nombre de esta configuración de emparejamiento de DNS.

  • VPC_NETWORK: el nombre de tu red de VPC que está conectada al productor de servicios mediante el acceso a servicios privados.

  • DNS_SUFFIX: el sufijo DNS con el que quieres emparejarte con el productor del servicio. Debes proporcionar un nombre de dominio DNS completo, incluido el punto. Por ejemplo, example.com. es un sufijo DNS válido.

Terraform

Para configurar el emparejamiento de DNS entre tu red de VPC y la red del proveedor de servicios, usa el recurso google_service_networking_peered_dns_domain.


## Uncomment this block after adding a valid DNS suffix

# resource "google_service_networking_peered_dns_domain" "default" {
#   name       = "example-com"
#   network    = google_compute_network.peering_network.name
#   dns_suffix = "example.com."
#   service    = "servicenetworking.googleapis.com"
# }

Mostrar configuraciones de emparejamiento de DNS

gcloud

Usa el comando peered-dns-domains list.

gcloud services peered-dns-domains list \
    --network=VPC_NETWORK

Sustituye VPC_NETWORK por el nombre de tu red de VPC.

Eliminar una configuración de intercambio de tráfico de DNS

gcloud

Usa el comando peered-dns-domains delete.

gcloud services peered-dns-domains delete PEERING_NAME \
    --network=VPC_NETWORK

Haz los cambios siguientes:

  • PEERING_NAME: el nombre de la configuración de emparejamiento de DNS.

  • VPC_NETWORK: el nombre de tu red de VPC.

Solución de problemas

¿Cuánto espacio de mi asignación se está usando?

Cuando creas una conexión privada con un productor de servicios, le asignas un intervalo de direcciones IP para que lo use. Si utilizas varios servicios de un productor de servicios, cada servicio reservará un bloque de direcciones IP del intervalo asignado. Puedes comprobar qué servicios están usando qué direcciones IP para, por ejemplo, ver qué servicios están usando grandes bloques de direcciones IP y evitar que se agoten.

Para ver la proporción de asignación de los intervalos asignados, usa Analizador de redes. Para obtener más información, consulta el resumen de utilización de direcciones IP de acceso a servicios privados.

También puedes ver qué servicio está usando un intervalo de direcciones IP concreto:

  1. Lista tus conexiones privadas.
  2. Busca el nombre de la conexión de emparejamiento que te conecta con el productor de servicios correspondiente.
  3. Lista las rutas de tu red de VPC.
  4. Busca las rutas con un siguiente salto que coincida con el nombre de la conexión de peering. El intervalo de destino de las rutas indica qué direcciones IP usa cada servicio.

Agotamiento del intervalo de direcciones IP

En una conexión privada determinada, si agotas el espacio de direcciones IP asignado, Google Cloud devolverá este error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges.

Es posible que veas este error porque el intervalo asignado no es suficiente para tu uso o porque una ruta estática o dinámica personalizada impide que se utilice por completo el intervalo asignado. Para obtener más información sobre las consideraciones de enrutamiento, consulta Consideraciones.

Puede ampliar la asignación que ya tenga o añadir otras nuevas. La asignación ampliada debe ser un intervalo de direcciones IP contiguo que incluya el intervalo actual. Te recomendamos que amplíes una asignación, ya que no hay límite en el tamaño de una asignación, pero sí en el número de asignaciones que puedes crear.

Para ampliar una asignación, sigue estos pasos:

  1. Enumera tus conexiones privadas y anota el nombre del intervalo asignado que quieras ampliar.
  2. Elimina el intervalo asignado.
  3. Crea un nuevo intervalo asignado con el mismo nombre que el intervalo eliminado. Especifica un intervalo de direcciones IP que incluya el intervalo de direcciones IP eliminado. De esta forma, los recursos emparejados que usen el intervalo asignado antiguo podrán seguir usando las mismas direcciones IP sin entrar en conflicto con los recursos de tu red de VPC. Por ejemplo, si el intervalo asignado anterior era 192.168.0.0/20, crea un nuevo intervalo asignado como 192.168.0.0/16.

Para añadir intervalos asignados a una conexión privada ya creada, sigue estos pasos:

  1. Cree un intervalo asignado. Este intervalo no tiene por qué ser contiguo a los intervalos asignados.
  2. Añada el intervalo asignado a la conexión privada.

Los hosts locales no pueden comunicarse con la red del productor del servicio

Es posible que la red del productor del servicio no tenga las rutas correctas para dirigir el tráfico a tu red local. De forma predeterminada, la red del productor de servicios solo aprende las rutas de subred de tu red de VPC. Por lo tanto, el productor del servicio rechaza cualquier solicitud que no proceda de un intervalo de IPs de subred.

Para configurar la conectividad entre tus hosts on-premise y la red del productor de servicios, haz lo siguiente:

  • En tu red de VPC, actualiza la conexión de emparejamiento para exportar rutas personalizadas a la red del productor de servicios. Al exportar rutas, se envían todas las rutas estáticas y dinámicas aptas que se encuentren en tu red de VPC, como las rutas a tu red local, a la red del productor de servicios. La red del productor de servicios los importa automáticamente y, a continuación, puede enviar tráfico de vuelta a tu red local a través de la red de VPC.

  • Asegúrate de que los prefijos que incluyen los intervalos de IP asignados para el acceso a servicios privados se anuncian correctamente en tu red local. Para saber cómo puedes anunciar prefijos IPv4 personalizados con Cloud Router, consulta Rutas anunciadas.

  • Comprueba que la conexión VLAN o el túnel de Cloud VPN finalice en la misma red de VPC (o red de VPC compartida) que la conexión privada, ya que el emparejamiento de redes de VPC no proporciona enrutamiento transitivo.

Permisos de cuenta de servicio

Si aparece un error sobre el permiso compute.globalAddresses.list de un proyecto al crear una asignación de IP o si se producen errores como Error 400: Precondition check failed al crear, enumerar o modificar conexiones privadas, puede que haya un problema con los roles de gestión de identidades y accesos (IAM) de la cuenta de servicio de tu API Service Networking. Esta cuenta de servicio se crea automáticamente después de habilitar la API Service Networking. La cuenta puede tardar en aprovisionarse y mostrarse en la página IAM.

Consola

Para asegurarte de que la cuenta de servicio tiene el rol de gestión de identidades y accesos correcto, sigue estos pasos:

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a IAM

  2. Selecciona la casilla Incluir concesiones de roles proporcionadas por Google.

  3. En la columna Nombre, busque la principal Agente de servicio de Service Networking y, a continuación, haga clic en Editar principal en la fila correspondiente.

  4. En el campo Rol, comprueba que esté presente el rol Agente de servicio de Service Networking (roles/servicenetworking.serviceAgent).

  5. Si el rol Agente de servicio de Service Networking no está presente, haz clic en Añadir rol o en Añadir otro rol.

  6. Haz clic en Seleccionar un rol.

  7. En el cuadro de texto Filter (Filtro), escribe Service Networking Service Agent.

  8. Selecciona Service Networking Service Agent (Agente de servicio de Service Networking) en la lista y, a continuación, haz clic en Guardar.

gcloud

Para crear una cuenta de servicio de la API Service Networking, usa el comando add-iam-policy-binding.

gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \
    --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \
    --role=roles/servicenetworking.serviceAgent

Haz los cambios siguientes:

  • HOST_PROJECT_NAME: el nombre del proyecto host.
  • HOST_PROJECT_NUMBER: número del proyecto anfitrión.

La ruta de subred de emparejamiento persiste después de actualizar la asignación de IP

Después de actualizar el intervalo de direcciones IP asignado de una conexión de servicios privados, es posible que la ruta de subred de emparejamiento antigua siga apareciendo en la tabla de enrutamiento de tu red de VPC. La ruta persiste porque el intervalo de direcciones IP sigue en uso.

Para solucionar este problema, sigue estos pasos:

La ruta de subred de emparejamiento se elimina automáticamente cuando el intervalo de direcciones IP deja de usarse. Puede haber un retraso entre el momento en que se elimina el recurso y el momento en que el productor de servicios lo elimina por completo. Por ejemplo, si una instancia de Cloud SQL usa el intervalo de direcciones IP antiguo, el productor del servicio puede tardar hasta cuatro días en eliminar por completo la instancia. La ruta de la subred de emparejamiento se elimina una vez que se ha completado la eliminación.

No se puede crear una conexión privada

Si intentas crear una conexión privada después de eliminar la conexión de emparejamiento entre redes VPC asociada a una conexión privada anterior,es posible que Google Clouddevuelva un error. Para obtener información sobre cómo solucionar problemas, consulta los siguientes mensajes de error.

Para evitar que esto ocurra, sigue el procedimiento para eliminar una conexión privada en lugar de eliminar directamente la conexión de emparejamiento de redes de VPC asociada.

  • Error al modificar los intervalos asignados:

    ERROR: Cannot modify allocated ranges in CreateConnection. Please use UpdateConnection. Existing allocated IP ranges: ALLOCATED_RANGE_NAMES.

    Si aparece este error, haz lo siguiente:

    1. Vuelve a crear la conexión privada que has eliminado y usa los nombres de intervalo asignados que devuelve el error. Debes usar los mismos nombres de intervalo asignados al volver a crear la conexión, pero los intervalos de direcciones IP correspondientes (bloques CIDR) pueden ser iguales o diferentes.

      Para crear la conexión privada, consulta Crear una conexión privada.

    2. Si es necesario, modifica la conexión privada para añadir o quitar intervalos asignados. Puede que quieras usar intervalos asignados diferentes de los que especificaste al volver a crear la conexión privada en el paso anterior.

      Para modificar la conexión privada, consulta Modificar una conexión privada.

  • Error interno transitorio:

    ERROR: (gcloud.services.vpc-peerings.connect) The operation "operations/OPERATION_ID"
    resulted in a failure "encountered some transient internal error, please try again later"

    Si ves este error, ponte en contacto con el equipo de Asistencia de Cloud.