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 IPv4 e 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.
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/0Crea una VM. Para este ejemplo, estamos configurando 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 ; doneEl 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 .
El control del tráfico de 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=customDentro de la red de VPC, crea una subred de pila doble.
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 El rango
192.168.11.0/24
es solo un rango de IPv4 de ejemplo. Puedes ingresar cualquier rango de IPv4 principal para la subred nueva, en notación CIDR. 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=::/0Crea 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 IPv6 externa estática.
gcloud compute addresses create
IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLBCrea 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=80Prueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
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
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 IPv4 e 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.
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-int \ --allow=tcp \ --source-ranges=0.0.0.0/0Crea 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/0Crea 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-sshAhora 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 ; doneEl 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 .
El control del tráfico de 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-ipv6Dentro de la red de VPC, crea una subred de pila doble.
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=INTERNALEl rango
192.168.11.0/24
es solo un rango de IPv4 de ejemplo. Puedes ingresar cualquier rango de IPv4 principal para la subred nueva, en notación CIDR. 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=::/0Crea 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/0Esta 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 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=IPV6Crea 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-sshPrueba tu configuración.
Obtén la dirección IP de la regla de reenvío.
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.
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 .