Configurar o encaminhamento de protocolo

Este documento contém instruções para configurar o encaminhamento de protocolo interno e externo. Antes de configurar o encaminhamento de protocolo, leia Visão geral do encaminhamento de protocolo.

Configurar o encaminhamento de protocolo externo

Nesta seção, mostramos como configurar o encaminhamento de protocolo externo usando uma regra de encaminhamento para encaminhar o tráfego TCP para uma única instância de destino. Há instruções separadas para o tráfego IPv4 e IPv6.

Para configurar o encaminhamento de protocolo externo, crie uma instância de destino que contenha uma única instância de VM. Em seguida, você cria uma regra de encaminhamento regional externo que encaminha o tráfego para a instância de destino.

IPv4

Para simplificar, este exemplo usa a rede e as sub-redes padrão.

  1. Crie uma regra de firewall que permita que o tráfego externo chegue à instância de destino.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
     --target-tags=allow-ipv4-ext \
     --allow=tcp:80 \
     --source-ranges=0.0.0.0/0
    
  2. Crie uma VM. Neste exemplo, vamos configurar um servidor Apache na VM.

    gcloud compute instances create VM_INSTANCE_NAME \
     --zone=ZONE \
     --image-family=debian-10 \
     --image-project=debian-cloud \
     --tags=allow-ipv4-ext \
     --metadata=startup-script='#! /bin/bash
     sudo apt-get update
     sudo apt-get install apache2 -y
     sudo a2ensite default-ssl
     sudo a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     sudo systemctl restart apache2'
    
  3. Crie uma instância de destino que contenha a VM criada na etapa anterior. Crie uma instância de destino antes de um objeto de regra de encaminhamento. Esse tipo de regra precisa referir-se a um recurso de destino existente.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
       --instance=VM_INSTANCE_NAME \
       --zone=ZONE
    
  4. Reserve um endereço IPv4 externo estático.

    gcloud compute addresses create IPV4_ADDRESS \
      --region=REGION
    
  5. Crie a regra de encaminhamento que encaminha o tráfego TCP para a instância de destino. A regra de encaminhamento precisa ser criada na mesma região em que a instância de destino foi criada.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL \
      --region=REGION \
      --ip-protocol=TCP \
      --address=IPV4_ADDRESS \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE
    
  6. Testar sua configuração.

    1. Encontre o endereço IP da regra de encaminhamento.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
        --region=REGION
      
    2. Faça solicitações da Web para o balanceador de carga usando curl para contatar o endereço IP dele. Substitua IP_ADDRESS pelo endereço IP da etapa anterior.

      $ while true; do curl -m1 IP_ADDRESS; done
      

      A saída é semelhante à seguinte, em que o nome da VM de back-end que gera a resposta é exibido.

      Page served from: VM_INSTANCE_NAME.
      

IPv6

O processamento do tráfego IPv6 requer uma sub-rede de pilha dupla com uma instância de VM de pilha dupla para o back-end da instância de destino.

  1. Crie uma rede VPC personalizada.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom
    
  2. Na rede VPC, crie uma sub-rede de pilha dupla.

    gcloud compute networks subnets create SUBNET_NAME \
      --network=VPC_NAME \
      --range=192.168.11.0/24 \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=EXTERNAL \
      --region=REGION
    

    O intervalo 192.168.11.0/24 é apenas um exemplo de intervalo IPv4. Insira qualquer intervalo IPv4 principal da nova sub-rede na notação CIDR. Para mais informações, consulte Intervalos de sub-rede IPv4.

  3. Crie uma regra de firewall que permita que o tráfego externo chegue à instância de destino.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ipv6-ext \
      --allow=tcp:80 \
      --source-ranges=::/0
    
  4. Crie uma VM de pilha dupla.

    gcloud compute instances create VM_INSTANCE_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv6-ext \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  5. Crie uma instância de destino que contenha a VM criada na etapa anterior.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --network=VPC_NAME \
      --zone=ZONE
    
  6. Reserve um endereço IPv6 externo estático.

    gcloud compute addresses create IPV6_ADDRESS \
      --region=REGION \
      --subnet=SUBNET_NAME \
      --ip-version=IPV6 \
      --endpoint-type=NETLB
    
  7. Crie uma regra de encaminhamento IPv6 que encaminhe o tráfego TCP para a instância de destino. A regra de encaminhamento precisa ser criada na mesma região em que a instância de destino foi criada.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL \
      --subnet=SUBNET_NAME \
      --ip-version=IPV6 \
      --region=REGION \
      --address=IPV6_ADDRESS \
      --network-tier=PREMIUM \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE \
      --ip-protocol=TCP \
      --ports=80
    
  8. Testar sua configuração.

    1. Consiga o endereço IP da regra de encaminhamento.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Faça solicitações da Web para o balanceador de carga usando curl para contatar o endereço IP dele. Substitua IPV6_ADDRESS pelo endereço IP da etapa anterior.

      curl -6 'http://[IPV6_ADDRESS]:80'
      

      A saída é semelhante à seguinte, em que o nome da VM de back-end que gera a resposta é exibido.

      Page served from: VM_INSTANCE_NAME.
      

Configurar o encaminhamento de protocolo interno

Nesta seção, mostramos como configurar o encaminhamento de protocolo interno usando uma regra de encaminhamento para encaminhar o tráfego TCP para uma única instância de destino. Há instruções separadas para o tráfego IPv4 e IPv6.

Para este exemplo, você cria uma instância de destino que contém uma única instância de VM com um servidor Apache instalado. Em seguida, você cria uma regra de encaminhamento regional interno que encaminha o tráfego para a instância de destino.

IPv4

Para simplificar, este exemplo usa a rede e as sub-redes padrão.

  1. Crie uma regra de firewall que permita que o tráfego interno chegue à instância de destino.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
      --target-tags=allow-ipv4-int \
      --allow=tcp \
      --source-ranges=0.0.0.0/0
    
  2. Crie uma regra de firewall que permita a conectividade SSH com VMs com a tag de rede allow-ssh. Isso é usado para estabelecer uma conexão SSH com a VM cliente.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
      --target-tags=allow-ssh \
      --allow=tcp:22 \
      --source-ranges=0.0.0.0/0
    
  3. Crie uma VM.

    gcloud compute instances create VM_INSTANCE_NAME \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv4-int \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  4. Crie uma instância de destino que contenha a VM criada na etapa anterior. Crie uma instância de destino antes de um objeto de regra de encaminhamento. Esse tipo de regra precisa referir-se a um recurso de destino existente.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --zone=ZONE
    
  5. Crie a regra de encaminhamento que encaminha o tráfego TCP para a instância de destino. A regra de encaminhamento precisa ser criada na mesma região em que a instância de destino foi criada.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL \
      --network-tier=PREMIUM \
      --region=REGION \
      --ip-protocol=TCP \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE
    
  6. Crie uma VM do cliente de teste.

    gcloud compute instances create CLIENT_VM_NAME \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ssh
    

    Agora você pode testar a configuração de encaminhamento de protocolo enviando tráfego dessa VM do cliente para o endereço IP da regra de encaminhamento.

  7. Testar sua configuração.

    1. Encontre o endereço IP da regra de encaminhamento.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Estabeleça uma conexão SSH com a VM cliente.

      gcloud compute ssh CLIENT_VM_NAME \
      --zone=ZONE
      
    3. Faça solicitações ao balanceador de carga usando curl para entrar em contato com o endereço IP dele.

      $ while true; do curl -m1 IP_ADDRESS; done
      

      A saída é semelhante à seguinte, em que o nome da VM de back-end que gera a resposta é exibido.

      Page served from: VM_INSTANCE_NAME.
      

IPv6

O processamento do tráfego IPv6 requer uma sub-rede de pilha dupla com uma instância de VM de pilha dupla para o back-end da instância de destino.

  1. Crie uma rede VPC personalizada com a flag --enable-ula-internal-ipv6 para configurar intervalos IPv6 internos em qualquer sub-rede nessa rede.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6
    
  2. Na rede VPC, crie uma sub-rede de pilha dupla.

    gcloud compute networks subnets create SUBNET_NAME \
      --network=VPC_NAME \
      --range=192.168.11.0/24 \
      --region=REGION \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=INTERNAL
    

    O intervalo 192.168.11.0/24 é apenas um exemplo de intervalo IPv4. Insira qualquer intervalo IPv4 principal da nova sub-rede na notação CIDR. Para mais informações, consulte Intervalos de sub-rede IPv4.

  3. Crie uma regra de firewall que permita que o tráfego interno chegue à instância de destino.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ipv6-int \
      --allow=tcp \
      --source-ranges=::/0
    
  4. Crie uma regra de firewall para permitir a conectividade SSH com as VMs usando a tag de rede allow-ssh.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ssh \
      --allow=tcp:22 \
      --source-ranges=0.0.0.0/0
    

    Essa regra de firewall é aplicada a uma VM de cliente (criada em uma das etapas a seguir) à qual você se conectará via SSH para enviar tráfego HTTP ao endereço IP da regra de encaminhamento.

  5. Crie uma VM de pilha dupla.

    gcloud compute instances create VM_INSTANCE_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv6-int \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  6. Crie uma instância de destino que contenha a VM criada na etapa anterior.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --network=VPC_NAME \
      --zone=ZONE
    
  7. Crie uma regra de encaminhamento IPv6 que encaminhe o tráfego TCP para a instância de destino. A regra de encaminhamento precisa ser criada na mesma região em que a instância de destino foi criada.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL \
      --network-tier=PREMIUM \
      --network=VPC_NAME \
      --subnet=SUBNET_NAME \
      --region=REGION \
      --ip-protocol=TCP \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE \
      --ip-version=IPV6
    
  8. Criar uma VM cliente.

    gcloud compute instances create CLIENT_VM_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ssh
    
  9. Testar sua configuração.

    1. Consiga o endereço IP da regra de encaminhamento.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Estabeleça uma conexão SSH com a VM cliente.

      gcloud compute ssh CLIENT_VM_NAME \
       --zone=ZONE
      
    3. Faça uma solicitação HTTP para o endereço IP da regra de encaminhamento usando curl.

      curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
      

      A saída é semelhante à seguinte, e o nome da VM de back-end que gera a resposta é exibido nesse texto:

      Page served from: VM_INSTANCE_NAME.
      

A seguir