Este documento contém instruções para configurar o encaminhamento de protocolos para o encaminhamento de protocolos interno e externo. Antes de configurar o encaminhamento de protocolos, leia o artigo Vista geral do encaminhamento de protocolos.
Configure o encaminhamento de protocolos externos
Esta secção mostra como configurar o encaminhamento de protocolos externos através de uma regra de encaminhamento para encaminhar o tráfego TCP para uma única instância de destino. Existem instruções separadas para tráfego apenas IPv4, de pilha dupla e apenas IPv6.
Para configurar o encaminhamento de protocolos externos, crie uma instância de destino que contenha uma única instância de VM. Em seguida, cria uma regra de encaminhamento regional externa que encaminha o tráfego para a instância de destino.
Apenas IPv4
Para simplificar, este exemplo usa a rede e as sub-redes predefinidas.
Crie uma regra de firewall que permita que o tráfego externo alcance a 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. Para este exemplo, configura 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 no passo anterior. Tem de criar uma instância de destino antes de poder criar um objeto de regra de encaminhamento, porque a regra de encaminhamento tem de fazer referência 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 tem de 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
Teste a configuração.
Obtenha o endereço IP da sua regra de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Faça pedidos Web ao equilibrador de carga através do curl para contactar o respetivo endereço IP. Substitua
IP_ADDRESS
pelo endereço IP do passo anterior.while true; do curl -m1 IP_ADDRESS; done
O resultado é semelhante ao seguinte, em que é apresentado o nome da VM de back-end que gera a resposta.
Page served from: VM_INSTANCE_NAME.
Dupla pilha
O processamento do tráfego IPv4 e 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 no modo personalizado.
gcloud compute networks create VPC_NAME \ --subnet-mode=custom
Na rede de VPC, crie uma sub-rede de pilha dupla.
gcloud compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --range=IPV4_ADDRESS_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --region=REGION
Para IPV4_ADDRESS_RANGE, pode introduzir qualquer intervalo IPv4 principal para a nova sub-rede, na notação CIDR. Por exemplo,
192.168.11.0/24
. Para mais informações, consulte os intervalos de sub-redes IPv4.Crie uma regra de firewall que permita que o tráfego externo alcance a 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 no passo anterior.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Reserve um endereço IPv4 externo estático.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
Crie uma regra de encaminhamento IPv4 que encaminhe o tráfego TCP para a instância de destino. A regra de encaminhamento tem de 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
Reserve um intervalo de endereços IPv6 externos estáticos.
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 tem de 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
Teste a configuração.
Obtenha o endereço IP das regras de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Faça pedidos Web ao equilibrador de carga através do curl para contactar o respetivo endereço IP. Substitua
IP_ADDRESS
pelo endereço IP do passo anterior.Para tráfego IPv4:
while true; do curl -m1 IP_ADDRESS; done
Para tráfego IPv6:
curl -6 'http://[IP_ADDRESS]:80'
O resultado é semelhante ao seguinte, em que é apresentado o nome da VM de back-end que gera a resposta.
Page served from: VM_INSTANCE_NAME.
Apenas IPv6
O processamento apenas de tráfego IPv6 requer uma sub-rede apenas IPv6 com uma instância de VM apenas IPv6 para o back-end da instância de destino.
Crie uma rede VPC no modo personalizado.
gcloud beta compute networks create VPC_NAME \ --subnet-mode=custom
Na rede VPC, crie uma sub-rede apenas IPv6.
gcloud beta compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --stack-type=IPV6_ONLY \ --ipv6-access-type=EXTERNAL \ --region=REGION
Crie uma regra de firewall que permita que o tráfego externo alcance a instância de destino.
gcloud beta 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 apenas com IPv6.
gcloud beta compute instances create VM_INSTANCE_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV6_ONLY \ --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 no passo anterior.
gcloud beta compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Reserve um intervalo de endereços IPv6 externos estáticos.
gcloud beta 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 tem de ser criada na mesma região em que a instância de destino foi criada.
gcloud beta 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
Teste a configuração.
Obtenha o endereço IP da regra de encaminhamento.
gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Faça pedidos Web ao equilibrador de carga através do curl para contactar o respetivo endereço IP. Substitua
IPV6_ADDRESS
pelo endereço IP do passo anterior.curl -6 'http://[IPV6_ADDRESS]:80'
O resultado é semelhante ao seguinte, em que é apresentado o nome da VM de back-end que gera a resposta.
Page served from: VM_INSTANCE_NAME.
Configure o encaminhamento de protocolos internos
Esta secção mostra como configurar o encaminhamento de protocolo interno através de uma regra de encaminhamento para encaminhar o tráfego TCP para uma única instância de destino. Existem instruções separadas para tráfego apenas IPv4, de pilha dupla e apenas IPv6.
Para este exemplo, cria uma instância de destino que contém uma única instância de VM com um servidor Apache instalado. Em seguida, cria uma regra de encaminhamento regional interna que encaminha o tráfego para a instância de destino.
Apenas IPv4
Para simplificar, este exemplo usa a rede e as sub-redes predefinidas para configurar o encaminhamento de protocolos interno.
Crie uma regra de firewall que permita que o tráfego interno alcance a 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 para permitir a conetividade SSH a VMs com a etiqueta de rede
allow-ssh
. Isto é usado para estabelecer uma ligação SSH à VM do 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 no passo anterior. Tem de criar uma instância de destino antes de poder criar um objeto de regra de encaminhamento, porque a regra de encaminhamento tem de fazer referência 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 tem de 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 de cliente de teste.
gcloud compute instances create CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Agora, pode testar a configuração do encaminhamento de protocolos enviando tráfego desta VM cliente para o endereço IP da regra de encaminhamento.
Teste a configuração.
Obtenha o endereço IP da sua regra de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Estabeleça uma ligação SSH à VM do cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Faça pedidos ao equilibrador de carga através do curl para contactar o respetivo endereço IP.
while true; do curl -m1 IP_ADDRESS; done
O resultado é semelhante ao seguinte, em que é apresentado o nome da VM de back-end que gera a resposta.
Page served from: VM_INSTANCE_NAME.
Dupla pilha
O processamento do tráfego IPv4 e 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 no modo personalizado com a flag
--enable-ula-internal-ipv6
para configurar intervalos IPv6 internos em quaisquer sub-redes nesta rede.gcloud compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Na rede de VPC, crie uma sub-rede de pilha dupla.
gcloud compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --range=IPV4_ADDRESS_RANGE \ --region=REGION \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=INTERNAL
Para IPV4_ADDRESS_RANGE, pode introduzir qualquer intervalo IPv4 principal para a nova sub-rede, na notação CIDR. Por exemplo,
192.168.11.0/24
. Para mais informações, consulte os intervalos de sub-redes IPv4.Crie uma regra de firewall que permita que o tráfego interno alcance a 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 conetividade SSH às VMs através da etiqueta 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
Esta regra de firewall é aplicada a uma VM do cliente (criada num dos passos seguintes) à qual se liga através de SSH para enviar tráfego HTTP para o 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 no passo anterior.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Crie uma regra de encaminhamento IPv4 que encaminhe o tráfego TCP para a instância de destino. A regra de encaminhamento tem de 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 regra de encaminhamento IPv6 que encaminhe o tráfego TCP para a instância de destino. A regra de encaminhamento tem de 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
Crie uma VM de 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
Teste a configuração.
Obtenha o endereço IP da regra de encaminhamento.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Estabeleça uma ligação SSH à VM do cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Faça um pedido HTTP ao endereço IP da regra de encaminhamento através do comando curl.
Para tráfego IPv4:
while true; do curl -m1 IP_ADDRESS; done
Para tráfego IPv6:
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
O resultado é semelhante ao seguinte, em que o nome da VM de back-end que gera a resposta é apresentado no texto.
Page served from: VM_INSTANCE_NAME.
Apenas IPv6
O processamento apenas de tráfego IPv6 requer uma sub-rede apenas IPv6 com uma instância de VM apenas IPv6 para o back-end de instância de destino.
Crie uma rede VPC no modo personalizado com a flag
--enable-ula-internal-ipv6
para configurar intervalos IPv6 internos em quaisquer sub-redes nesta rede.gcloud beta compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Na rede VPC, crie uma sub-rede apenas IPv6.
gcloud beta compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --region=REGION \ --stack-type=IPV6_ONLY \ --ipv6-access-type=INTERNAL
Crie uma regra de firewall que permita que o tráfego interno alcance a instância de destino.
gcloud beta 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 conetividade SSH às VMs através da etiqueta de rede
allow-ssh
.gcloud beta 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
Esta regra de firewall é aplicada a uma VM do cliente (criada num dos passos seguintes) à qual se liga através de SSH para enviar tráfego HTTP para o endereço IP da regra de encaminhamento.
Crie uma VM apenas com IPv6.
gcloud beta compute instances create VM_INSTANCE_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV6_ONLY \ --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 no passo anterior.
gcloud beta 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 tem de ser criada na mesma região em que a instância de destino foi criada.
gcloud beta 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
Crie uma VM de cliente.
gcloud beta compute instances create CLIENT_VM_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV6_ONLY \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Teste a configuração.
Obtenha o endereço IP da regra de encaminhamento.
gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Estabeleça uma ligação SSH à VM do cliente.
gcloud beta compute ssh CLIENT_VM_NAME \ --zone=ZONE
Faça um pedido HTTP ao endereço IP da regra de encaminhamento através do comando curl.
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
O resultado é semelhante ao seguinte, em que o nome da VM de back-end que gera a resposta é apresentado no texto.
Page served from: VM_INSTANCE_NAME.