Conetividade de rede nos serviços geridos do Google Cloud
Esta página descreve como configurar a conetividade privada dos Integration Connectors ao seu serviço de back-end, como o CloudSQL para MySQL, o CloudSQL para PostgreSQL e o CloudSQL para SQL Server. Esta página pressupõe que conhece os seguintes conceitos:
- Anexos de pontos finais
- Zonas geridas
- Private Service Connect (PSC)
- Balanceador de carga do Google Cloud
Considerações
Quando cria uma associação de serviço do PSC, considere os seguintes pontos principais:
- O anexo de serviço do PSC e o equilibrador de carga são criados em sub-redes diferentes na mesma VPC. Especificamente, a associação de serviço é sempre criada numa sub-rede NAT.
- Os servidores proxy SOCKS5 têm de estar associados ao endereço IP
0.0.0.0:<port>
, uma vez que isto é necessário para o tráfego recebido do equilibrador de carga e das sondas de verificação do estado. Para mais informações, consulte o artigo Verificação do estado. - O tráfego do equilibrador de carga e da sondagem de verificação do estado deve ser enviado para a mesma porta.
- Configure as regras de firewall para facilitar o fluxo de tráfego.
Regras de entrada
- O tráfego da sub-rede da associação de serviços do PSC deve chegar ao seu serviço de back-end.
- Na sub-rede do ILB, o ILB deve conseguir enviar tráfego para os servidores proxy SOCKS5.
- A sondagem de verificação do estado deve conseguir aceder aos servidores proxy SOCKS5. As sondas de verificação de estado do Google Cloud têm um intervalo de IPs fixo (
35.191.0.0/16, 130.211.0.0/22
). Assim, estes IPs podem ser autorizados a enviar tráfego para os servidores proxy SOCKS.
Regras de saída
O tráfego de saída está ativado por predefinição num projeto do Google Cloud, a menos que sejam configuradas regras de negação específicas.
- Todos os componentes do Google Cloud, como a associação de serviço do PSC e o balanceador de carga, devem estar na mesma região.
- Certifique-se de que os seus servidores proxy SOCKS5 aceitam tráfego nos seguintes cenários:
- Balanceadores de carga de passagem (ILB TCP/UDP L4): os pedidos dos IPs NAT do anexo do serviço PSC devem conseguir alcançar os seus servidores proxy SOCKS5. Por conseguinte, tem de permitir o intervalo de IP de toda a sub-rede NAT para a associação de serviço. Para mais informações, consulte o artigo Sub-redes do Private Service Connect.
- Balanceadores de carga baseados em proxy/HTTP(s) (ILB de proxy de camada 4, ILB de camada 7): todos os novos pedidos têm origem no balanceador de carga. Por conseguinte, os seus servidores proxy SOCKS5 devem aceitar pedidos da sub-rede proxy da sua rede VPC. Para mais informações, consulte o artigo Sub-redes apenas de proxy para equilibradores de carga baseados no Envoy.
Configure a conetividade privada
Alguns dos serviços Google Cloud geridos, como o CloudSQL MySQL expõem uma associação de serviços do PSC para conectividade privada. Nesses casos, pode ignorar este passo para criar uma associação de serviço do PSC e a associação de serviço do PSC fornecida pelo serviço gerido pode ser usada para criar a associação de ponto final do Integration Connectors.
Tem de criar uma nova associação de serviço do PSC nos seguintes cenários:
- O serviço gerido do Google Cloud não expõe uma associação de serviço, mas expõe um endereço IP através do acesso privado ao serviço.
- O serviço gerido do Google Cloud expõe uma associação de serviço, mas não suporta a inclusão na lista de autorizações do projeto do Integration Connectors para consumir a associação de serviço.
Os passos para criar a associação de serviço para estes dois cenários são descritos detalhadamente nas secções seguintes. Depois de criar a associação de serviço, tem de criar uma associação de ponto final e configurar uma associação para usar a associação de ponto final.
Crie uma associação de serviço para um serviço gerido que restringe o acesso
O serviço gerido pode não permitir que o projeto Integration Connectors seja adicionado à lista de autorizações para consumir a associação de serviço que expõe. Neste caso, tem de criar um balanceador de carga que consuma a associação de serviço e exponha o balanceador de carga aos Integration Connectors criando outra associação de serviço no seu projeto.
A imagem seguinte mostra um serviço gerido que expõe uma associação de serviço:
Para ver um exemplo de um serviço gerido que expõe uma associação do serviço, consulte o artigo Conetividade privada para um cluster do MongoDB Atlas.
Crie um balanceador de carga com o NEG do PSC como back-end
- Crie um NEG para se ligar a um serviço publicado.
- Adicione um back-end a um balanceador de carga de rede de proxy interno regional.
Para mais informações, consulte o artigo Crie um NEG do Private Service Connect.
Crie uma associação de serviço
- Crie uma sub-rede para a NAT de PSC.
- Crie uma regra de firewall para permitir o pedido do NAT do PSC ao balanceador de carga
- Crie um anexo de serviço.
Para mais informações, consulte o artigo Crie uma associação de serviço do PSC
Permitir a ligação do Private Service Connect a partir do projeto dos Integration Connectors
Para obter informações sobre como adicionar à lista de autorizações a ligação do Private Service Connect a partir do projeto Integration Connectors, consulte o artigo Adicione o Integration Connectors à lista de autorizações.
Crie uma associação de serviço para um serviço gerido que exponha o endereço IP
Se o serviço gerido não expuser uma associação de serviço, o tráfego dos Integration Connectors tem de ser encaminhado através do seu projeto.
A imagem seguinte mostra um serviço gerido que não expõe uma associação de serviço:
Para configurar a conetividade privada, siga estes passos:
- Crie uma associação do serviço do PSC.
- Crie instâncias de VM do Compute Engine para executar servidores proxy SOCKS5.
- 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 no seu requisito, pode criar tantas instâncias de VM quanto necessário.
- Crie a instância de proxy 1.
- Crie uma regra de firewall para permitir o SSH nas suas instâncias de VM.
gcloud compute firewall-rules create FIREWALL_RULE_NAME_SSH \ --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
- SSH para a sua instância de VM.
gcloud compute ssh \ --tunnel-through-iap \ PROXY_INSTANCE_1
- Instale o servidor proxy Dante SOCKS5.
sudo apt update sudo apt install dante-server
- Verifique a interface do servidor.
sudo ip a
- Crie uma cópia de segurança da configuração do Dante.
sudo mv /etc/danted.conf /etc/danted.conf.bak
- Crie um novo ficheiro de configuração do Dante.
sudo nano /etc/danted.conf
- Copie a seguinte configuração para o ficheiro 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 }
- Reinicie o servidor Dante e verifique o estado.
sudo systemctl restart danted sudo systemctl status danted
- Saia da instância de VM.
exit
- Crie um balanceador de carga com a instância de VM como back-end.
- Crie um grupo de instâncias não gerido.
gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
- Adicione as instâncias de VM criadas no passo 3 ao grupo.
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \ --instances=PROXY_INSTANCE_1
- Crie uma sonda de verificação de funcionamento e permita o tráfego da sonda.
- Crie a sonda de verificação de funcionamento.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --port BACKEND_SERVER_PORT --region=REGION
Neste comando, defina BACKEND_SERVER_PORT como 1080, que é a porta predefinida na qual os servidores proxy SOCKS5 são executados.
- 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
- Crie a sonda de verificação de funcionamento.
- Crie um balanceador de carga interno de nível 4 e permita o tráfego do balanceador de carga.
- 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
- 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
- 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
-
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
- Crie um serviço de back-end.
Crie uma associação de ponto final
Depois de criar uma associação de serviço para um serviço gerido, tem de criar uma associação de ponto final e, em seguida, usá-la na sua ligação.
Associação de ponto final como um endereço IPPara ver instruções sobre como criar uma associação de ponto final como um endereço IP, consulte o artigo Crie uma associação de ponto final como um endereço IP.
Anexo do ponto final como nome de anfitriãoEm determinados casos, como back-ends com TLS ativado, o destino requer que use nomes de anfitrião em vez de IPs privados para realizar a validação TLS. Nos casos em que é usado um DNS privado em vez de um endereço IP para o destino do anfitrião, além de criar uma associação de ponto final como um endereço IP, também tem de configurar zonas geridas. Para obter instruções sobre como criar uma associação de ponto final como um nome de anfitrião, consulte o artigo Criar uma associação de ponto final como um nome de anfitrião.
Mais tarde, quando configurar a ligação para usar a associação de ponto final, pode selecionar esta associação de ponto final.
Configure uma ligação para usar a associação do ponto final
Agora que criou uma associação de ponto final, use-a na sua ligação. Quando cria uma nova associação ou atualiza uma associação existente, na secção Destinos, selecione Anexo do ponto final como o Tipo de destino e selecione o anexo do ponto final que criou na lista Anexo do ponto final.
Se criou uma zona gerida, selecione Endereço do anfitrião como o Tipo de destino e use o registo A que criou ao criar a zona gerida.
Sugestões de resolução de problemas
Se tiver problemas com a conetividade privada, siga as diretrizes indicadas nesta secção para evitar problemas comuns.
- Certifique-se de que o projeto de inquilino do conector está na lista de autorizações da associação de serviço.
- Certifique-se de que tem a seguinte configuração para as regras de firewall:
- O tráfego da sub-rede da associação de serviço do PSC tem de poder alcançar o seu serviço de back-end.
- A sonda de verificação do estado de funcionamento tem de conseguir aceder ao seu sistema de back-end. As sondas de verificação de estado do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Assim, estes endereços IP têm de ter autorização para enviar tráfego para o seu servidor de back-end.
- O teste de conetividade do Google Cloud pode ser usado para identificar lacunas na configuração da sua rede. Para mais informações, consulte o artigo Crie e execute testes de conetividade.
- Crie um grupo de instâncias não gerido.
A instância de VM vai ser usada para encaminhar o tráfego dos Integration Connectors para o serviço gerido. Instale um proxy SOCKS5 na instância de VM. O proxy Auth do Cloud SQL suporta encadeamento através de um proxy SOCKS5, o que lhe permite encaminhar tráfego encriptado do proxy Auth do Cloud SQL para a instância do Cloud SQL de destino. Por conseguinte, precisa de servidores proxy SOCKS5 para se ligar a uma instância privada do Cloud SQL.
Os passos detalhados para instalar e configurar um servidor proxy SOCKS5 estão fora do âmbito deste documento, e pode instalar qualquer proxy SOCKS5 à sua escolha. Os passos seguintes mostram como instalar e configurar o servidor proxy SOCKS5 do Dante.
- Crie instâncias de VM do Compute Engine para executar servidores proxy SOCKS5.