Configura el acceso privado a los servicios
El acceso privado a los servicios es una conexión privada entre tu red de VPC y una red de Google o terceros. Las entidades que ofrecen servicios, como Google o terceros, también se conocen como productores de servicios. La conexión privada permite que las instancias de VM en la red de VPC y los servicios a los que accedes se comuniquen de forma exclusiva mediante direcciones IP internas. Las instancias de VM no necesitan acceso a Internet o direcciones IP externas para alcanzar los servicios que están disponibles a través del acceso privado a los servicios.
Para obtener más información sobre el acceso privado a los servicios y otras opciones de acceso privado, consulta Opciones de acceso privado a los servicios.
En un nivel alto, para usar el acceso privado a los servicios, debes asignar un rango de direcciones IP (bloque CIDR) en tu red de VPC y, luego, crear una conexión privada con un productor de servicios.
Antes de comenzar
Para establecer una conexión privada, completa los siguientes requisitos previos:
- Verifica que el servicio que usas admita el acceso privado a los servicios.
- Debes tener una red de VPC existente que usarás para conectarte a la red del productor de servicios. Las instancias de VM deben usar esta red de VPC para conectarse a los servicios mediante una conexión privada.
- Activa la API de Herramientas de redes de servicios en el proyecto. La API es necesaria para crear una conexión privada.
- Crea un proyecto de Google Cloud o usa uno existente. Para obtener información sobre cómo crear un proyecto de Cloud, consulta Crea y administra proyectos.
- Instala la CLI de gcloud si deseas ejecutar los ejemplos de la línea de comandos de
gcloud
de esta guía.
Permisos
Los propietarios del proyecto y los miembros de IAM que tengan la función de administrador de red de Compute (roles/compute.networkAdmin
) pueden crear rangos de direcciones IP asignados y administrar conexiones privadas.
Para obtener más información sobre las funciones, consulta la documentación de funciones de IAM de VPC.
Situación de VPC compartida
Si usas una VPC compartida, crea el rango de IP asignado y la conexión privada en el proyecto host. Por lo general, un administrador de red en el proyecto host debe realizar estas tareas. Después de configurar el proyecto host, las instancias de VM en proyectos de servicio pueden usar la conexión privada.
Cuotas y límites
Debido a que una conexión privada se implementa como una conexión de intercambio de tráfico de VPC, los mismos límites y cuotas que se aplican al intercambio de tráfico entre redes de VPC también se aplican al acceso privado a los servicios.
Rangos de direcciones IP asignados para servicios
Antes de crear una conexión privada, debes asignar un rango de direcciones IPv4 para que la red de VPC del productor de servicios lo use. Esto garantiza que no haya una colisión de direcciones IP entre tu red de VPC y la red del productor de servicios. Crea un rango asignado para cada productor de servicios.
Cuando asignas un rango en tu red de VPC, ese rango no es apto para subredes (rangos principales y secundarios) ni los destinos de las rutas estáticas personalizadas.
No se admite el uso de rangos de direcciones IPv6 con acceso privado a servicios.
Tamaño del rango de direcciones IP
Cuando un productor de servicios crea una subred en su lado de la conexión, se selecciona un rango abierto de la asignación para el rango de direcciones IP de la subred.
Cada productor de servicios requiere un tamaño mínimo de rango de direcciones IP. Para Google, el tamaño mínimo es un bloque único de /24
(256 direcciones), pero el tamaño recomendado es un bloque de /16
(65,536 direcciones).
El tamaño que elijas depende de varios factores, por ejemplo:
- La cantidad de servicios y regiones que usas.
- Los requisitos para los servicios que usas.
- El tamaño mínimo del rango de direcciones IP para los servicios.
- Si el proveedor de servicios requiere rangos de IP independientes para cada instancia del servicio que creas o si puede usar el mismo rango de IP para varias instancias del servicio.
Si no tienes un bloque /16
contiguo, puedes comenzar con una asignación más pequeña y agregar 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 para aprovisionar el recurso. El servicio selecciona un rango de direcciones IP disponibles del rango asignado. No puedes seleccionar o modificar el rango de direcciones IP de la subred del productor de servicios. El servicio borra la subred solo cuando borras todos los recursos en ella.
A medida que aprovisionas recursos adicionales, el servicio los aprovisiona en subredes regionales existentes que creaste antes. Si una subred está llena, el servicio crea una nueva en esa región.
Consideraciones
Antes de asignar un rango de direcciones IP, considera lo siguiente:
- Selecciona un rango asignado que sea completamente independiente de los valores actuales y los futuros rangos de subredes, incluidos rangos de subredes de redes conectadas por medio del uso de intercambio de tráfico entre redes de VPC y rangos de subredes de radios de VPC conectados al mismo concentrador de Network Connectivity Center.
Selecciona un rango que no coincida exactamente con o no contenga los destinos de cualquier ruta estática o dinámica personalizada.
Cuando un productor de servicios selecciona una parte no utilizada de un rango asignado para usar como candidato para recursos nuevos, excluye todos los destinos de rutas personalizadas que coinciden exactamente con el rango asignado o que se ajustan a él. Cuando una red de VPC contiene un rango asignado y rutas personalizadas con destinos que coinciden o se ajustan al rango asignado, la parte usable del rango asignado se reduce. Esta configuración puede generar errores de asignación agotada inesperados.
Por ejemplo, si creas un rango asignado para
10.0.0.0/16
, se aplica lo siguiente:Si existe una ruta personalizada con un destino para
10.0.0.0/16
o esta se crea más tarde, todo el rango10.0.0.0/16
se considera no disponible. Si un productor de servicios intenta usar el rango asignado, Google Cloud muestra un error de asignación agotada.Si existe una ruta personalizada con un destino para
10.0.0.0/20
o esta se crea más tarde, la parte10.0.0.0/20
del rango asignado10.0.0.0/16
se considera no disponible. Si un productor de servicios intenta usar el rango asignado y la parte disponible de tu rango asignado no es suficiente para un productor de servicios, Google Cloud devuelve un un error de asignación agotada.Si existe una ruta personalizada con un destino para
10.0.0.0/8
o esta se crea más tarde, esto no afecta la disponibilidad del rango asignado10.0.0.0/16
.
Selecciona un rango 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 el enrutamiento dentro del sistema operativo invitado. Por ejemplo, la red predeterminada del puente Docker usa este rango. Si dependes de un producto que usa172.17.0.0/16
, no uses172.17.0.0/16
en un rango asignado para el acceso a servicios privados. - Si usas una red de VPC de modo automático, no puedes crear un rango asignado que coincida o se superponga con
10.128.0.0/9
. Google usa el rango10.128.0.0/9
para las subredes creadas automáticamente, incluidas aquellas en las regiones futuras.
- Algunos productos de Google y de terceros usan
Selecciona un bloque CIDR que sea lo suficientemente grande para satisfacer tus necesidades actuales y futuras. Si luego descubres que el rango no tiene el tamaño suficiente, expándelo de ser posible. Aunque puedes establecer varias asignaciones en un solo productor de servicios, Google aplica una cuota a la cantidad de rangos de direcciones IP que puedes asignar, pero no al tamaño (máscara de red) de cada rango.
Si agregas un rango asignado adicional a una conexión privada, se expande el rango de direcciones IP disponibles para el productor de servicios cuando crea recursos de servicio nuevos para cualquier servicio que proporcione. No puedes reservar un rango asignado específico dentro de una conexión privada para que lo use un servicio en particular.
No vuelvas a usar el mismo rango asignado para varios productores de servicios. Aunque es posible, hacerlo puede superponer las direcciones IP. Cada productor de servicios puede visualizar solo su red y no puede saber qué direcciones IP usan otros productores de servicios.
Solo puedes asignar un bloque CIDR a un rango asignado cuando creas la asignación. Si necesitas expandir el rango de direcciones IP, no puedes agregar más bloques a una asignación. En cambio, puedes crear otra asignación o volver a crear la existente mediante el uso de un bloque más grande que abarque los rangos nuevos y existentes.
Si tú mismo creas la asignación en lugar de que lo haga Google (como a través de Cloud SQL), puedes usar la misma convención de nombres a fin de indicar a otros usuarios o servicios de Google que ya existe una asignación para Google. Cuando un servicio de Google asigna un rango en tu nombre, el servicio usa el siguiente formato para otorgarle un nombre a la asignación:
google-managed-services-[your network name]
. Si esta asignación existe, los servicios de Google usan la existente en lugar de crear otra.Debido a que las conexiones privadas se implementan como conexiones de intercambio de tráfico entre redes de VPC, los comportamientos y las restricciones de las conexiones de intercambio de tráfico también se aplican a las conexiones privadas, como los límites del intercambio de tráfico entre redes de VPC.
Si planeas cambiar la dirección IP interna de una instancia de servicio existente que usa VPC, considera si esta acción podría ser disruptiva, por ejemplo, si se necesita borrar y volver a crear la instancia de servicio. Para obtener más información, revisa la documentación de los servicios administrados asociados. Por ejemplo, si usas Cloud SQL, consulta Cambia la dirección IP privada de una instancia de Cloud SQL existente.
Crea una asignación de IP
En los pasos siguientes, se describe cómo crear un rango de direcciones IP asignado.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que se conectará a un productor de servicios.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Rangos de IP asignados para servicios.
Haz clic en Rango de IP asignado.
Ingresa un Nombre y una Descripción para el rango asignado.
Especifica un Rango de IP para la asignación:
- Para especificar un rango de direcciones IP, selecciona Personalizado y luego ingresa un bloque CIDR, como
192.168.0.0/16
. - Para especificar la longitud de un prefijo y permitir que Google seleccione un rango disponible, selecciona Automático y luego ingresa la longitud de un prefijo, como
16
.
- Para especificar un rango de direcciones IP, selecciona Personalizado y luego ingresa un bloque CIDR, como
Haz clic en Asignar para crear un rango asignado.
gcloud
Para crear un rango asignado en tu red de VPC, usa el comando addresses create
.
Para especificar un rango de dirección y una longitud de prefijo (máscara de subred), usa las marcas
addresses
yprefix-length
. Por ejemplo, a fin de asignar el bloque CIDR192.168.0.0/16
, especifica192.168.0.0
para la dirección y16
como la longitud de 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 una longitud de prefijo (máscara de subred), usa la marca
prefix-length
. Cuando omites el rango de direcciones, Google Cloud selecciona de forma automática un rango de direcciones sin usar en tu red de VPC. En el siguiente ejemplo, se selecciona un rango de direcciones IP sin usar con una longitud de prefijo de16
bits.gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --description="DESCRIPTION" \ --network=VPC_NETWORK
Reemplaza lo siguiente:
RESERVED_RANGE_NAME
es un nombre para el rango asignado, comomy-allocated-range
.DESCRIPTION
una descripción para el rango, comoallocated for my-service
.VPC_NETWORK
es el nombre de la red de VPC, comomy-vpc-network
.
En el siguiente ejemplo, se crea una conexión privada a Google para que las instancias de VM en la red de VPC my-network
puedan usar el acceso privado a los servicios a fin de llegar a los servicios de Google que la admiten.
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 rango asignado en tu red de VPC, usa el recurso google_compute_global_address
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Si ves un error sobre el permiso compute.globalAddresses.list
del proyecto, consulta Permisos de la cuenta de servicio.
Enumera rangos de direcciones IP asignados
Para enumerar los rangos de direcciones IP asignados, usa el comando addresses list
.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Crea una conexión privada
Después de crear un rango asignado, puedes crear una conexión privada a un productor de servicios. La conexión privada establece una conexión de intercambio de tráfico de red de VPC entre tu red de VPC y la red del productor de servicios.
Las conexiones privadas constituyen una relación uno a uno entre tu red de VPC y el 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 solo productor de servicios ofrece varios servicios y deseas controlar qué rangos asignados se usan para diferentes recursos de servicios, puedes usar varias redes de VPC, cada una con sus propias conexiones privadas. Esta configuración te permite seleccionar una red en particular cuando creas un recurso de servicio administrado nuevo a fin de garantizar que se usen los rangos asignados asociados para el recurso nuevo.
Si te conectas a varios productores de servicios, usa una asignación única para cada uno de ellos. Esta práctica te ayuda a administrar la configuración de la red, como las rutas y las reglas de firewall, para cada productor de servicios.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que se conectará a un productor de servicios.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los servicios.
Haz clic en Crear una conexión para crear una conexión privada entre tu red y un productor de servicios.
Para la Asignación designada, selecciona uno o más rangos asignados existentes que no estén siendo usados por otros productores de servicios.
Haz clic en Conectar para crear la conexión.
gcloud
Usa el comando
vpc-peerings connect
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK
Reemplaza lo siguiente:
RESERVED_RANGE_NAME
es el nombre de uno o más rangos asignados.VPC_NETWORK
es el nombre de tu red de VPC.
El comando inicia una operación de larga duración y, luego, muestra un nombre de operación.
Para verificar si la operación se realizó de forma correcta, usa el comando
vpc-peerings operations describe
.gcloud services vpc-peerings operations describe \ --name=OPERATION_NAME
Reemplaza
OPERATION_NAME
por el nombre de la operación que se mostró en el paso anterior.
Puedes especificar más de un rango asignado cuando creas una conexión privada. Por ejemplo, si se agotó un rango, puedes asignar rangos adicionales. El servicio usará direcciones IP de todos los rangos proporcionados en el orden que especificaste.
Terraform
Para crear una conexión privada, usa el recurso google_service_networking_connection
.
Enumera conexiones privadas
Después de crear una conexión privada, puedes colocarla en una lista para verificar que existe. La lista también muestra los rangos asignados asociados a cada conexión. Por ejemplo, si no recuerdas qué rango asignado designaste a una conexión, consulta la lista para saberlo.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que contiene las conexiones.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los 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
Reemplaza VPC_NETWORK
por el nombre de la red de VPC.
Modifica una conexión privada
En el caso de las conexiones privadas existentes, puedes agregar o quitar rangos de direcciones IP asignados sin interrumpir el tráfico. Por ejemplo, a medida que escalas, puede agregar un rango asignado si estás a punto de agotar el existente.
No puedes quitar rangos de IP asignados mediante la consola de Google Cloud. Si deseas quitar un rango asignado, usa las instrucciones de gcloud
para modificar la conexión. Cuando quitas un rango de una conexión privada, se aplica lo siguiente:
El rango asignado ya no está asociado a la conexión privada, pero no se borra.
- Si un rango que se quitó ya no está en uso, puedes borrar la asignación.
Los recursos existentes del productor del servicio pueden seguir usando el rango que se quitó.
El acceso a servicios privados no usará los rangos que se quitaron para asignar subredes nuevas.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que contiene las conexiones.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los servicios para ver todas las conexiones privadas de la red.
Haz clic en el nombre de una conexión de la lista.
En el menú desplegable Asignación designada, selecciona los rangos que deseas asignar.
Haz clic en Aceptar.
gcloud
Para agregar o quitar rangos de direcciones IP asignados en una conexión privada existente, usa el comando vpc-peerings update
.
gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ [--force]
Reemplaza lo siguiente:
RESERVED_RANGE_NAME
es una lista de uno o más nombres de rangos asignados para asignarlos a la conexión privada.RESERVED_RANGE_NAME
reemplaza la lista anterior de rangos asignados. Si omites un rango que estaba asociado con esta conexión privada, el rango se quitará de la conexión. Debes usar la opción--force
para quitar un rango.VPC_NETWORK
es el nombre de tu red de VPC.
Borra un rango de direcciones IP asignado
Antes de borrar un rango de direcciones IP asignado, verifica si el rango lo usa una conexión privada.
Si el rango de direcciones IP asignado está en uso, primero modifica la conexión privada para quitar el rango. Luego, borra el rango de direcciones IP asignado.
Si borras una dirección IP asignada que está en uso y no modificas la conexión privada, se aplica lo siguiente:
Las conexiones existentes permanecen activas, pero nada impide que la red de VPC use direcciones IP que se superpongan con la red del productor de servicios.
Si borras el único rango de direcciones IP asignado que está asociado a una conexión privada, el servicio no podrá crear subredes nuevas porque no hay un rango de direcciones IP asignado para seleccionar.
Si luego creas un rango de direcciones IP asignado que coincide con el rango borrado o se superpone, agregar el rango a una conexión privada fallará.
Para evitar estos problemas, modifica siempre las conexiones privadas cuando borres un rango de direcciones IP asignado en uso.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que contiene las asignaciones que quieres borrar.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Rangos de IP asignados para servicios.
Selecciona la asignación para borrar.
Haz clic en Liberar para mostrar el rango de direcciones IP asignado al conjunto de direcciones IP internas disponibles de la red.
Si el rango de direcciones IP sigue asignado a una conexión existente, debes ingresar una confirmación adicional antes de poder liberar la asignación.
Vuelve a hacer clic en Liberar para confirmar la eliminación.
gcloud
Borra la asignación especificando el nombre de tu asignación.
gcloud compute addresses delete NAME \ --global
Reemplaza NAME
por el nombre del rango asignado que deseas borrar.
Borrar una conexión privada
Antes de borrar una conexión privada, debes borrar todas las instancias de servicio a las que accedes a través de la conexión. Por ejemplo, si deseas borrar una conexión privada que se usa para acceder a Cloud SQL, primero debes borrar las instancias de Cloud SQL que usan esa conexión. Después de borrar las instancias de servicio, se borran los recursos del productor de servicios, pero esta eliminación puede no ocurrir de inmediato. Algunos productores de servicios retrasan la eliminación hasta que haya pasado un período de espera. No puedes borrar la conexión privada durante el período de espera. Debes esperar hasta que se hayan borrado los recursos del productor de servicios para poder borrar la conexión.
Por ejemplo, si borras una instancia de Cloud SQL, recibirás una respuesta exitosa, pero el servicio esperará cuatro días antes de borrar los recursos del productor de servicios. El período de espera significa que, si cambias de opinión sobre la eliminación del servicio, puedes solicitar restablecer los recursos. Si intentas borrar la conexión durante el período de espera, la eliminación fallará con un mensaje que indica que el productor de servicios aún usa los recursos.
Console
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que contiene las conexiones que quieres borrar.
Selecciona la pestaña Conexión privada a servicios.
En la pestaña Conexión privada a servicios, selecciona la pestaña Conexión privada a servicios.
Selecciona la conexión privada que quieres borrar.
Haz clic en Borrar para eliminarla.
Vuelve a hacer clic en Borrar para confirmar la eliminación.
gcloud
Para borrar la conexión de intercambio de tráfico de red 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
Reemplaza VPC_NETWORK
por el nombre de la red de VPC.
Comparte zonas DNS privadas con los productores de servicios
Las zonas privadas de Cloud DNS son privadas para tu red de VPC. Si quieres permitir que una red del productor de servicios resuelva nombres de tu zona privada, puedes configurar el intercambio de tráfico de DNS entre las dos redes.
Cuando configuras el intercambio de tráfico de DNS, proporcionas una red de VPC y un sufijo DNS. Si el productor de servicios necesita resolver una dirección con ese sufijo DNS, deberá reenviar esas búsquedas a la red de VPC.
Estos servicios compatibles admiten el intercambio de tráfico de DNS, excepto Cloud SQL.
Si deseas habilitar el intercambio de tráfico de DNS, debes habilitar la API de Cloud DNS en tu proyecto.
Intercambia tráfico de DNS con un productor de servicios
gcloud
Para configurar el intercambio de tráfico 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
Reemplaza lo siguiente:
PEERING_NAME
es un nombre para esta configuración de intercambio de tráfico de DNS.VPC_NETWORK
es el nombre de tu red de VPC que está conectada al productor de servicios mediante el acceso privado a servicios.DNS_SUFFIX
es el sufijo de DNS que quieres intercambiar con el productor de servicios. Debes proporcionar un nombre de dominio DNS completo, incluido el punto. Por ejemplo,example.com.
es un sufijo de DNS válido.
Terraform
Para configurar el intercambio de tráfico de DNS entre tu red de VPC y la red del proveedor de servicios, usa el recurso google_service_networking_peered_dns_domain
.
Enumera las configuraciones de intercambio de tráfico de DNS
gcloud
Usa el comando peered-dns-domains list
gcloud services peered-dns-domains list \ --network=VPC_NETWORK
Reemplaza VPC_NETWORK
por el nombre de la red de VPC.
Borra 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
Reemplaza lo siguiente:
PEERING_NAME
es el nombre de la configuración del intercambio de tráfico de DNS.VPC_NETWORK
es el nombre de tu red de VPC.
Soluciona problemas
¿Qué cantidad de mi asignación se utiliza?
Cuando creas una conexión privada con un productor de servicios, le asignas un rango de direcciones IP para que use. Si usas servicios múltiples de un productor de servicios, cada uno reservará un fragmento de direcciones IP de ese rango asignado. Puedes revisar qué direcciones IP usan los servicios para que, por ejemplo, puedas ver qué servicios usan grandes bloques de direcciones IP y evitar su agotamiento.
Cómo ver qué servicio usa un rango de direcciones IP en particular:
- Genera una lista de tus conexiones privadas.
- Busca el nombre de la conexión de intercambio de tráfico que te conecta al productor de servicios relevante.
- Genera una lista con las rutas para tu red de VPC.
- Encuentra las rutas con un salto siguiente que coinciden con el nombre de la conexión de intercambio de tráfico. El rango de destino de las rutas indica las direcciones IP que usa cada servicio.
Agotamiento del rango de direcciones IP
Para una conexión privada determinada, si agotas el espacio de direcciones IP asignadas, Google Cloud mostrará este error: Failed to create subnetwork.
Couldn't find free blocks in allocated IP ranges.
.
Es posible que veas este error porque el rango asignado no es suficiente para tu uso o porque una ruta estática o dinámica personalizada impide que el rango asignado se use por completo. Para obtener más información sobre las consideraciones de enrutamiento, consulta Consideraciones.
Puedes expandir la asignación existente o agregar otras nuevas. La asignación expandida debe ser un rango de direcciones IP contiguo que incluya el rango existente. Se recomienda expandir una asignación porque no existe un límite en el tamaño de una asignación, aunque existe un límite en la cantidad de asignaciones que puedes crear.
Para expandir una asignación existente, sigue estos pasos:
- Genera una lista de las conexiones privadas y registra el nombre del rango asignado que necesitas expandir.
- Borra el rango asignado existente.
- Crea un rango asignado nuevo con el mismo nombre que el rango borrado. Especifica un rango de direcciones IP que incluya el rango de direcciones IP que se borró. De esa manera, los recursos de intercambio de tráfico existentes que usan el rango asignado anterior pueden seguir usando las mismas direcciones IP sin entrar en conflicto con los recursos de la red de VPC. Por ejemplo, si el rango asignado con anterioridad era
192.168.0.0/20
, crea un rango asignado nuevo como192.168.0.0/16
.
Para agregar rangos asignados a una conexión privada existente, sigue estos pasos:
- Crea un rango asignado nuevo. Este rango no tiene que ser contiguo a los rangos asignados existentes.
- Agrega el rango asignado a la conexión privada existente.
Los hosts locales no pueden comunicarse con la red del productor de servicios
Es posible que la red del productor de servicios 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 la subred desde tu red de VPC. Por lo tanto, el productor de servicios descarta cualquier solicitud que no sea de un rango de IP de subred.
En tu red de VPC, actualiza la conexión de intercambio de tráfico para exportar rutas personalizadas a la red del productor de servicios. La exportación de rutas envía todas las rutas estáticas y dinámicas aptas que se encuentran en la 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 de forma automática y, luego, puede enviar el tráfico a tu red local a través de la red de VPC.
Permisos de las cuentas de servicio
Si ves un error sobre el permiso compute.globalAddresses.list
para un proyecto cuando creas una asignación de IP o si experimentas errores como Error 400: Precondition check failed
mientras creas, enumeras o modificas las conexiones privadas, podría ser un problema con los roles de Identity and Access Management (IAM) para la cuenta de servicio de la API de Service Networking.
Esta cuenta de servicio se crea automáticamente después de que habilitas la API de Service Networking. La cuenta puede tardar un tiempo en aprovisionarse y mostrarse en la página IAM.
Console
Para asegurarte de que la cuenta de servicio tenga el rol de IAM correcto, haz lo siguiente:
En la consola de Google Cloud, ve a la página IAM.
Selecciona la casilla de verificación Incluir asignaciones de funciones proporcionadas por Google.
En la columna Nombre, busca la principal del Agente de servicio de Service Networking y haz clic en
Editar principal en la fila correspondiente.En el campo Rol, asegúrate de que esté presente el rol Agente de servicio de Service Networking (
roles/servicenetworking.serviceAgent
).Si el rol Agente de servicio de Service Networking no está presente, haz clic en
Agregar rol o Agregar otro rol.Haga clic en Selecciona un rol.
En el cuadro de texto Filtro, ingresa
Service Networking Service Agent
.Selecciona Agente de servicio de Service Networking en la lista y, luego, haz clic en Guardar.
gcloud
Para crear una cuenta de servicio de la API de 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
Reemplaza lo siguiente:
HOST_PROJECT_NAME
: el nombre del proyecto hostHOST_PROJECT_NUMBER
: el número del proyecto host
La ruta de subred de intercambio de tráfico persiste después de actualizar la asignación de IP
Después de actualizar el rango de direcciones IP asignado de una conexión de servicios privados, la ruta de subred de intercambio de tráfico anterior aún podría aparecer en la tabla de enrutamiento de la red de VPC. La ruta persiste debido a que el rango de direcciones IP aún está en uso.
Para solucionar este problema, haz lo siguiente:
- Asegúrate de que si borras una asignación de IP, también actualices la conexión privada.
- Borra o actualiza los recursos que usen el rango de direcciones IP anterior.
La ruta de subred de intercambio de tráfico se quita automáticamente cuando ya no se usa el rango de direcciones IP. Es posible que haya un retraso entre la eliminación del recurso y la eliminación completa del recurso por parte del productor de servicios. Por ejemplo, si una instancia de Cloud SQL usa el rango de direcciones IP anterior, el productor de servicios puede tardar hasta cuatro días en borrar por completo tu instancia. La ruta de subred de intercambio de tráfico se quitará luego de que se complete la eliminación.