Conectividad de red en los servicios administrados de Google Cloud

En esta página, se describe cómo configurar la conectividad privada desde Integration Connectors a tu servicio de backend, como Cloud SQL para MySQL, Cloud SQL para PostgreSQL y Cloud SQL para SQL Server. En esta página, se supone que estás familiarizado con los siguientes conceptos:

Consideraciones

Cuando crees un adjunto de servicio de PSC, ten en cuenta los siguientes puntos clave:

  • El adjunto de servicio de PSC y el balanceador de cargas se crean en diferentes subredes dentro de la misma VPC. Específicamente, el adjunto de servicio siempre se crea en una subred de NAT.
  • Los servidores proxy SOCKS5 deben estar vinculados a la dirección IP 0.0.0.0:<port>, ya que esto es necesario para el tráfico entrante del balanceador de cargas y los sondeos de verificación de estado. Para obtener más información, consulta Verificación de estado.
  • El tráfico del balanceador de cargas y el sondeo de verificación de estado se deben enviar al mismo puerto.
  • Configura las reglas de firewall para facilitar el flujo de tráfico.

    Reglas de entrada

    • El tráfico de la subred de la vinculación de servicio de PSC debe llegar a tu servicio de backend.
    • Dentro de la subred del ILB, este debería poder enviar tráfico a los servidores proxy SOCKS5.
    • El sondeo de verificación de estado debe poder acceder a los servidores proxy SOCKS5. Los sondeos de verificación de estado de Google Cloud tienen un rango de IP fijo (35.191.0.0/16, 130.211.0.0/22), por lo que se puede permitir que estas IPs envíen tráfico a los servidores proxy SOCKS.

    Reglas de salida

    El tráfico de salida está habilitado de forma predeterminada en un proyecto de Google Cloud, a menos que se configuren reglas de denegación específicas.

  • Todos tus componentes de Google Cloud, como el adjunto del servicio de PSC y el balanceador de cargas, deben estar en la misma región.
  • Asegúrate de que tus servidores proxy SOCKS5 acepten tráfico en las siguientes situaciones:
    • Balanceadores de cargas de transferencia (ILB de TCP/UDP de L4): Las solicitudes de las IPs de NAT del adjunto de servicio de PSC deben poder llegar a tus servidores proxy SOCKS5. Por lo tanto, debes permitir todo el rango de IP de la subred de NAT para la vinculación del servicio. Para obtener más información, consulta Subredes de Private Service Connect.
    • Balanceadores de cargas basados en proxy o HTTP(S) (ILB de proxy de L4, ILB de L7): Todas las solicitudes nuevas se originan en el balanceador de cargas. Por lo tanto, tus servidores proxy SOCKS5 deben aceptar solicitudes de la subred de proxy de tu red de VPC. Si deseas obtener más información, consulta Subredes de solo proxy para balanceadores de cargas basados en Envoy.

Configura la conectividad privada

Algunos de los servicios administrados de Google Cloud, como Cloud SQL MySQL, exponen un adjunto de servicio de PSC para la conectividad privada. En esos casos, puedes omitir este paso para crear un adjunto de servicio de PSC, y el adjunto de servicio de PSC proporcionado por el servicio administrado se puede usar para crear el adjunto de extremo de Integration Connectors.

Debes crear un nuevo adjunto de servicio de PSC en los siguientes casos:

  • El servicio administrado de Google Cloud no expone un adjunto de servicio, sino que expone una dirección IP a través del acceso a servicios privados.
  • El servicio administrado de Google Cloud expone un adjunto de servicio, pero no admite la inclusión en la lista de entidades permitidas del proyecto de Integration Connectors para consumir el adjunto de servicio.

En las siguientes secciones, se describen en detalle los pasos para crear la vinculación de servicio en estos dos casos. Después de crear el adjunto de servicio, debes crear un adjunto de extremo y configurar una conexión para usar el adjunto de extremo.

Crea un adjunto de servicio para un servicio administrado que restrinja el acceso

Es posible que el servicio administrado no permita que el proyecto de Integration Connectors se incluya en la lista de entidades permitidas para consumir la vinculación de servicio que expone. En este caso, debes crear un balanceador de cargas que consuma el adjunto de servicio y exponga el balanceador de cargas a Integration Connectors creando otro adjunto de servicio en tu proyecto.

En la siguiente imagen, se muestra un servicio administrado que expone un adjunto de servicio:

Para ver un ejemplo de un servicio administrado que expone un adjunto de servicio, consulta Conectividad privada para un clúster de MongoDB Atlas.

Crea un balanceador de cargas con un NEG de PSC como backend

  1. Crea un NEG para conectarte a un servicio publicado.
  2. Agrega un backend a un balanceador de cargas de red de proxy interno regional.

Para obtener más información, consulta Crea un NEG de Private Service Connect.

Crea un adjunto de servicio

  1. Crea una subred para la NAT de PSC.
  2. Crea una regla de firewall para permitir solicitudes de la NAT del PSC al balanceador de cargas
  3. Crea el adjunto de servicio.

Para obtener más información, consulta Crea un adjunto de servicio de PSC.

Permite la conexión de Private Service Connect desde el proyecto de Integration Connectors

Para obtener información sobre cómo incluir en la lista de entidades permitidas la conexión de Private Service Connect desde el proyecto de Integration Connectors, consulta Incluye en la lista de entidades permitidas Integration Connectors.

Crea un adjunto de servicio para un servicio administrado que expone la dirección IP

Si el servicio administrado no expone una vinculación de servicio, el tráfico de Integration Connectors debe redireccionarse a través de tu proyecto.

En la siguiente imagen, se muestra un servicio administrado que no expone un adjunto de servicio:

Para configurar la conectividad privada, sigue estos pasos:

  1. Crea un adjunto de servicio de PSC.
    1. Crea instancias de VM de Compute Engine para ejecutar servidores proxy SOCKS5.
      1. Crea la instancia de proxy 1.
        gcloud compute instances create PROXY_INSTANCE_1 \
                    --project=PROJECT_ID \
                    --network-interface=network-tier=PREMIUM,subnet=SUBNET_NAME_2,no-address
                  

      Según tus requisitos, puedes crear tantas instancias de VM como necesites.

    2. Crea una regla de firewall para permitir el acceso SSH a tus instancias de VM.
      gcloud compute firewall-rules create FIREWALL_RULE_NAME_SSH \
                  --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
                  
    3. La instancia de VM se usará para redireccionar el tráfico de Integration Connectors al servicio administrado. Instala un proxy SOCKS5 en la instancia de VM. El proxy de autenticación de Cloud SQL admite el encadenamiento a través de un proxy SOCKS5, lo que te permite redireccionar el tráfico encriptado desde el proxy de autenticación de Cloud SQL a la instancia de Cloud SQL de destino.

      Los pasos detallados para instalar y configurar un servidor proxy SOCKS5 están fuera del alcance de este documento, y puedes instalar cualquier proxy SOCKS5 que elijas. En los siguientes pasos, se muestra cómo instalar y configurar el servidor proxy SOCKS5 de Dante.

      1. Establece una conexión SSH a tu instancia de VM.
        gcloud compute ssh \
                    --tunnel-through-iap \
                    PROXY_INSTANCE_1
                
      2. Instala el servidor proxy SOCKS5 de Dante.
        sudo apt update
                sudo apt install dante-server
      3. Verifica la interfaz del servidor.
        sudo ip a
      4. Crea una copia de seguridad de la configuración de Dante.
        sudo mv /etc/danted.conf /etc/danted.conf.bak
      5. Crea un nuevo archivo de configuración de Dante.
        sudo nano /etc/danted.conf
      6. Copia la siguiente configuración en el archivo de configuración:
        logoutput: /var/log/socks.log
                # Bind the server to the 0.0.0.0 IP address to allow traffic
                # traffic from the load balancer and the health check probes.
                internal: 0.0.0.0 port = 1080
                external: ens4
                clientmethod: none
                socksmethod: none
                user.privileged: root
                user.notprivileged: nobody
                client pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                client block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
                socks pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                socks block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
      7. Reinicia el servidor de Dante y verifica el estado.
        sudo systemctl restart danted
                sudo systemctl status danted
      8. Sal de la instancia de VM.
        exit
    4. Crea un balanceador de cargas con la instancia de VM como backend.
      1. Crea un grupo de instancias no administrado.
        gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
      2. Agrega al grupo las instancias de VM que creaste en el paso 3.
        gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
                    --instances=PROXY_INSTANCE_1
      3. Crea un sondeo de verificación de estado y permite el tráfico del sondeo.
        1. Crea la sonda de verificación de estado.
          gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
                      --port BACKEND_SERVER_PORT --region=REGION

          En este comando, establece BACKEND_SERVER_PORT en 1080, que es el puerto predeterminado en el que se ejecutan los servidores proxy SOCKS5.

        2. Crea una regla de firewall para permitir el tráfico desde la sonda.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_HEALTHCHECK \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT \
                      --source-ranges=35.191.0.0/16,130.211.0.0/22
      4. Crea un balanceador de cargas interno L4 y permite el tráfico desde el balanceador de cargas.
        1. Crea un servicio de backend.
          gcloud compute backend-services create BACKEND_SERVICE \
                      --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME \
                      --health-checks-region=REGION 
        2. Agrega el grupo de instancias al servicio de backend.
          gcloud compute backend-services add-backend BACKEND_SERVICE \
                      --instance-group=INSTANCE_GROUP_NAME \
                      --instance-group-zone=ZONE
        3. Crea una regla de reenvío.
          gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
                      --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
                      --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
                      --backend-service-region=REGION
        4. Crea una regla de firewall para permitir el tráfico interno del balanceador de cargas al grupo de instancias.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
                      --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2

      Crea un adjunto de extremo

      Después de crear un adjunto de servicio para un servicio administrado, debes crear un adjunto de extremo y, luego, usarlo en tu conexión.

      Adjunto de extremo como dirección IP

      Para obtener instrucciones sobre cómo crear un adjunto de extremo como dirección IP, consulta Crea un adjunto de extremo como dirección IP.

      Adjunto de extremo como nombre de host

      En ciertos casos, como los backends habilitados para TLS, el destino requiere que uses nombres de host en lugar de IPs privadas para realizar la validación de TLS. En los casos en los que se usa un DNS privado en lugar de una dirección IP para el destino del host, además de crear una vinculación de extremo como una dirección IP, también debes configurar zonas administradas. Si deseas obtener instrucciones para crear una vinculación de extremo como nombre de host, consulta Crea una vinculación de extremo como nombre de host.

      Más adelante, cuando configures tu conexión para usar el adjunto del extremo, podrás seleccionar este adjunto.

      Configura una conexión para usar el adjunto de extremo

      Ahora que creaste un adjunto de extremo, úsalo en tu conexión. Cuando crees una conexión nueva o actualices una existente, en la sección Destinos, selecciona Adjunto de extremo como el Tipo de destino y selecciona el adjunto de extremo que creaste en la lista Adjunto de extremo.

      Si creaste una zona administrada, selecciona Dirección de host como el Tipo de destino y usa el registro A que creaste cuando creaste la zona administrada.

      Sugerencias para solucionar problemas

      Si tienes problemas con la conectividad privada, sigue los lineamientos que se indican en esta sección para evitar problemas comunes.

      • Asegúrate de que el proyecto del arrendatario del conector esté en la lista de entidades permitidas del adjunto de servicio.
      • Asegúrate de que las reglas de firewall tengan la siguiente configuración:
        • Se debe permitir que el tráfico de la subred de la vinculación de servicio de PSC llegue a tu servicio de backend.
        • El sondeo de verificación de estado debe poder acceder a tu sistema de backend. Los sondeos de verificación de estado de Google Cloud tienen un rango de IP fijo (35.191.0.0/16, 130.211.0.0/22). Por lo tanto, estas direcciones IP deben tener permiso para enviar tráfico a tu servidor de backend.
      • La prueba de conectividad de Google Cloud se puede usar para identificar cualquier brecha en la configuración de tu red. Para obtener más información, consulta Crea y ejecuta pruebas de conectividad.