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.
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/0Cré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 ; doneLe 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 .
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=customDans 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=::/0Cré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=NETLBCré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=80Testez 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.
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/0Cré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/0Cré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-sshVous 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 ; doneLe 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 .
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-ipv6Dans 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=INTERNALLa 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=::/0Cré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/0Cette 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=IPV6Cré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-sshTestez 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 .