Como criar VPNs de alta capacidade

Neste tutorial, você aprenderá como criar VPNs seguras de alta capacidade. Aprenderá também a testar sua velocidade.

A comunicação segura entre o Google Cloud e outras nuvens ou sistemas locais é uma necessidade essencial comum. Felizmente, o Google Cloud facilita a criação de redes privadas virtuais (VPNs, na sigla em inglês) com o protocolo IPsec para essa finalidade. Se um único túnel não oferecer a capacidade necessária, o Google Cloud distribuirá o tráfego com facilidade entre vários túneis para disponibilizar mais largura de banda.

Objetivos

Criar VPNs

  • Crie e configure um projeto do Google Cloud adequado para VPNs.
  • Crie uma nuvem privada virtual (VPC) chamada cloud para simular sua rede do Google Cloud e uma VPC chamada on-prem (local) para simular uma rede externa.
  • Crie gateways de VPN, regras de encaminhamento e endereços para a VPC cloud.
  • Forme um túnel para a nova VPN e encaminhe o tráfego por meio dele.
  • Para criar uma segunda VPN, repita o processo de criação da VPC on-prem.

Testar VPNs

  • Crie uma máquina virtual (VM, na sigla em inglês) usando o Compute Engine para testes de carga de capacidade.
  • Teste a velocidade de capacidade de uma única VPN usando a ferramenta iperf.
  • Encaminhe o tráfego por meio das VPNs simultaneamente e teste a velocidade de capacidade aumentada usando iperf.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud Platform, entre eles:

Segundo esta calculadora de preços, o preço estimado para executar este tutorial, se você usar todos os recursos em um dia inteiro, é de aproximadamente US$ 10,01.

Antes de começar

  1. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  3. Ative a API Google Compute Engine.

    Ative a API

  4. Avalie e familiarize-se com a maneira de criar uma VPN usando o Google Cloud. Leia também a Visão geral de redes VPC.

Como criar a VPC cloud

Nesta seção, você:

  • criará uma VPC para simular a rede de produção em nuvem;
  • permitirá que tipos comuns de tráfego fluam por meio da VPC;
  • criará uma sub-rede para implantação de hosts.

  1. Acesse o Cloud Shell.

    OPEN CLOUD SHELL

  2. No Cloud Shell, crie uma VPC personalizada chamada cloud associada ao projeto do Google Cloud. Com essa VPC, é possível usar endereços IP não padrão, mas ela não inclui regras de firewall padrão.

    gcloud compute networks create cloud --subnet-mode custom
    
  3. Ative SSH e icmp, porque você precisará de um shell seguro para se comunicar com as VMs durante o teste de carga:

    gcloud compute firewall-rules create cloud-fw --network cloud --allow tcp:22,icmp
    
  4. Crie uma sub-rede dentro da VPC e especifique uma região e um intervalo de IP. Nesta solução, você usará 10.0.1.0/24 e a região us-east1:

    gcloud compute networks subnets create cloud-east --network cloud \
        --range 10.0.1.0/24 --region us-east1
    

Como criar a VPC on-prem

Nesta seção, você criará uma simulação da VPC on-prem ou de qualquer rede à qual queira se conectar cloud. Na prática, você já tem recursos aqui, mas, para criar túneis e validar configurações, siga estas etapas:

  1. Usando a ferramenta de linha de comando gcloud, crie uma nova VPC de sub-rede personalizada associada ao seu projeto. Nomeie a nova VPC como on-prem:

    gcloud compute networks create on-prem --subnet-mode custom
    
  2. Ative SSH e icmp para hosts na VPC on-prem, porque você precisará de um shell seguro para se comunicar com as VMs durante o teste de carga:

    gcloud compute firewall-rules create on-prem-fw --network on-prem --allow tcp:22,icmp
    
  3. Especifique o prefixo de sub-rede da região. Neste exemplo, você atribui 192.168.1.0/24 à região us-central1:

    gcloud compute networks subnets create on-prem-central \
        --network on-prem --range 192.168.1.0/24 --region us-central1
    

Como criar gateways de VPN

Cada ambiente requer gateways de VPN para comunicação externa segura. Siga estas etapas para criar os gateways iniciais para as VPCs cloud e on-prem:

  1. Crie um gateway de VPN chamado on-prem-gw1 na VPC on-prem e na região us-central1:

    gcloud compute target-vpn-gateways create on-prem-gw1 --network on-prem --region us-central1
    
  2. Crie um gateway de VPN chamado cloud-gw1 na VPC cloud e na região us-east1:

    gcloud compute target-vpn-gateways create cloud-gw1 --network cloud --region us-east1
    

Como criar um túnel VPN com base em rota entre redes locais e do Google Cloud

Após serem criados, os gateways de VPN precisam de um endereço IP estático e externo para que sistemas fora da VPC possam se comunicar com eles. As etapas a seguir mostram a criação de endereços IP e rotas nas VPCs cloud e on-prem:

  1. Aloque o IP para o gateway da VPN cloud-gw1:

    gcloud compute addresses create cloud-gw1 --region us-east1
    
  2. Aloque o IP para o gateway da VPN on-prem-gw1:

    gcloud compute addresses create on-prem-gw1 --region us-central1
    
  3. Armazene os endereços criados nas etapas anteriores para não precisar procurá-los em comandos posteriores.

    1. Primeiro, para o gateway cloud-gw1:

      cloud_gw1_ip=$(gcloud compute addresses describe cloud-gw1 \
          --region us-east1 --format='value(address)')
      
    2. Em seguida, para o gateway on-prem-gw1:

      on_prem_gw_ip=$(gcloud compute addresses describe on-prem-gw1 \
          --region us-central1 --format='value(address)')
      
  4. Crie regras de encaminhamento para IPsec na VPC cloud. Você precisará criar regras de encaminhamento nas duas direções.

    1. Encaminhe o protocolo Encapsulating Security Payload (ESP) de cloud-gw1:

      gcloud compute forwarding-rules create cloud-1-fr-esp --ip-protocol ESP \
          --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
    2. Encaminhe o tráfego UDP:500 de cloud-gw1:

      gcloud compute forwarding-rules create cloud-1-fr-udp500 --ip-protocol UDP \
          --ports 500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
    3. Encaminhe o tráfego UDP:4500 de cloud-gw1:

      gcloud compute forwarding-rules create cloud-fr-1-udp4500 --ip-protocol UDP \
          --ports 4500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
  5. Da mesma forma, crie regras de encaminhamento para o túnel IPsec na VPC on-prem. Esta etapa permite que o túnel IPsec saia dos firewalls e, como antes, precisa ser realizada para os seguintes protocolos:

    1. Encaminhe o protocolo ESP de on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-esp --ip-protocol ESP \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
    2. Encaminhe o tráfego UDP:500, usado para estabelecer o túnel IPsec de on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-udp500 --ip-protocol UDP --ports 500 \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
    3. Encaminhe o tráfego UDP:4500, que carrega o tráfego criptografado de on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-udp4500 --ip-protocol UDP --ports 4500 \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
  6. Gere um secret, que será usado na próxima etapa, em que você criará e validará os túneis on-prem-tunnel1 e cloud-tunnel1. Para ver detalhes de como criar e armazenar chaves secretas de maneira segura, consulte Gerenciamento de secrets.

  7. Usando o secret que você acabou de gerar, crie um túnel para a rede local, on-prem-tunnel1, e para a rede baseada em nuvem, cloud-tunnel1. Cada rede precisa ter um gateway de VPN, e as chaves secretas precisam ser correspondentes. Nos dois comandos a seguir, substitua [MY_SECRET] pela chave secreta que você gerou.

    1. Crie o túnel VPN de on-prem para cloud:

      gcloud compute vpn-tunnels create on-prem-tunnel1 --peer-address $cloud_gw1_ip \
          --target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
          --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-central1
      
    2. Crie o túnel VPN de cloud para on-prem:

      gcloud compute vpn-tunnels create cloud-tunnel1 --peer-address $on_prem_gw_ip \
          --target-vpn-gateway cloud-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
          --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-east1
      
  8. Agora que você criou os gateways e construiu os túneis, precisa adicionar as rotas das sub-redes criadas anteriormente por meio dos dois túneis.

    1. Encaminhe o tráfego da VPC on-prem para o intervalo cloud 10.0.1.0/24 no túnel:

      gcloud compute routes create on-prem-route1 --destination-range 10.0.1.0/24 \
          --network on-prem --next-hop-vpn-tunnel on-prem-tunnel1 \
          --next-hop-vpn-tunnel-region us-central1
      
    2. Encaminhe o tráfego da VPC cloud para o intervalo on-prem 192.168.1.0/24 no túnel:

      gcloud compute routes create cloud-route1 --destination-range 192.168.1.0/24 \
          --network cloud --next-hop-vpn-tunnel cloud-tunnel1 --next-hop-vpn-tunnel-region us-east1
      

Como testar a capacidade da VPN

Neste ponto, você estabeleceu um caminho seguro entre as VPCs on-prem e cloud. Para testar a capacidade, use a iperf, uma ferramenta de código aberto para testes de carga de rede. Você precisará de uma VM em cada ambiente: uma para enviar tráfego e outra para recebê-lo.

Teste único de carga VPN

  1. Crie uma máquina virtual para a VPC cloud. Aqui, o nome é cloud-loadtest, e este exemplo usa uma imagem do Debian Linux para o SO. Caso já tenha um projeto, você pode pular esta etapa e usar os recursos que tem. A largura de banda de uma VM é de 2 Gbps * vCPUs. Sendo assim, você precisa de, no mínimo, quatro vCPUs.

    gcloud compute instances create "cloud-loadtest" --zone "us-east1-b" \
        --machine-type "n1-standard-4" --subnet "cloud-east" \
        --image-family "debian-9" --image-project "debian-cloud" --boot-disk-size "10" \
        --boot-disk-type "pd-standard" --boot-disk-device-name "cloud-loadtest"
    
  2. Crie uma máquina virtual para a VPC on-prem. Este exemplo usa a mesma imagem do Debian da VPC cloud. Pule esta etapa se você já tiver os recursos. Aqui, o nome é on-prem-loadtest.

    gcloud compute instances create "on-prem-loadtest" --zone "us-central1-a" \
        --machine-type "n1-standard-4" --subnet "on-prem-central" \
        --image-family "debian-9" --image-project "debian-cloud" --boot-disk-size "10" \
        --boot-disk-type "pd-standard" --boot-disk-device-name "on-prem-loadtest"
    
  3. Abra a porta TCP 5001 no firewall da rede on-prem para aceitar solicitações iperf:

    gcloud compute firewall-rules create on-prem-iperf-fw --network on-prem --allow tcp:5001
    
  4. Use o SSH para se conectar a cada VM e instale uma cópia do iperf. Para instalar o iperf no Debian, use a seguinte linha de comando:

    sudo apt-get install iperf
    
  5. Na VM on-prem-loadtest, execute este comando:

    iperf -s -i 5 -p 5001
    

    Você criou um servidor com a iperf na VM, que registra o status dela a cada cinco segundos.

  6. Na VM cloud-loadtest, execute este comando:

    iperf -c 192.168.1.2 -P 20 -x C -p 5001
    

Você criou um cliente iperf com 20 streams, que relatará valores após 10 segundos de teste:

teste de iperf

Observe o valor [SUM] de capacidade. Se o resultado for suficiente para o tráfego, você pode parar aqui. No entanto, se você precisar de uma capacidade maior, crie e use túneis adicionais.

Teste múltiplo de carga VPN

Se os trajetos coincidirem, os gateways de VPN do Google Cloud rotearão vários caminhos de custo igual (ECMP, na sigla em inglês) por fluxo para o balanceamento de carga em vários túneis e fornecerão maior capacidade agregada. Como o balanceamento de carga é por fluxo, um único fluxo não recebe nenhum benefício, mas vários fluxos sim.

  1. Crie um gateway de VPN cloud adicional, cloud-gw2, na mesma região que cloud-gw1:

    gcloud compute target-vpn-gateways create cloud-gw2 --network cloud --region us-east1
    
  2. Crie o endereço para cloud-gw2:

    gcloud compute addresses create cloud-gw2 --region us-east1
    
  3. Armazene o endereço de cloud-gw2:

    cloud_gw2_ip=$(gcloud compute addresses describe cloud-gw2 \
        --region us-east1 --format='value(address)')
    
  4. Crie regras de encaminhamento em cloud-gw2:

    gcloud compute forwarding-rules create cloud-2-fr-esp --ip-protocol ESP \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
    gcloud compute forwarding-rules create cloud-2-fr-udp500 --ip-protocol UDP --ports 500 \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
    gcloud compute forwarding-rules create cloud-fr-2-udp4500 --ip-protocol UDP --ports 4500 \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
  5. Construa um túnel de on-prem para cloud-gw2, substituindo [MY_SECRET] pelo secret gerado:

    gcloud compute vpn-tunnels create on-prem-tunnel2 --peer-address $cloud_gw2_ip \
        --target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
        --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-central1
    
  6. Construa um túnel de cloud-gw2 para on-prem, substituindo [MY_SECRET] pelo secret gerado:

    gcloud compute vpn-tunnels create cloud-tunnel2 --peer-address $on_prem_gw_ip \
        --target-vpn-gateway cloud-gw2 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
        --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-east1
    
  7. Trajeto de on-prem até cloud-gw2:

    gcloud compute routes create on-prem-route2 --destination-range 10.0.1.0/24 --network on-prem \
        --next-hop-vpn-tunnel on-prem-tunnel2 --next-hop-vpn-tunnel-region us-central1
    
  8. Trajeto de cloud-gw2 até on-prem:

    gcloud compute routes create cloud-route2 --destination-range 192.168.1.0/24 \
        --network cloud --next-hop-vpn-tunnel cloud-tunnel2 --next-hop-vpn-tunnel-region us-east1
    

Você criou dois túneis, cloud-tunnel1 e cloud-tunnel2, com trajetos idênticos. O tráfego será balanceado automaticamente entre eles.

Como repetir o teste de capacidade da VPN

  • Use iperf para testar novamente a velocidade da rede.

    iperf -c 192.168.1.2 -P 20 -x C
    

Observe como o valor da capacidade é maior do que no teste de túnel único:

repetir teste de iperf

Observe também que o limite para os túneis VPN de roteamento de vários caminhos de custo igual não é 2, nem os túneis precisam terminar nas mesmas regiões.

Para uma escala adicional, continue esse processo indefinidamente. Além disso, para melhorar a confiabilidade, você pode gerar ou terminar esses túneis em diferentes sub-redes regionais.

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que contém os recursos ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir