Configura il doppio stack (IPv4 e IPv6)

Le subnet a doppio stack consentono alle risorse App Engine di inviare traffico IPv4 e IPv6 a una rete VPC con traffico in uscita VPC diretto. Puoi modificare una subnet solo IPv4 (stack singolo) esistente in una subnet a doppio stack.

Tipi di subnet

Le reti VPC supportano i seguenti tipi di subnet Compute Engine:

Limitazioni del doppio stack

Prima di modificare il tipo di stack su una risorsa App Engine esistente, tieni presente le seguenti limitazioni:

  • Il supporto dual-stack è disponibile solo con le subnet in una rete VPC in modalità personalizzata. Affinché il tipo di accesso interno sia disponibile per le subnet a doppio stack, è necessario abilitare l'intervallo IPv6 interno della rete VPC. Configura o converti la rete VPC in modalità personalizzata.

  • Rispetto alle subnet solo IPv4, le subnet a doppio stack potrebbero riscontrare latenze di avvio a freddo elevate, limitando la velocità con cui la tua applicazione può fare lo scale up.

  • NAT64 non è supportato.

Prima di iniziare

Assicurati che l'agente di servizio App Engine disponga del ruolo Amministratore IP pubblico Compute (roles/compute.publicIpAdmin) per utilizzare la subnet con IPv6 esterno.

Configurare una subnet a doppio stack

Le subnet a doppio stack hanno intervalli di indirizzi IPv4 e IPv6.

Per configurare una subnet a doppio stack, puoi utilizzare la Google Cloud console o il Google Cloud CLI:

Console

  1. Vai alla Google Cloud console e abilita l'API Compute Engine:

    Abilita l'API Compute Engine

  2. Vai alla pagina Reti VPC:

    Vai a Reti VPC

  3. Fai clic su Crea rete VPC se stai creando una nuova rete in modalità personalizzata. Se utilizzi una rete VPC esistente, fai clic sul nome della rete VPC per visualizzare la pagina Dettagli rete VPC.

  4. Se stai creando una nuova rete o convertendo una rete esistente, inserisci il nome e assicurati che la Modalità di creazione della subnet sia impostata su Personalizzata, quindi seleziona Configura un intervallo IPv6 interno ULA per questa rete VPC.

  5. Nella scheda Subnet, fai clic su Aggiungi subnet. Nel riquadro visualizzato:

    1. Fornisci un nome.
    2. Seleziona una regione.
    3. Per Tipo di stack IP, seleziona IPv4 e IPv6 (stack doppio).
    4. Inserisci un intervallo IPv4. Questo è l' intervallo IPv4 principale per la subnet.
    5. Seleziona il tipo di accesso IPv6.

      Se l'opzione Interno non è disponibile e ne hai bisogno, verifica che sia assegnato un intervallo IPv6 interno alla rete.

    6. Fai clic su Aggiungi.

gcloud

  1. Per creare una rete in modalità personalizzata che supporti le subnet a doppio stack, esegui il comando gcloud compute networks create.

    Per configurare gli intervalli IPv6 interni su qualsiasi subnet in questa rete, utilizza il flag --enable-ula-internal-ipv6. Questa opzione assegna un prefisso ULA /48 dall'intervallo fd20::/20 utilizzato per Google Cloud gli intervalli di subnet IPv6 interni.

    gcloud compute networks create NETWORK \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6

    Sostituisci NETWORK con il nome della rete VPC che conterrà la nuova subnet.

  2. Per convertire o aggiornare una rete in modalità personalizzata in modo che supporti le subnet a doppio stack, esegui il comando seguente:

    gcloud compute networks update NETWORK \
      --switch-to-custom-subnet-mode \
      --enable-ula-internal-ipv6

    Sostituisci NETWORK con il nome della rete VPC che conterrà la nuova subnet.

  3. Per creare una subnet a doppio stack con un intervallo IPv6, esegui il subnets create comando utilizzando le impostazioni a doppio stack:

    gcloud compute networks subnets create SUBNET \
      --network=NETWORK \
      --range=PRIMARY_IPv4_RANGE \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=IPV6_ACCESS_TYPE \
      --region=REGION

    Sostituisci quanto segue:

    • SUBNET: un nome per la nuova subnet.
    • NETWORK: il nome della rete VPC che conterrà la nuova subnet.
    • PRIMARY_IPv4_RANGE: l'intervallo IPv4 principale per la nuova subnet, in notazione CIDR. Per ulteriori informazioni, vedi Intervalli di subnet IPv4.
    • IPV6_ACCESS_TYPE: il tipo di accesso IPv6 per la nuova subnet, internal o external.
    • REGION: la Google Cloud regione in cui verrà creata la nuova subnet.

Aggiungere la subnet a doppio stack a una risorsa App Engine

Dopo aver creato una subnet a doppio stack, configura il servizio App Engine in modo che utilizzi la subnet:

  1. Nel file app.yaml, specifica la rete e la subnet nel campo vpc_access:

    vpc_access:
      network_interface:
        network: NETWORK
        subnet: SUBNET
      vpc_egress: EGRESS_SETTING

    Sostituisci quanto segue:

    • NETWORK: il nome della rete creata nel passaggio precedente.

    • SUBNET: il nome della subnet creata nel passaggio precedente.

    • (Facoltativo) EGRESS_SETTING: controlla come viene indirizzato il traffico in uscita. Questo campo supporta le seguenti impostazioni di configurazione:

      • all-traffic: tutte le richieste in uscita vengono indirizzate tramite la rete VPC.
      • private-ranges-only (impostazione predefinita): solo il traffico verso gli indirizzi IP interni viene indirizzato tramite la rete VPC. Il traffico internet utilizza il percorso App Engine predefinito.
  2. Esegui il deployment su App Engine eseguendo il comando seguente:

    gcloud beta app deploy

Modificare una subnet da stack singolo a doppio stack

Per aggiungere un intervallo di subnet IPv6 a una subnet solo IPv4 esistente in una rete VPC in modalità personalizzata, vedi Modificare il tipo di stack di una subnet in doppio stack. Quindi, esegui il deployment del servizio App Engine sulla subnet a doppio stack.

Modificare una subnet da doppio stack a stack singolo

Per modificare la subnet a doppio stack di una risorsa in una subnet a stack singolo, vedi Modificare una subnet a doppio stack in solo IPv4. Quindi, esegui il deployment del servizio App Engine sulla subnet a doppio stack.

Verificare la rete e la subnet

Per verificare che la risorsa si trovi nella rete VPC, esegui il comando seguente:

gcloud beta app versions describe VERSION --service=SERVICE

Sostituisci quanto segue:

  • VERSION: la versione di cui è stato eseguito il deployment del servizio
  • SERVICE: il servizio di cui è stato eseguito il deployment

L'esempio di output seguente mostra la rete e la subnet:

  vpcAccess:
  networkInterfaces:
  - network: projects/YOUR_PROJECT/global/networks/YOUR_NETWORK
    subnet: projects/YOUR_PROJECT/regions/YOUR_REGION/subnetworks/YOUR_SUBNET
  vpcEgress: ALL_TRAFFIC/PRIVATE_RANGES_ONLY