Questo documento contiene le istruzioni per configurare l'inoltro del protocollo sia per l'inoltro interno che per quello esterno. Prima di configurare l'inoltro del protocollo, leggi la Panoramica dell'inoltro del protocollo.
Configurare l'inoltro di protocolli esterni
Questa sezione mostra come configurare il forwarding di protocolli esterni utilizzando una regola di forwarding per inoltrare il traffico TCP a una singola istanza di destinazione. Esistono istruzioni separate per il traffico IPv4 e IPv6.
Per configurare il forwarding di protocollo esterno, crea un'istanza di destinazione che contiene una singola istanza VM. Poi, crea una regola di inoltro regionale esterna che inoltri il traffico all'istanza di destinazione.
IPv4
Per semplicità, questo esempio utilizza la rete e le subnet predefinite.
Crea una regola firewall che consenta al traffico esterno di raggiungere l'istanza di destinazione.
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. Per questo esempio, stiamo configurando un server Apache sulla 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 un'istanza di destinazione contenente la VM creata nel passaggio precedente. Devi creare un'istanza di destinazione prima di poter creare un oggetto regola di forwarding, perché la regola di forwarding deve fare riferimento a una risorsa di destinazione esistente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Prenota un indirizzo IPv4 esterno statico.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
Crea la regola di forwarding che inoltra il traffico TCP all'istanza di destinazione. La regola di forwarding deve essere creata nella stessa regione in cui è stata creata l'istanza di destinazione.
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
Testa la configurazione.
Ottieni l'indirizzo IP della regola di forwarding.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Invia richieste web al bilanciatore del carico utilizzando curl per contattare il relativo indirizzo IP. Sostituisci
IP_ADDRESS
con l'indirizzo IP del passaggio precedente.$ while true; do curl -m1 IP_ADDRESS; done
L'output è simile al seguente, dove viene visualizzato il nome della VM di backend che genera la risposta.
Page served from: VM_INSTANCE_NAME.
IPv6
La gestione del traffico IPv6 richiede una subnet a doppio stack con un'istanza VM a doppio stack per il backend dell'istanza di destinazione.
Crea una rete VPC in modalità personalizzata.
gcloud compute networks create VPC_NAME \ --subnet-mode=custom
All'interno della rete VPC, crea una subnet a doppio stack.
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
L'intervallo
192.168.11.0/24
è solo un esempio di intervallo IPv4. Puoi inserire qualsiasi intervallo IPv4 principale per la nuova subnet in notazione CIDR. Per maggiori informazioni, consulta Intervalli di subnet IPv4.Crea una regola firewall che consenta al traffico esterno di raggiungere l'istanza di destinazione.
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 dual-stack.
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 un'istanza di destinazione contenente la VM creata nel passaggio precedente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Prenota un intervallo di indirizzi IPv6 esterni statici.
gcloud compute addresses create IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLB
Crea una regola di forwarding IPv6 che inoltri il traffico TCP all'istanza di destinazione. La regola di forwarding deve essere creata nella stessa regione in cui è stata creata l'istanza di destinazione.
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
Testa la configurazione.
Ottieni l'indirizzo IP della regola di forwarding.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Invia richieste web al bilanciatore del carico utilizzando curl per contattare il relativo indirizzo IP. Sostituisci
IPV6_ADDRESS
con l'indirizzo IP del passaggio precedente.curl -6 'http://[IPV6_ADDRESS]:80'
L'output è simile al seguente, dove viene visualizzato il nome della VM di backend che genera la risposta.
Page served from: VM_INSTANCE_NAME.
Configura il forwarding del protocollo interno
Questa sezione mostra come configurare il forwarding del protocollo interno utilizzando una regola di forwarding per inoltrare il traffico TCP a una singola istanza di destinazione. Esistono istruzioni separate per il traffico IPv4 e IPv6.
Per questo esempio, crea un'istanza di destinazione contenente una singola istanza VM con un server Apache installato. Poi crea una regola di forwarding regionale interna che inoltri il traffico all'istanza di destinazione.
IPv4
Per semplicità, questo esempio utilizza la rete e le subnet predefinite.
Crea una regola firewall che consenta al traffico interno di raggiungere l'istanza di destinazione.
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 regola firewall per consentire la connettività SSH alle VM con il tag di rete
allow-ssh
. Viene utilizzato per stabilire una connessione SSH alla VM client.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 un'istanza di destinazione contenente la VM creata nel passaggio precedente. Devi creare un'istanza di destinazione prima di poter creare un oggetto regola di forwarding, perché la regola di forwarding deve fare riferimento a una risorsa di destinazione esistente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Crea la regola di forwarding che inoltra il traffico TCP all'istanza di destinazione. La regola di forwarding deve essere creata nella stessa regione in cui è stata creata l'istanza di destinazione.
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 client di test.
gcloud compute instances create CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Ora puoi testare la configurazione del forwarding del protocollo inviando traffico da questa VM client all'indirizzo IP della regola di forwarding.
Testa la configurazione.
Ottieni l'indirizzo IP della regola di forwarding.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Stabilisci una connessione SSH alla VM client.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Invia richieste al bilanciatore del carico utilizzando curl per contattare il relativo indirizzo IP.
$ while true; do curl -m1 IP_ADDRESS; done
L'output è simile al seguente, dove viene visualizzato il nome della VM di backend che genera la risposta.
Page served from: VM_INSTANCE_NAME.
IPv6
La gestione del traffico IPv6 richiede una subnet a doppio stack con un'istanza VM a doppio stack per il backend dell'istanza di destinazione.
Crea una rete VPC in modalità personalizzata con il flag
--enable-ula-internal-ipv6
per configurare gli intervalli IPv6 interni su eventuali subnet di questa rete.gcloud compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
All'interno della rete VPC, crea una subnet a doppio stack.
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
L'intervallo
192.168.11.0/24
è solo un esempio di intervallo IPv4. Puoi inserire qualsiasi intervallo IPv4 principale per la nuova subnet in notazione CIDR. Per maggiori informazioni, consulta Intervalli di subnet IPv4.Crea una regola firewall che consenta al traffico interno di raggiungere l'istanza di destinazione.
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 regola firewall per consentire la connettività SSH alle VM utilizzando il tag di rete
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
Questa regola firewall viene applicata a una VM client (creata in uno dei passaggi seguenti) a cui ti connetti utilizzando SSH per inviare traffico HTTP all'indirizzo IP della regola di forwarding.
Crea una VM dual-stack.
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 un'istanza di destinazione contenente la VM creata nel passaggio precedente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Crea una regola di forwarding IPv6 che inoltri il traffico TCP all'istanza di destinazione. La regola di forwarding deve essere creata nella stessa regione in cui è stata creata l'istanza di destinazione.
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 client.
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
Testa la configurazione.
Ottieni l'indirizzo IP della regola di forwarding.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Stabilisci una connessione SSH alla VM client.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Invia una richiesta HTTP all'indirizzo IP della regola di forwarding utilizzando curl.
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
L'output è simile al seguente, in cui il nome della VM di backend che genera la risposta viene visualizzato nel testo.
Page served from: VM_INSTANCE_NAME.