Configura l'inoltro del protocollo

Questo documento contiene le istruzioni per configurare l'inoltro del protocollo per l'inoltro del protocollo interno ed esterno. Prima di configurare l'inoltro del protocollo, consulta Panoramica dell'inoltro del protocollo.

Configura l'inoltro del protocollo esterno

Questa sezione mostra come configurare l'inoltro del protocollo esterno 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 del protocollo esterno, crea un'istanza di destinazione che contiene una singola istanza VM. Quindi creerai una regola di forwarding a livello di regione esterna che inoltra il traffico all'istanza di destinazione.

IPv4

Per semplicità, in questo esempio vengono utilizzate la rete e le subnet predefinite.

  1. Crea una regola firewall che consente 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
    
  2. Creare una VM. Per questo esempio, configuriamo un server Apache sulla 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'
    
  3. Crea un'istanza di destinazione contenente la VM creata nel passaggio precedente. Devi creare un'istanza di destinazione prima di poter creare un oggetto della 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
    
  4. Prenota un indirizzo IPv4 esterno statico.

    gcloud compute addresses create IPV4_ADDRESS \
      --region=REGION
    
  5. 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
    
  6. Testa la configurazione.

    1. Recupera l'indirizzo IP della regola di forwarding.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
        --region=REGION
      
    2. Effettua 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 ha generato 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.

  1. Crea una rete VPC in modalità personalizzata.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom
    
  2. 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 intervallo IPv4 di esempio. Puoi inserire qualsiasi intervallo IPv4 principale per la nuova subnet, con la notazione CIDR. Per ulteriori informazioni, consulta Intervalli di subnet IPv4.

  3. Crea una regola firewall che consente 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
    
  4. Creare una VM a due stack.

    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'
    
  5. 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
    
  6. Prenota un intervallo di indirizzi IPv6 esterni statico.

    gcloud compute addresses create IPV6_ADDRESS \
      --region=REGION \
      --subnet=SUBNET_NAME \
      --ip-version=IPV6 \
      --endpoint-type=NETLB
    
  7. Crea una regola di forwarding IPv6 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 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
    
  8. Testa la configurazione.

    1. Recupera l'indirizzo IP della regola di forwarding.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Effettua 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 ha generato la risposta.

      Page served from: VM_INSTANCE_NAME.
      

Configura l'inoltro del protocollo interno

Questa sezione mostra come configurare l'inoltro 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, creerai un'istanza di destinazione contenente una singola istanza VM su cui è installato un server Apache. Quindi creerai una regola di forwarding a livello di regione interna che inoltra il traffico all'istanza di destinazione.

IPv4

Per semplicità, in questo esempio vengono utilizzate la rete e le subnet predefinite.

  1. Crea una regola firewall che consente 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
    
  2. Crea una regola firewall per consentire la connettività SSH alle VM con il tag di rete allow-ssh. Questo 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
    
  3. Creare 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'
    
  4. Crea un'istanza di destinazione contenente la VM creata nel passaggio precedente. Devi creare un'istanza di destinazione prima di poter creare un oggetto della 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
    
  5. 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
    
  6. Creare una VM client di test.

    gcloud compute instances create CLIENT_VM_NAME \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ssh
    

    Ora puoi testare la configurazione del forwarding del protocollo inviando il traffico da questa VM client all'indirizzo IP della regola di forwarding.

  7. Testa la configurazione.

    1. Recupera l'indirizzo IP della regola di forwarding.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Stabilisci una connessione SSH alla VM client.

      gcloud compute ssh CLIENT_VM_NAME \
      --zone=ZONE
      
    3. Effettua 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 ha generato 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.

  1. Crea una rete VPC in modalità personalizzata con il flag --enable-ula-internal-ipv6 per configurare intervalli IPv6 interni su tutte le subnet di questa rete.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6
    
  2. 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 intervallo IPv4 di esempio. Puoi inserire qualsiasi intervallo IPv4 principale per la nuova subnet, con la notazione CIDR. Per ulteriori informazioni, consulta Intervalli di subnet IPv4.

  3. Crea una regola firewall che consente 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
    
  4. 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.

  5. Creare una VM a due stack.

    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'
    
  6. 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
    
  7. Crea una regola di forwarding IPv6 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 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
    
  8. Creare una VM client.

    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
    
  9. Testa la configurazione.

    1. Recupera l'indirizzo IP della regola di forwarding.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Stabilisci una connessione SSH alla VM client.

      gcloud compute ssh CLIENT_VM_NAME \
       --zone=ZONE
      
    3. Effettua 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, dove il nome della VM di backend che ha generato la risposta viene visualizzato nel testo.

      Page served from: VM_INSTANCE_NAME.
      

Passaggi successivi