Conectividade de rede nos serviços gerenciados do Google Cloud

Esta página descreve como configurar a conectividade particular dos Integration Connectors para seu serviço de back-end, como o CloudSQL para MySQL, o CloudSQL para PostgreSQL e o CloudSQL para SQL Server. Nesta página, consideramos que você esteja familiarizado com os seguintes conceitos:

Considerações

Ao criar um anexo de serviço do PSC, considere os seguintes pontos principais:

  • O anexo de serviço PSC e o balanceador de carga são criados em sub-redes diferentes na mesma VPC. E, especificamente, o anexo de serviço é sempre criado em uma sub-rede NAT.
  • Os servidores proxy SOCKS5 precisam estar vinculados ao endereço IP 0.0.0.0:<port>, porque isso é necessário para o tráfego de entrada do balanceador de carga e das sondagens de verificação de integridade. Para mais informações, consulte Verificação de integridade.
  • O tráfego do balanceador de carga e da sondagem de verificação de integridade precisa ser enviado para a mesma porta.
  • Configurar as regras de firewall para facilitar o fluxo de tráfego.

    Regras de entrada

    • O tráfego da sub-rede do anexo do serviço PSC precisa chegar ao seu serviço de back-end.
    • Na sub-rede do ILB, ele precisa enviar tráfego para os servidores proxy SOCKS5.
    • A sondagem de verificação de integridade deve ser capaz de acessar os servidores proxy SOCKS5. O As sondagens de verificação de integridade do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Assim, esses IPs podem enviar tráfego para os servidores proxy SOCKS.

    Regras de saída

    O tráfego de saída é ativado por padrão em um projeto do Google Cloud, a menos que regras de negação específicas sejam configuradas.

  • Todos os componentes do Google Cloud, como o anexo de serviço do PSC e o balanceador de carga, precisam estar na mesma região.
  • Verifique se os servidores proxy SOCKS5 aceitam tráfego nos seguintes cenários:
    • Balanceadores de carga de passagem (ILB TCP/UDP L4): as solicitações dos IPs NAT do anexo do serviço PSC precisam alcançar os servidores proxy SOCKS5. Portanto, é necessário permitir todo o intervalo de IP da sub-rede NAT para o anexo de serviço. Para mais informações, consulte Sub-redes do Private Service Connect.
    • Balanceadores de carga baseados em proxy/HTTP(s) (ILB de proxy L4, ILB L7): todas as novas solicitações são originadas do balanceador de carga. Portanto, seus servidores proxy SOCKS5 devem aceitar solicitações do sub-rede de proxy da sua rede VPC. Para mais informações, consulte Sub-redes somente proxy para balanceadores de carga baseados no Envoy.

Configurar a conectividade particular

Alguns dos serviços gerenciados do Google Cloud, como CloudSQL MySQL expor um anexo de serviço PSC para conectividade particular. Nesses casos, você pode pular esta etapa para criar um anexo de serviço do PSC, e o anexo de serviço do PSC fornecido pelo serviço gerenciado pode ser usado para criar o anexo de endpoint dos Conectores de integração.

Crie um novo anexo de serviço do PSC nos seguintes cenários:

  • O serviço gerenciado do Google Cloud não expõe um anexo de serviço. mas expõe um endereço IP usando o Acesso privado a serviços.
  • O serviço gerenciado do Google Cloud expõe um anexo de serviço, mas não oferece suporte à lista de permissões do projeto do Integration Connectors para consumir anexo de serviço.

As etapas para criar o anexo de serviço nesses dois cenários é descrito em detalhes nas seções a seguir. Depois de criar o anexo de serviço, crie um anexo de endpoint e configure uma conexão para usá-lo.

Criar um anexo para um serviço gerenciado que restrinja o acesso

O serviço gerenciado pode não permitir que o projeto do Integration Connectors seja incluído na lista de permissões para consumir o anexo de serviço que expõe. Nesse caso, é preciso criar um balanceador de carga que consuma o anexo de serviço e o exponha ao Integration Connectors criando outro anexo de serviço no projeto.

A imagem a seguir mostra um serviço gerenciado que expõe um anexo de serviço:

Criar um balanceador de carga com o PSC NEG como back-end

  1. Crie um NEG para se conectar a um serviço publicado.
  2. Adicione um back-end a um balanceador de carga de rede de proxy interno regional.

Para mais informações, consulte Criar um NEG do Private Service Connect.

Criar um anexo de serviço

  1. Crie uma sub-rede para a NAT PSC.
  2. Criar uma regra de firewall para permitir a solicitação de NAT do PSC para o balanceador de carga
  3. Criar anexo de serviço.

Para mais informações, consulte Criar um anexo de serviço para PSC.

Permitir a conexão do Private Service Connect no projeto de conectores de integração

Para informações sobre como adicionar a conexão do Private Service Connect à lista de permissões do projeto Integration Connectors, consulte Adicionar os Integration Connectors à lista de permissões.

Criar um anexo de serviço para um serviço gerenciado que expõe o endereço IP

Se o serviço gerenciado não expor um anexo de serviço, o tráfego do Os Integration Connectors precisam usar seu projeto como proxy.

A imagem a seguir mostra um serviço gerenciado que não expõe um anexo de serviço:

Para configurar a conectividade particular, siga estas etapas:

  1. Crie um anexo de serviço do PSC.
    1. Crie instâncias de VM do Compute Engine para executar servidores proxy SOCKS5.
      1. Crie a instância de proxy 1.
        gcloud compute instances create PROXY_INSTANCE_1 \
                    --project=PROJECT_ID \
                    --network-interface=network-tier=PREMIUM,subnet=SUBNET_NAME_2,no-address
                  

      Com base nos seus requisitos, é possível criar quantas instâncias de VM forem necessárias.

    2. Criar uma regra de firewall para permitir SSH nas instâncias de VM.
      gcloud compute firewall-rules create FIREWALL_RULE_NAME_SSH \
                  --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
                  
    3. A instância de VM será usada para servir como proxy do tráfego dos conectores de integração para o serviço gerenciado. Instale um proxy SOCKS5 na instância de VM. O proxy do Cloud SQL Auth dá suporte encadeamento por meio de um proxy SOCKS5, que permite encaminhar o tráfego criptografado do proxy do Cloud SQL Auth para a instância do Cloud SQL de destino. Portanto, você precisa de servidores proxy SOCKS5 para se conectar a uma instância particular do Cloud SQL.

      As etapas detalhadas para instalar e configurar um servidor proxy SOCKS5 estão fora do escopo deste documento. Você pode instalar qualquer proxy SOCKS5 de sua preferência. O as etapas a seguir mostram como instalar e configurar o Dante servidor proxy SOCKS5.

      1. Acesse a instância de VM usando SSH.
        gcloud compute ssh \
                    --tunnel-through-iap \
                    PROXY_INSTANCE_1
                
      2. Instale o servidor proxy SOCKS5 Dante.
        sudo apt update
                sudo apt install dante-server
      3. Verifique a interface do servidor.
        sudo ip a
      4. Crie o backup da configuração do Dante.
        sudo mv /etc/danted.conf /etc/danted.conf.bak
      5. Crie um novo arquivo de configuração do Dante.
        sudo nano /etc/danted.conf
      6. Copie a seguinte configuração para o arquivo de configuração:
        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. Reinicie o servidor Dante e verifique o status.
        sudo systemctl restart danted
                sudo systemctl status danted
      8. Saia da instância de VM.
        exit
    4. Crie um balanceador de carga com a instância de VM como back-end.
      1. Crie um grupo de instâncias não gerenciadas.
        gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
      2. Adicione ao grupo as instâncias de VM criadas na etapa 3.
        gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
                    --instances=PROXY_INSTANCE_1
      3. Crie uma sondagem de verificação de integridade e permita o tráfego da sondagem.
        1. Crie a sondagem de verificação de integridade.
          gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
                      --port BACKEND_SERVER_PORT --region=REGION

          Nesse comando, defina BACKEND_SERVER_PORT como 1080, que é a porta padrão em que os servidores proxy SOCKS5 são executados.

        2. Crie uma regra de firewall para permitir o tráfego da sondagem.
          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. Crie um balanceador de carga interno L4 e permita o tráfego do balanceador de carga.
        1. Crie um serviço de back-end.
          gcloud compute backend-services create BACKEND_SERVICE \
                      --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME \
                      --health-checks-region=REGION 
        2. Adicione o grupo de instâncias ao serviço de back-end.
          gcloud compute backend-services add-backend BACKEND_SERVICE \
                      --instance-group=INSTANCE_GROUP_NAME \
                      --instance-group-zone=ZONE
        3. Crie uma regra de encaminhamento.
          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. Crie uma regra de firewall para permitir o tráfego interno do balanceador de carga para o grupo de instâncias.
          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

      Criar um anexo de endpoint

      Depois de criar um anexo de serviço para um serviço gerenciado, você precisa criar um anexo de endpoint e usá-lo na conexão.

      Anexo de endpoint como um endereço IP

      Para instruções sobre como criar um anexo de endpoint como endereço IP, consulte Criar um anexo de endpoint como endereço IP.

      Anexo de endpoint como nome do host

      Em alguns casos, como back-ends com TLS ativado, o destino exige o uso de nomes de host em vez de IPs particulares para realizar a validação de TLS. Nos casos em que um DNS particular é usado em vez de um endereço IP para o destino do host, além de criar um anexo de endpoint como um endereço IP, também é necessário configurar zonas gerenciadas. Para instruções sobre como criar um anexo de endpoint como um nome de host, consulte Criar um anexo de endpoint como um nome de host.

      Depois, ao configurar sua conexão para usar o anexo de endpoint, será possível selecionar esse anexo.

      Configurar uma conexão para usar o anexo de endpoint

      Agora que você criou um anexo de endpoint, use-o na sua conexão. Ao criar ou atualizar uma conexão, na seção "Destinos", selecione Anexo de endpoint como Tipo de destino e escolha o anexo de endpoint criado na lista Anexo de endpoint.

      Se você criou uma zona gerenciada, selecione Endereço do host como Tipo de destino e use o registro A que você criou ao criar a zona gerenciada.

      Dicas de solução de problemas

      Se você tiver problemas com a conectividade particular, siga as diretrizes listadas nesta seção para evitar problemas comuns.

      • Verifique se o projeto de locatário do conector está na lista de permissões no anexo de serviço.
      • Garanta a seguinte configuração para as regras de firewall:
        • O tráfego da sub-rede do anexo de serviço do PSC precisa ter permissão para alcançar seu serviço de back-end.
        • A sondagem de verificação de integridade precisa ter acesso ao sistema de back-end. O Google Cloud as sondagens de verificação de integridade têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Portanto, esses endereços IP precisam ter permissão para enviar tráfego ao servidor de back-end.
      • O teste de conectividade do Google Cloud pode ser usado para identificar lacunas na configuração da rede. Para mais informações, consulte Criar e executar testes de conectividade.