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.
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, estamos configurando un servidor Apache en la 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'
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.
IPv6
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=custom
Dentro 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=::/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-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'
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=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 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.
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-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-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'
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-10 \ --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 de 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.
IPv6
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-ipv6
Dentro 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=INTERNAL
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-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-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'
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=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-10 \ --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 IPV6_FORWARDING_RULE_NAME \ --region=REGION
Establece una conexión SSH a la VM de 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.