Este documento contiene instrucciones para configurar el reenvío de protocolos tanto internos como externos. Antes de configurar el reenvío de protocolos, lee Descripción general del reenvío de protocolos.
Configura el reenvío de protocolos externos
En esta sección, se muestra cómo configurar el reenvío de protocolos externos mediante una regla de reenvío para reenviar el tráfico de TCP a una sola instancia de destino. Existen instrucciones independientes para el tráfico de solo IPv4, de pila doble y de solo IPv6.
Para configurar el reenvío de protocolos externos, debes crear una instancia de destino que contenga una sola instancia de VM. Luego, creas una regla de reenvío regional externa que reenvía el tráfico a la instancia de destino.
Solo IPv4
Para simplificar, en este ejemplo se usan la red y las subredes predeterminadas.
Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una VM. Para este ejemplo, configurarás un servidor Apache en la 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'
Crea una instancia de destino que contenga la VM creada en el paso anterior. Debes crear una instancia de destino antes de poder crear un objeto de regla de reenvío porque la regla de reenvío debe hacer referencia a un recurso de destino existente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Reserva una dirección IPv4 externa estática.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
Crea la regla de reenvío que reenvía el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Realiza solicitudes web al balanceador de cargas mediante curl para contactar a su dirección IP. Reemplaza
IP_ADDRESS
por la dirección IP del paso anterior.while true; do curl -m1 IP_ADDRESS; done
El resultado es similar al siguiente, en el que se muestra el nombre de la VM de backend que genera la respuesta.
Page served from: VM_INSTANCE_NAME.
Pila doble
El control del tráfico IPv4 e IPv6 requiere una subred de pila doble con una instancia de VM de pila doble para el backend de la instancia de destino.
Crea una red de VPC en modo personalizado.
gcloud compute networks create VPC_NAME \ --subnet-mode=custom
Dentro de la red de VPC, crea una subred de pila doble.
gcloud compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --range=IPV4_ADDRESS_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --region=REGION
En IPV4_ADDRESS_RANGE, puedes ingresar cualquier rango de IPv4 principal para la subred nueva, en notación CIDR. Por ejemplo,
192.168.11.0/24
Para obtener más información, consulta Rangos de subredes IPv4.Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una VM de doble pila
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'
Crea una instancia de destino que contenga la VM creada en el paso anterior.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Reserva una dirección IPv4 externa estática.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
Crea una regla de reenvío de IPv4 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Reserva una dirección IPv6 externa estática.
gcloud compute addresses create IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLB
Crea una regla de reenvío de IPv6 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Prueba tu configuración.
Obtén la dirección IP de las reglas de reenvío.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Realiza solicitudes web al balanceador de cargas mediante curl para contactar a su dirección IP. Reemplaza
IP_ADDRESS
por la dirección IP del paso anterior.Para el tráfico IPv4, haz lo siguiente:
while true; do curl -m1 IP_ADDRESS; done
Para el tráfico IPv6, haz lo siguiente:
curl -6 'http://[IP_ADDRESS]:80'
El resultado es similar al siguiente, en el que se muestra el nombre de la VM de backend que genera la respuesta.
Page served from: VM_INSTANCE_NAME.
Solo IPv6
El control solo del tráfico IPv6 requiere una subred solo IPv6 con una instancia de VM solo IPv6 para el backend de la instancia de destino.
Crea una red de VPC en modo personalizado.
gcloud beta compute networks create VPC_NAME \ --subnet-mode=custom
Dentro de la red de VPC, crea una subred de solo IPv6.
gcloud beta compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --stack-type=IPV6_ONLY \ --ipv6-access-type=EXTERNAL \ --region=REGION
Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una VM solo con 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'
Crea una instancia de destino que contenga la VM creada en el paso anterior.
gcloud beta compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Reserva una dirección IPv6 externa estática.
gcloud beta compute addresses create IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLB
Crea una regla de reenvío de IPv6 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Realiza solicitudes web al balanceador de cargas mediante curl para contactar a su dirección IP. Reemplaza
IPV6_ADDRESS
por la dirección IP del paso anterior.curl -6 'http://[IPV6_ADDRESS]:80'
El resultado es similar al siguiente, en el que se muestra el nombre de la VM de backend que genera la respuesta.
Page served from: VM_INSTANCE_NAME.
Configura el reenvío de protocolos internos
En esta sección, se muestra cómo configurar el reenvío de protocolos internos mediante una regla de reenvío para reenviar el tráfico de TCP a una sola instancia de destino. Existen instrucciones independientes para el tráfico de solo IPv4, de pila doble y de solo IPv6.
Para este ejemplo, debes crear una instancia de destino que contenga una sola instancia de VM con un servidor Apache instalado. Luego, crearás una regla de reenvío regional interna que reenvíe el tráfico a la instancia de destino.
Solo IPv4
Para simplificar, en este ejemplo se usan la red y las subredes predeterminadas para configurar el reenvío de protocolos internos.
Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una regla de firewall para permitir la conectividad SSH a las VMs con la etiqueta de red
allow-ssh
. Esto se usa para establecer una conexión SSH a la VM del 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
Crea una 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'
Crea una instancia de destino que contenga la VM creada en el paso anterior. Debes crear una instancia de destino antes de poder crear un objeto de regla de reenvío porque la regla de reenvío debe hacer referencia a un recurso de destino existente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Crea la regla de reenvío que reenvía el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Crea una VM de cliente de prueba.
gcloud compute instances create CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Ahora puedes probar la configuración de reenvío de protocolos si envías tráfico desde esta VM cliente a la dirección IP de la regla de reenvío.
Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Establece una conexión SSH a la VM del cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Realiza solicitudes al balanceador de cargas mediante curl para contactar a su dirección IP.
while true; do curl -m1 IP_ADDRESS; done
El resultado es similar al siguiente, en el que se muestra el nombre de la VM de backend que genera la respuesta.
Page served from: VM_INSTANCE_NAME.
Pila doble
El control del tráfico IPv4 e IPv6 requiere una subred de pila doble con una instancia de VM de pila doble para el backend de la instancia de destino.
Crea una red de VPC en modo personalizado con la marca
--enable-ula-internal-ipv6
para configurar rangos de IPv6 internos en cualquier subred de esta red.gcloud compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Dentro de la red de VPC, crea una subred de pila doble.
gcloud compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --range=IPV4_ADDRESS_RANGE \ --region=REGION \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=INTERNAL
En IPV4_ADDRESS_RANGE, puedes ingresar cualquier rango de IPv4 principal para la subred nueva, en notación CIDR. Por ejemplo,
192.168.11.0/24
Para obtener más información, consulta Rangos de subredes IPv4.Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una regla de firewall para permitir la conectividad SSH a las VMs mediante la etiqueta de red
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 regla de firewall se aplica a una VM de cliente (creada en uno de los siguientes pasos) a la que te conectas mediante SSH para enviar tráfico HTTP a la dirección IP de la regla de reenvío.
Crea una VM de doble pila
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'
Crea una instancia de destino que contenga la VM creada en el paso anterior.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Crea una regla de reenvío de IPv4 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Crea una regla de reenvío de IPv6 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Crea una 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
Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Establece una conexión SSH a la VM del cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Realiza una solicitud HTTP a la dirección IP de la regla de reenvío mediante curl.
Para el tráfico IPv4, haz lo siguiente:
while true; do curl -m1 IP_ADDRESS; done
Para el tráfico IPv6, haz lo siguiente:
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
El resultado es similar al siguiente, en el que el nombre de la VM de backend que genera la respuesta se muestra en el texto.
Page served from: VM_INSTANCE_NAME.
Solo IPv6
El control del tráfico solo de IPv6 requiere una subred solo de IPv6 con una instancia de VM solo de IPv6 para el backend de la instancia de destino.
Crea una red de VPC en modo personalizado con la marca
--enable-ula-internal-ipv6
para configurar rangos de IPv6 internos en cualquier subred de esta red.gcloud beta compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Dentro de la red de VPC, crea una subred de solo IPv6.
gcloud beta compute networks subnets create SUBNET_NAME \ --network=VPC_NAME \ --region=REGION \ --stack-type=IPV6_ONLY \ --ipv6-access-type=INTERNAL
Crea una regla de firewall que permita que el tráfico externo llegue a la instancia 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
Crea una regla de firewall para permitir la conectividad SSH a las VMs mediante la etiqueta de red
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 regla de firewall se aplica a una VM de cliente (creada en uno de los siguientes pasos) a la que te conectas mediante SSH para enviar tráfico HTTP a la dirección IP de la regla de reenvío.
Crea una VM solo con 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'
Crea una instancia de destino que contenga la VM creada en el paso anterior.
gcloud beta compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Crea una regla de reenvío de IPv6 que reenvíe el tráfico de TCP a la instancia de destino. La regla de reenvío debe crearse en la misma región en la que se creó la instancia de destino.
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
Crea una 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
Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Establece una conexión SSH a la VM del cliente.
gcloud beta compute ssh CLIENT_VM_NAME \ --zone=ZONE
Realiza una solicitud HTTP a la dirección IP de la regla de reenvío mediante curl.
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
El resultado es similar al siguiente, en el que el nombre de la VM de backend que genera la respuesta se muestra en el texto.
Page served from: VM_INSTANCE_NAME.