Conectividad de red en los servicios administrados de Google Cloud

En esta página, se describe cómo configurar la conectividad privada desde los conectores de integración a tu servicio de backend, como CloudSQL para MySQL, CloudSQL para PostgreSQL y CloudSQL 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 subredes diferentes. dentro de la misma VPC. Específicamente, el adjunto de servicio siempre se crea en una subred NAT.
  • Los servidores proxy SOCKS5 deben estar vinculados a la dirección IP 0.0.0.0:<port>, ya que esto es obligatorio 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 del sondeo de verificación de estado debe enviarse al mismo puerto.
  • Configura las reglas de firewall para facilitar el flujo de tráfico.

    Reglas de entrada

    • El tráfico de la subred del adjunto 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 tanto, se puede permitir que estas IP 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 el tráfico en las siguientes situaciones:
    • Balanceadores de cargas de transferencia (ILB de TCP/UDP de capa 4): Las solicitudes de las IP de NAT del archivo adjunto del servicio de PSC deberían poder llegar a tus servidores proxy SOCKS5. Por lo tanto, debes permitir todo el rango de IP de la subred de NAT para el archivo adjunto del servicio. Para obtener más información, consulta Subredes de Private Service Connect.
    • Balanceadores de cargas basados en proxy/HTTP(s) (ILB de proxy L4, ILB L7): Todas las solicitudes nuevas se originan en el balanceador de cargas. Por lo tanto, tus servidores de 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 CloudSQL 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 que proporciona el servicio administrado se puede usar para crear el adjunto de extremo de los conectores de integración.

Debes crear un nuevo adjunto de servicio de PSC en las siguientes situaciones:

  • El servicio administrado de Google Cloud no expone un adjunto de servicio pero expone una dirección IP mediante el acceso privado a servicios.
  • El servicio administrado de Google Cloud expone un adjunto de servicio, pero no admite incluir el proyecto de Integration Connectors en la lista de entidades permitidas para consumir el adjunto de servicio.

Los pasos para crear el archivo adjunto del servicio para estas dos situaciones se describen en detalle en las siguientes secciones. Después de crear el archivo adjunto de servicio, debes crear un archivo adjunto de extremo y configurar una conexión para usarlo.

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 esté incluido en la lista de entidades permitidas para consumir el archivo adjunto del servicio que expone. En este caso, debes crear un balanceador de cargas que consuma el adjunto de servicio y lo exponga a Integration Connectors. Para ello, crea otro adjunto de servicio en tu proyecto.

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

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

  1. Crea un NEG para conectarte a un servicio publicado.
  2. Agregar un backend a un balanceador de cargas de red del 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 PSC NAT.
  2. Crea una regla de firewall para permitir la solicitud de PSC NAT al balanceador de cargas
  3. Crear 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

Si quieres obtener información para incluir en la lista de entidades permitidas la conexión de Private Service Connect desde el proyecto Integration Connectors, consulta Agrega Integration Connectors a la lista de entidades permitidas.

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

Si el servicio administrado no expone un archivo adjunto de servicio, el tráfico de los conectores de integración se debe usar a través de un proxy en 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 necesidades, puedes crear tantas instancias de VM como sea necesario.

    2. Crea una regla de firewall para permitir SSH en 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 usar un proxy en 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 la encadenación a través de un proxy SOCKS5, lo que te permite reenviar el tráfico encriptado del proxy de autenticación de Cloud SQL a la instancia de Cloud SQL de destino. Por lo tanto, necesitas servidores proxy SOCKS5 para conectarte a una instancia privada de Cloud SQL.

      Los pasos detallados para instalar y configurar un servidor proxy SOCKS5 están fuera del alcance de este documento. Puedes instalar cualquier proxy SOCKS5 que elijas. El los siguientes pasos muestran cómo instalar y configurar Dante Servidor proxy SOCKS5.

      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. Crear 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 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 el sondeo 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 el sondeo.
          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 un 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 archivo adjunto de servicio para un servicio administrado, debes crear un archivo adjunto de extremo y, luego, usarlo en tu conexión.

      Adjunto de extremo como dirección IP

      Si deseas obtener instrucciones para crear un adjunto de extremo como una dirección IP, consulta Crea un adjunto de extremo como una dirección IP.

      Adjunto de extremo como nombre de host

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

      Más adelante, cuando configures tu conexión para usar el adjunto de extremo, podrás seleccionarlo.

      Configura una conexión para usar el archivo adjunto de extremo

      Ahora que creaste un adjunto de extremo, úsalo en tu conexión. Cuando crees una nueva conexión o actualices una existente, en la sección Destinos, selecciona Adjunto de extremo como Tipo de destino y elige 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 enumeran en esta sección para evitar problemas habituales.

      • Asegúrate de que el proyecto del usuario del conector esté en la lista de entidades permitidas del archivo adjunto de servicio.
      • Asegúrate de realizar la siguiente configuración para las reglas de firewall:
        • Se debe permitir que el tráfico de la subred del archivo adjunto del 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). De esta manera, estas direcciones IP deben tener permiso para enviar tráfico a tu servidor de backend.
      • Prueba de conectividad de Google Cloud se puede usar para identificar brechas en tu configuración de red. Para obtener más información, consulta Crea y ejecuta pruebas de conectividad.