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.
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
Crie uma VM. Neste exemplo, vamos configurar um servidor Apache na VM.
gcloud compute instances create VM_INSTANCE_NAME \ --zone=ZONE \ --image-family=debian-12 \ --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'
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
Reserve um endereço IPv4 externo estático.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
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
Testar sua configuração.
Encontre o endereço IP da regra de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
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.
Crie uma rede VPC personalizada.
gcloud compute networks create VPC_NAME \ --subnet-mode=custom
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.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
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-12 \ --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'
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
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
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
Testar sua configuração.
Consiga o endereço IP da regra de encaminhamento.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
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.
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
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
Crie uma VM.
gcloud compute instances create VM_INSTANCE_NAME \ --zone=ZONE \ --image-family=debian-12 \ --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'
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
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
Crie uma VM do cliente de teste.
gcloud compute instances create CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --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.
Testar sua configuração.
Encontre o endereço IP da regra de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Estabeleça uma conexão SSH com a VM cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
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.
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
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.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
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.
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-12 \ --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'
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
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
Criar uma VM cliente.
gcloud compute instances create CLIENT_VM_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV4_IPV6 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Testar sua configuração.
Consiga o endereço IP da regra de encaminhamento.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Estabeleça uma conexão SSH com a VM cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
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.