Puedes usar el intercambio de tráfico entre redes de VPC para permitir que Datastream se comunique de forma privada con los recursos de tu red de nube privada virtual (VPC). La conexión de intercambio de tráfico de VPC entre tu red de VPC y la red de VPC de Datastream permite que Datastream se conecte a lo siguiente:
- Recursos como máquinas virtuales (VM) y balanceadores de cargas internos en tu red de VPC
- Recursos en otras redes conectadas a tu red de VPC a través de túneles de Cloud VPN, adjuntos de VLAN de interconexión dedicada, adjuntos de VLAN de interconexión de socios y Cloud Routers del Centro de conectividad de red
La conexión de intercambio de tráfico entre redes de VPC entre tu red de VPC y la red de VPC de Datastream no permite que Datastream se conecte a lo siguiente:
- Extremos de Private Service Connect ubicados en tu red de VPC
- Recursos ubicados en otra red de VPC, con intercambio de tráfico con tu red de VPC, pero no con la red de VPC de Datastream (Esto se debe a que el intercambio de tráfico entre redes de VPC no proporciona enrutamiento transitivo).
Para establecer la conectividad entre Datastream y un recurso al que solo se puede acceder desde tu red de VPC, puedes usar una VM de traducción de direcciones de red (NAT) en tu red de VPC. Un caso de uso común para una VM de NAT es cuando Datastream necesita conectarse a una instancia de Cloud SQL.
En esta página, se describe un ejemplo de configuración de VM de NAT que permite que Datastream se conecte de forma privada a una instancia de Cloud SQL.
Requisitos previos para el intercambio de tráfico entre VPC
Antes de crear una configuración de conectividad privada, debes realizar los siguientes pasos para que Datastream pueda crear la conexión de intercambio de tráfico de VPC con tu proyecto:
- Tener una red de VPC que pueda intercambiar tráfico con la red privada de Datastream y que cumpla con los requisitos que se describen en la página Intercambio de tráfico entre redes de VPC Para obtener más información sobre cómo crear esta red, consulta Usa el intercambio de tráfico entre redes de VPC.
- Identifica un rango de IP disponible (con un bloque CIDR de /29) en la red de VPC. No puede ser un rango de IP que ya exista como subred, un rango de IP preasignado para el acceso a servicios privados ni ninguna ruta (excepto la ruta predeterminada 0.0.0.0) que incluya el rango de IP. Datastream usa este rango de IP para crear una subred que se pueda comunicar con la base de datos de origen. En la siguiente tabla, se describen los rangos de IP válidos.
Rango | Descripción |
---|---|
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
|
Direcciones IP privadas de RFC 1918 |
100.64.0.0/10 |
Espacio de direcciones compartidas de RFC 6598 |
192.0.0.0/24 |
Asignaciones de protocolo IETF de RFC 6890 |
192.0.2.0/24 (TEST-NET-1)198.51.100.0/24 (TEST-NET-2)203.0.113.0/24 (TEST-NET-3) |
Documentación de RFC 5737 |
192.88.99.0/24 |
Retransmisión de IPv6 a IPv4 (obsoleta) de RFC 7526 |
198.18.0.0/15 |
Pruebas comparativas de RFC 2544 |
Verifica que Google Cloud y el firewall local permitan el tráfico del rango de IP seleccionado. De lo contrario, crea una regla de firewall de entrada que permita el tráfico en el puerto de la base de datos de origen y asegúrate de que el rango de direcciones IPv4 en la regla de firewall sea el mismo que el rango de direcciones IP asignado cuando creaste el recurso de conectividad privada:
gcloud compute firewall-rules create FIREWALL-RULE-NAME \ --direction=INGRESS \ --priority=PRIORITY \ --network=PRIVATE_CONNECTIVITY_VPC \ --project=VPC_PROJECT \ --action=ALLOW \ --rules=FIREWALL_RULES \ --source-ranges=IP-RANGE
Reemplaza lo siguiente:
- FIREWALL-RULE-NAME: Es el nombre de la regla de firewall que se creará.
- PRIORITY: Es la prioridad de la regla, expresada como un número entero entre 0 y 65, 535 inclusive. El valor debe ser inferior al valor establecido para la regla de bloqueo de tráfico, si existe. Los valores de prioridad más bajos implican una precedencia más alta.
- PRIVATE_CONNECTIVITY_VPC: Es la red de VPC que puede establecer un intercambio de tráfico con la red privada de Datastream y que cumple con los requisitos que se describen en la página Intercambio de tráfico entre redes de VPC. Esta es la VPC que especificas cuando creas tu configuración de conectividad privada.
- VPC_PROJECT: Es el proyecto de la red de VPC.
- FIREWALL_RULES: Es la lista de protocolos y puertos a los que se aplica la regla de firewall, por ejemplo,
tcp:80
. La regla debe permitir el tráfico de TCP a la dirección IP y al puerto de la base de datos de origen o del proxy. Debido a que la conectividad privada puede admitir varias bases de datos, la regla debe considerar el uso real de tu configuración. IP-RANGE: Es el rango de direcciones IP que usa Datastream para comunicarse con la base de datos de origen. Este es el mismo rango que indicas en el campo Asignar un rango de IP cuando creas tu configuración de conectividad privada.
También es posible que debas crear una regla de firewall de salida idéntica para permitir que el tráfico vuelva a Datastream.
Se les asignó un rol que contiene el permiso
compute.networks.list
. Este permiso te otorga los permisos de IAM necesarios para enumerar las redes de VPC de tu proyecto. Para saber qué roles contienen este permiso, consulta la referencia de permisos de IAM.
Requisitos previos de la VPC compartida
Si usas VPC compartida, debes completar las siguientes acciones, además de los pasos que se describen en la sección Requisitos previos de VPC:
En el proyecto de servicio:
- Habilita la API de Datastream.
Obtén la dirección de correo electrónico que se usa para la cuenta de servicio de Datastream. Las cuentas de servicio de Datastream se crean cuando realizas una de las siguientes acciones:
- Crearás un recurso de Datastream, como un perfil de conexión o una transmisión.
- Creas una configuración de conectividad privada, seleccionas tu VPC compartida y haces clic en Create Datastream Service Account. La cuenta de servicio se crea en el proyecto host.
Para obtener la dirección de correo electrónico que se usa en la cuenta de servicio de Datastream, busca el número de proyecto en la página principal de la Google Cloud consola. La dirección de correo electrónico de la cuenta de servicio es
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com
.
En el proyecto host, haz lo siguiente:
Otorga el permiso de rol de administración de identidades y accesos (IAM)
compute.networkAdmin
a la cuenta de servicio de Datastream. Este rol solo es obligatorio cuando creas el intercambio de tráfico de VPC. Una vez establecido el intercambio de tráfico, ya no necesitarás el rol.Si tu organización no permite otorgar el permiso, crea un rol personalizado con los siguientes permisos mínimos para crear y borrar recursos de conexión privada:
Para obtener más información sobre los roles personalizados, consulta Crea y administra roles personalizados.
Configura una VM de NAT
Identifica la dirección IP de la instancia de Cloud SQL a la que se debe conectar Datastream.
Identifica tu red de VPC. Esta es la red de VPC que está conectada a la red de VPC de Datastream mediante el intercambio de tráfico entre redes de VPC.
Si aún no lo hiciste, crea una configuración de conectividad privada en Datastream. De esta manera, se crea la conexión de intercambio de tráfico entre redes de VPC que conecta tu red de VPC y la red de VPC de Datastream. Toma nota del rango de direcciones IP que usa la configuración de conectividad privada de Datastream.
Elige un tipo de máquina para usar en la VM de NAT que crees en el siguiente paso. Google Cloud aplica un límite máximo de ancho de banda de salida por instancia, para los paquetes enrutados por los próximos saltos dentro de una red de VPC, según el tipo de máquina de la instancia de VM. Para obtener más información, consulta Salida a destinos enrutables dentro de una red de VPC y Ancho de banda máximo de salida por instancia.
Crea la VM con NAT en tu red de VPC. Si tu red de VPC es una red de VPC compartida, puedes crear la VM de NAT en el proyecto host o en cualquier proyecto de servicio, siempre y cuando la interfaz de red de la VM de NAT esté en la red de VPC compartida.
- Para minimizar el tiempo de ida y vuelta de la red, crea la VM de NAT en la misma región que Datastream.
- En este ejemplo, se supone que la VM de NAT tiene una sola interfaz de red.
- Ejecuta la secuencia de comandos en una distribución de Linux, por ejemplo, Debian 12.
- Usa la siguiente secuencia de comandos de inicio. El usuario raíz ejecuta la secuencia de comandos de inicio cada vez que se inicia la VM. Esta secuencia de comandos incluye comentarios que explican lo que hace cada línea de la secuencia de comandos. En la secuencia de comandos, reemplaza CLOUD_SQL_INSTANCE_IP por la dirección IP de la instancia de Cloud SQL y DATABASE_PORT por el puerto de destino que usa el software de la base de datos.
#! /bin/bash export DB_ADDR=CLOUD_SQL_INSTANCE_IP export DB_PORT=DATABASE_PORT # Enable the VM to receive packets whose destinations do # not match any running process local to the VM echo 1 > /proc/sys/net/ipv4/ip_forward # Ask the Metadata server for the IP address of the VM nic0 # network interface: md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance" vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)" # Clear any existing iptables NAT table entries (all chains): iptables -t nat -F # Create a NAT table entry in the prerouting chain, matching # any packets with destination database port, changing the destination # IP address of the packet to the SQL instance IP address: iptables -t nat -A PREROUTING \ -p tcp --dport $DB_PORT \ -j DNAT \ --to-destination $DB_ADDR # Create a NAT table entry in the postrouting chain, matching # any packets with destination database port, changing the source IP # address of the packet to the NAT VM's primary internal IPv4 address: iptables -t nat -A POSTROUTING \ -p tcp --dport $DB_PORT \ -j SNAT \ --to-source $vm_nic_ip # Save iptables configuration: iptables-save
Crea una regla de firewall de entrada permitida (o una regla en una política de firewall de red global, una política de firewall de red regional o una política de firewall jerárquica) con estas características:
- Dirección: entrada
- Acción: permitir
- Parámetro de destino: Al menos la VM de NAT
- Parámetro de origen: Es el rango de direcciones IP que usa la configuración de conectividad privada de Datastream.
- Protocolo: TCP
- Puerto: Debe incluir al menos el DATABASE_PORT.
La regla de firewall de permiso de salida implícita permite que la VM de NAT envíe paquetes a cualquier destino. Si tu red de VPC usa reglas de firewall de denegación de salida, es posible que debas crear una regla de firewall de permiso de salida para permitir que la VM de NAT envíe paquetes a la instancia de Cloud SQL. Si es necesario, usa estos parámetros para una regla de permiso de salida:
- Dirección: salida
- Acción: permitir
- Parámetro de destino: Al menos la VM de NAT
- Parámetro de destino: La dirección IP de la instancia de Cloud SQL
- Protocolo: TCP
- Puerto: Debe incluir al menos el DATABASE_PORT.
Asegúrate de haber configurado tu instancia de Cloud SQL para que acepte conexiones desde la dirección IPv4 interna principal que usa la interfaz de red de tu VM de NAT. Para obtener instrucciones, consulta Cómo autorizar con redes autorizadas en la documentación de Cloud SQL.
Crea un perfil de conexión en Datastream. En los detalles de la conexión del perfil, especifica la dirección IPv4 interna principal de la VM de NAT que creaste. Ingresa el puerto de la base de datos de origen en el campo de puerto del perfil de conexión.
Configura un par de VMs de NAT y un balanceador de cargas de red de transferencia interno
Para mejorar la confiabilidad de una solución de VM de NAT, considera la siguiente arquitectura, que usa un par de VMs de NAT y un balanceador de cargas de red de transferencia interno:
Crea dos VMs de NAT en diferentes zonas de la misma región. Sigue las instrucciones para configurar una VM de NAT para crear cada VM y colócala en su propio grupo de instancias no administrado por zona.
Como alternativa, puedes crear un grupo de instancias administrado regional. En la plantilla de grupo de instancias administrado, incluye una secuencia de comandos de inicio como la secuencia de comandos de ejemplo en las instrucciones para configurar una VM de NAT.
Crea un balanceador de cargas de red de transferencia interno cuyo servicio de backend use el grupo o los grupos de instancias del paso anterior como sus backends. Para ver un ejemplo de un balanceador de cargas de red de transferencia interna, consulta Configura un balanceador de cargas de red de transferencia interna con backends de grupos de instancias de VM.
Cuando configures la verificación de estado del balanceador de cargas, puedes usar una verificación de estado de TCP que use un puerto TCP de destino que coincida con DATABASE_PORT. Los paquetes de verificación de estado se enrutan a CLOUD_SQL_INSTANCE_IP según la configuración de la VM de NAT. Como alternativa, puedes ejecutar un proceso local en la VM de NAT que responda a una verificación de estado de TCP o HTTP en un puerto personalizado.
Crea reglas de firewall y configura las redes autorizadas de Cloud SQL como se describe en las instrucciones para configurar una VM de NAT. Asegúrate de que las redes autorizadas de Cloud SQL incluyan la dirección IPv4 interna principal de ambas VMs de NAT.
Cuando crees un perfil de conexión de Datastream, especifica la dirección IP de la regla de reenvío del balanceador de cargas de red de transferencia interna en los detalles de conexión del perfil.
¿Qué sigue?
- Obtén más información para crear una configuración de conectividad privada.
- Obtén información para ver tu configuración de conectividad privada.
- Obtén más información para borrar una configuración de conectividad privada.