Ce document explique comment configurer le transfert de protocole interne et externe. Avant de configurer le transfert de protocole, consultez la page Présentation du transfert de protocole.
Configurer le transfert de protocole externe
Cette section explique comment configurer le transfert de protocole externe à l'aide d'une règle de transfert pour transférer le trafic TCP vers une seule instance cible. Il existe des instructions distinctes pour le trafic IPv4 et IPv6.
Pour configurer le transfert de protocole externe, vous devez créer une instance cible contenant une seule instance de VM. Vous créez ensuite une règle de transfert externe régionale qui transfère le trafic vers l'instance cible.
IPv4
Par souci de simplicité, cet exemple utilise le réseau et les sous-réseaux par défaut.
Créez une règle de pare-feu permettant au trafic externe d'atteindre l'instance cible.
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
Créez une VM. Dans cet exemple, nous configurons un serveur Apache sur 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'
Créez une instance cible contenant la VM créée à l'étape précédente. Vous devez créer une instance cible avant de pouvoir créer un objet de règle de transfert, car la règle de transfert doit faire référence à une ressource cible existante.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Réservez une adresse IPv4 statique externe.
gcloud compute addresses create IPV4_ADDRESS \ --region=REGION
Créez la règle de transfert qui transfère le trafic TCP vers l'instance cible. La règle de transfert doit être créée dans la même région que l'instance cible.
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
Testez votre configuration.
Obtenez l'adresse IP de votre règle de transfert.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Envoyez des requêtes Web à l'équilibreur de charge à l'aide de curl pour contacter son adresse IP. Remplacez
IP_ADDRESS
par l'adresse IP de l'étape précédente.$ while true; do curl -m1 IP_ADDRESS; done
Le résultat ressemble à ce qui suit, le nom affiché étant celui de la VM de backend qui génère la réponse.
Page served from: VM_INSTANCE_NAME.
IPv6
La gestion du trafic IPv6 nécessite un sous-réseau à double pile avec une instance de VM à double pile pour le backend d'instance cible.
Créez un réseau VPC en mode personnalisé.
gcloud compute networks create VPC_NAME \ --subnet-mode=custom
Dans le réseau VPC, créez un sous-réseau à double pile.
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
La plage
192.168.11.0/24
n'est qu'un exemple de plage IPv4. Vous pouvez saisir n'importe quelle plage IPv4 principale pour le nouveau sous-réseau, au format CIDR. Pour en savoir plus, consultez la section sur les plages de sous-réseaux IPv4.Créez une règle de pare-feu permettant au trafic externe d'atteindre l'instance cible.
gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \ --network=VPC_NAME \ --target-tags=allow-ipv6-ext \ --allow=tcp:80 \ --source-ranges=::/0
Créez une VM à double pile.
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'
Créez une instance cible contenant la VM créée à l'étape précédente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Réservez une plage d'adresses IPv6 statique externe.
gcloud compute addresses create IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLB
Créez une règle de transfert IPv6 qui transfère le trafic TCP vers l'instance cible. La règle de transfert doit être créée dans la même région que l'instance cible.
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
Testez votre configuration.
Obtenez l'adresse IP de la règle de transfert.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Envoyez des requêtes Web à l'équilibreur de charge à l'aide de curl pour contacter son adresse IP. Remplacez
IPV6_ADDRESS
par l'adresse IP de l'étape précédente.curl -6 'http://[IPV6_ADDRESS]:80'
Le résultat ressemble à ce qui suit, le nom affiché étant celui de la VM de backend qui génère la réponse.
Page served from: VM_INSTANCE_NAME.
Configurer le transfert de protocole interne
Cette section explique comment configurer le transfert de protocole interne à l'aide d'une règle de transfert pour transférer le trafic TCP vers une seule instance cible. Il existe des instructions distinctes pour le trafic IPv4 et IPv6.
Dans cet exemple, vous créez une instance cible contenant une seule instance de VM dans laquelle un serveur Apache est installé. Vous créez ensuite une règle de transfert interne régionale qui transfère le trafic vers l'instance cible.
IPv4
Par souci de simplicité, cet exemple utilise le réseau et les sous-réseaux par défaut.
Créez une règle de pare-feu permettant au trafic interne d'atteindre l'instance cible.
gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \ --target-tags=allow-ipv4-int \ --allow=tcp \ --source-ranges=0.0.0.0/0
Créez une règle de pare-feu pour autoriser la connectivité SSH aux VM avec le tag réseau
allow-ssh
. Cela permet d'établir une connexion SSH à la VM 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
Créez une 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'
Créez une instance cible contenant la VM créée à l'étape précédente. Vous devez créer une instance cible avant de pouvoir créer un objet de règle de transfert, car la règle de transfert doit faire référence à une ressource cible existante.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE
Créez la règle de transfert qui transfère le trafic TCP vers l'instance cible. La règle de transfert doit être créée dans la même région que l'instance cible.
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
Créez une VM cliente de test.
gcloud compute instances create CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh
Vous pouvez maintenant tester la configuration du transfert de protocole en envoyant le trafic de cette VM cliente vers l'adresse IP de la règle de transfert.
Testez votre configuration.
Obtenez l'adresse IP de votre règle de transfert.
gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \ --region=REGION
Établissez une connexion SSH avec la VM cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Envoyez des requêtes à l'équilibreur de charge à l'aide de curl pour contacter son adresse IP.
$ while true; do curl -m1 IP_ADDRESS; done
Le résultat ressemble à ce qui suit, le nom affiché étant celui de la VM de backend qui génère la réponse.
Page served from: VM_INSTANCE_NAME.
IPv6
La gestion du trafic IPv6 nécessite un sous-réseau à double pile avec une instance de VM à double pile pour le backend d'instance cible.
Créez un réseau VPC en mode personnalisé avec l'option
--enable-ula-internal-ipv6
pour configurer des plages IPv6 internes sur n'importe quel sous-réseau de ce réseau.gcloud compute networks create VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Dans le réseau VPC, créez un sous-réseau à double pile.
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
La plage
192.168.11.0/24
n'est qu'un exemple de plage IPv4. Vous pouvez saisir n'importe quelle plage IPv4 principale pour le nouveau sous-réseau, au format CIDR. Pour en savoir plus, consultez la section sur les plages de sous-réseaux IPv4.Créez une règle de pare-feu permettant au trafic interne d'atteindre l'instance cible.
gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \ --network=VPC_NAME \ --target-tags=allow-ipv6-int \ --allow=tcp \ --source-ranges=::/0
Créez une règle de pare-feu pour autoriser la connectivité SSH aux VM en utilisant le tag réseau
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
Cette règle de pare-feu est appliquée à une VM cliente (créée à l'une des étapes suivantes) à laquelle vous vous connecterez via SSH pour envoyer du trafic HTTP à l'adresse IP de la règle de transfert.
Créez une VM à double pile.
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'
Créez une instance cible contenant la VM créée à l'étape précédente.
gcloud compute target-instances create TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE
Créez une règle de transfert IPv6 qui transfère le trafic TCP vers l'instance cible. La règle de transfert doit être créée dans la même région que l'instance cible.
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
Créez une VM 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
Testez votre configuration.
Obtenez l'adresse IP de la règle de transfert.
gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \ --region=REGION
Établissez une connexion SSH avec la VM cliente.
gcloud compute ssh CLIENT_VM_NAME \ --zone=ZONE
Envoyez une requête HTTP à l'adresse IP de la règle de transfert à l'aide de curl.
curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
Le résultat ressemble à ce qui suit. Le nom de la VM de backend générant la réponse est affiché dans le texte.
Page served from: VM_INSTANCE_NAME.