Crea macchine virtuali con più interfacce di rete

Questa pagina descrive come creare istanze di macchine virtuali con più interfacce di rete.

Prima di iniziare

Prima di iniziare, assicurati di avere familiarità con le caratteristiche delle istanze con più interfacce di rete, come descritto nella Panoramica sulle interfacce di rete multiple.

Ruoli IAM

Per creare un'istanza con più interfacce di rete, è necessario disporre di uno dei seguenti ruoli:

Creazione ed eliminazione di istanze e modelli di istanza con più interfacce in un progetto che non utilizza un ambiente VPC condiviso: Un utente con il ruolo Proprietario, Editor o Amministratore istanze Compute (v1) può creare un'istanza con più interfacce associate a reti e sottoreti VPC che fanno parte dello stesso progetto.

Creazione ed eliminazione di istanze e modelli di istanza con più interfacce negli ambienti VPC condiviso: Un utente con il ruolo Proprietario, Editor o Amministratore istanze Compute (v1) può creare un'istanza con più interfacce. Se una qualsiasi delle interfacce è collegata a una sottorete in un progetto host VPC condiviso, è necessario disporre anche del ruolo Utente di rete di calcolo (roles/compute.networkUser) per l'intero progetto host o per le sottoreti che si desidera utilizzare.

Per saperne di più sulle autorizzazioni, consulta la documentazione Compute Engine IAM.

Crea istanze VM con più interfacce di rete

Questa sezione descrive come creare un'istanza con più interfacce di rete, incluse vNIC e NIC dinamiche. Per istruzioni generali sulla creazione di istanze, consulta Crea e avvia un'istanza VM.

La prima interfaccia viene sempre creata come nic0 ed è sempre l'interfaccia predefinita.

Console

  1. Nella console Google Cloud , vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Nel riquadro Configurazione macchina, segui questi passaggi:

    1. Nel campo Nome, inserisci un nome per l'istanza.
    2. Nel campo Regione, seleziona una regione.
    3. Nel campo Zona, seleziona una zona.
  3. Nel menu di navigazione, fare clic su Rete per visualizzare il riquadro Rete.

  4. Nella sezione Interfacce di rete, espandi l'interfaccia di rete per modificarla.

    1. Per Rete e Subnet, seleziona la rete e la subnet che vuoi utilizzare.

      Se si desidera configurare gli indirizzi IPv6 sull'interfaccia, selezionare una sottorete che abbia un intervallo di indirizzi IPv6 /64 configurato. Il tipo di accesso IPv6 della sottorete determina se l'istanza riceve un intervallo di indirizzi IPv6 interno /96 o un intervallo di indirizzi IPv6 esterno /96.

    2. Selezionare una delle seguenti opzioni per il tipo di stack IP per l'interfaccia:

      • IPv4 (stack singolo)
      • IPv4 e IPv6 (dual-stack)
      • IPv6 (stack singolo)
    3. Per le interfacce con indirizzi IPv4:

      1. Per Indirizzo IPv4 interno principale, seleziona una delle seguenti opzioni:

        • Effimero (Automatico) per assegnare automaticamente un nuovo indirizzo IPv4 effimero
        • Effimero (Personalizzato) per specificare manualmente un nuovo indirizzo IPv4 effimero
        • Un indirizzo IPv4 interno statico riservato dall'elenco
        • Prenota indirizzo IPv4 interno statico per prenotare e assegnare un nuovo indirizzo IPv4 interno statico
      2. Per Indirizzo IPv4 esterno, seleziona una delle seguenti opzioni:

        • Effimero per assegnare un nuovo indirizzo IPv4 effimero
        • Nessuno per non assegnare un indirizzo IPv4 esterno
        • Un indirizzo IPv4 statico riservato dall'elenco
        • Riserva indirizzo IP esterno statico per riservare e assegnare un nuovo indirizzo IPv4 esterno statico
      3. Se vuoi, puoi assegnare uno o più intervalli IP alias all'interfaccia di rete. Per assegnare un intervallo IP alias, procedi come segue:

        1. In Intervalli IP alias, fai clic su Aggiungi intervallo IP.
        2. In Intervallo di sottorete, selezionare un intervallo di indirizzi IPv4 primario di sottorete o un intervallo di indirizzi IPv4 secondario di sottorete da utilizzare.
        3. Per Intervallo IP alias, inserisci un intervallo IP in notazione CIDR. Questo intervallo deve essere un intervallo non utilizzato dell'intervallo IP della sottorete che hai selezionato.

        Per ulteriori informazioni sull'assegnazione di intervalli IP alias alle interfacce di rete delle VM, vedere Configurare intervalli IP alias.

    4. Per le interfacce con indirizzi IPv6, procedere come segue, a seconda del tipo di accesso della sottorete connessa:

      1. Per Indirizzo IPv6 interno primario, selezionare una delle seguenti opzioni:
        • Effimero (Automatico) per assegnare automaticamente un nuovo intervallo di indirizzi IPv6 interni effimeri
        • Effimero (Personalizzato) per specificare manualmente un nuovo intervallo di indirizzi IPv6 interni effimeri
        • Un intervallo di indirizzi IPv6 interni statici riservati dall'elenco
        • Riserva indirizzo IPv6 interno statico per riservare e assegnare un nuovo intervallo di indirizzi IPv6 interni statici
      2. Per Indirizzo IPv6 esterno, seleziona una delle seguenti opzioni:
        • Temporaneo (automatico) per assegnare automaticamente un nuovo intervallo di indirizzi IPv6 esterni temporanei
        • Effimero (Personalizzato) per specificare manualmente un nuovo intervallo di indirizzi IPv6 esterni effimeri
        • Un intervallo di indirizzi IPv6 esterni statici riservati dall'elenco
        • Riserva indirizzo IPv6 esterno statico per riservare e assegnare un nuovo intervallo di indirizzi IPv6 esterni statici
    5. Per completare la modifica dell'interfaccia di rete, fai clic su Fine.

  5. Per aggiungere un'altra interfaccia di rete:

    1. Per aggiungere una vNIC, fai clic su Aggiungi un'interfaccia di rete e completa il modulo inserendo i dettagli della vNIC.

    2. Per aggiungere una NIC dinamica, fai clic su Aggiungi un'interfaccia di rete dinamica e procedi nel seguente modo:

      1. Nel campo Interfaccia di rete padre, selezionare la vNIC padre per la quale creare la NIC dinamica.
      2. Nel campo VLAN ID, immettere l'ID VLAN della NIC dinamica.
      3. Completa il modulo inserendo i dettagli rimanenti della NIC dinamica.
  6. Continua il processo di creazione dell'istanza.

  7. Fai clic su Crea.

gcloud

Per creare interfacce di rete su una nuova istanza, utilizza il comando gcloud compute instances create.

Includi il flag --network-interface per ogni interfaccia, seguito da eventuali chiavi di rete appropriate, come network, subnet, private-network-ip, address, external-ipv6-address e vlan.

L'inclusione della chiave vlan crea una NIC dinamica. Se crei una NIC dinamica, devi anche seguire i passaggi per configurare il sistema operativo guest per le NIC dinamiche dopo aver creato l'istanza.

Per visualizzare esempi di come creare istanze con più interfacce, consulta le configurazioni di esempio.

Questo frammento illustra solo il flag --network-interface, uno dei tanti parametri possibili che è possibile specificare durante la creazione di un'istanza.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --network-interface \
        network=NETWORK_A,subnet=SUBNET_A, \
        stack-type=STACK_TYPE, \
        private-network-ip=INTERNAL_IPV4_ADDRESS, \
        address=EXTERNAL_IPV4_ADDRESS | no-address, \
        internal-ipv6-address=INTERNAL_IPV6_ADDRESS \
    ...
    --network-interface \
        network=NETWORK_B,subnet=SUBNET_B, \
        stack-type=STACK_TYPE, \
        external-ipv6-address=EXTERNAL_IPV6_ADDRESS, \
        external-ipv6-prefix-length=96, \
        ipv6-network-tier=PREMIUM, \
        vlan=VLAN_ID \
    ...

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza da creare.
  • ZONE: la zona in cui viene creata l'istanza.
  • NETWORK_A, NETWORK_B: la rete a cui è collegata l'interfaccia.
  • SUBNET_A, SUBNET_B: la subnet a cui è collegata l'interfaccia.
  • STACK_TYPE: il tipo di stack per l'interfaccia.

    Il valore predefinito è IPV4_ONLY. Specifica IPV4_IPV6 per configurare un'interfaccia a doppio stack o IPV6_ONLY per configurare un'interfaccia solo IPv6.

  • Valori per le interfacce con indirizzi IPv4:

    • INTERNAL_IPV4_ADDRESS: l'indirizzo IPv4 interno che vuoi che l'interfaccia abbia nella subnet di destinazione. Omettilo se vuoi che venga assegnato un indirizzo valido qualsiasi.
    • EXTERNAL_IPV4_ADDRESS: l'indirizzo IPv4 esterno dell'interfaccia.

      È necessario aver precedentemente riservato un indirizzo IPv4 esterno. Se non vuoi che l'interfaccia abbia un indirizzo IP esterno, specifica "no-address" anziché address=EXTERNAL_IPV4_ADDRESS. Se vuoi che l'interfaccia riceva un indirizzo IP esterno temporaneo, specifica address=''.

  • Valori per le interfacce con indirizzi IPv6:

    • INTERNAL_IPV6_ADDRESS: l'intervallo di indirizzi IPv6 interni che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un intervallo di indirizzi IPv6 interni dalla subnet.
    • EXTERNAL_IPV6_ADDRESS: l'intervallo di indirizzi IPv6 esterni che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un intervallo di indirizzi IPv6 esterni dalla subnet.
  • VLAN_ID: un ID VLAN. Se specifichi un ID VLAN, l'interfaccia di rete viene configurata come NIC dinamica. Devi inserire una NIC dinamica dopo la relativa vNIC padre nel comando.

API

Utilizzare il metodo instances.insert per creare un'istanza con più interfacce di rete.

L'inclusione del campo vlan crea una NIC dinamica. Se crei una NIC dinamica, devi anche seguire i passaggi per configurare il sistema operativo guest per le NIC dinamiche dopo aver creato l'istanza.

Vedi i seguenti esempi:

  • Per creare un'istanza con solo indirizzi IPv4 interni, segui questi passaggi:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "networkIP": "IPV4_ADDRESS_A",
        "subnetwork": "regions/REGION/subnetworks/SUBNET_A"
      },
      {
        "networkIP": "IPV4_ADDRESS_B",
        "subnetwork": "regions/REGION/subnetworks/SUBNET_B",
        "vlan": "VLAN_ID"
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene l'istanza.
    • ZONE: la zona che contiene l'istanza.
    • IPV4_ADDRESS_A, IPV4_ADDRESS_B: gli indirizzi IPv4 interni che vuoi assegnare a ogni interfaccia di rete.
    • REGION: la regione che contiene l'istanza.
    • SUBNET_A, SUBNET_B: le sottoreti in cui si trova ciascuna interfaccia di rete.
    • VLAN_ID: un ID VLAN. Se specifichi un ID VLAN, l'interfaccia di rete viene configurata come NIC dinamica. Devi inserire una NIC dinamica dopo la vNIC padre nella richiesta.
  • Per creare un'istanza con indirizzi IPv4 interni e IPv6 interni, segui questi passaggi:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET_A",
        "ipv6Address": "IPV6_ADDRESS_A",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV4_IPV6,
        "ipv6AccessType": INTERNAL
      },
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET_B",
        "ipv6Address": "IPV6_ADDRESS_B",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV4_IPV6,
        "ipv6AccessType": INTERNAL,
        "vlan": "VLAN_ID"
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene l'istanza.
    • ZONE: la zona che contiene l'istanza.
    • REGION: la regione che contiene l'istanza.
    • SUBNET_A, SUBNET_B: le subnet in cui si trova ogni interfaccia di rete.
    • IPV6_ADDRESS_A, IPV6_ADDRESS_B: l'intervallo di indirizzi IPv6 interni che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un intervallo di indirizzi IPv6 interni dalla subnet.
    • VLAN_ID: un ID VLAN. Se specifichi un ID VLAN, l'interfaccia di rete viene configurata come NIC dinamica. Devi posizionare una NIC dinamica dopo la relativa vNIC padre.
  • Per creare un'istanza con soli indirizzi IPv6 interni, procedere come segue:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET_A",
        "ipv6Address": "IPV6_ADDRESS_A",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV6_ONLY,
        "ipv6AccessType": INTERNAL
      },
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET_B",
        "ipv6Address": "IPV6_ADDRESS_B",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV6_ONLY,
        "ipv6AccessType": INTERNAL,
        "vlan": "VLAN_ID"
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene l'istanza.
    • ZONE: la zona che contiene l'istanza.
    • REGION: la regione che contiene l'istanza.
    • SUBNET_A, SUBNET_B: le subnet in cui si trova ogni interfaccia di rete.
    • IPV6_ADDRESS_A, IPV6_ADDRESS_B: l'intervallo di indirizzi IPv6 interni che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un intervallo di indirizzi IPv6 interni dalla subnet.
    • VLAN_ID: un ID VLAN. Se specifichi un ID VLAN, l'interfaccia di rete viene configurata come NIC dinamica. È necessario posizionare una NIC dinamica dopo la sua vNIC principale.

Terraform

Puoi utilizzare una risorsa Terraform per creare un'istanza con più interfacce di rete.

Gli argomenti Terraform hanno valori di esempio che puoi modificare.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace with your project ID in quotes
  zone         = "us-central1-b"
  name         = "backend-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = var.subnet_1 # Replace with self link to a subnetwork in quotes
    network_ip = "10.0.0.14"
  }
  network_interface {
    subnetwork = var.subnet_2 # Replace with self link to a subnetwork in quotes
    network_ip = "10.10.20.14"
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Esempi di configurazioni

Le sezioni seguenti mostrano come creare istanze con più interfacce.

Configurare più vNIC e NIC dinamiche

Il seguente comando di esempio crea un'istanza con le seguenti interfacce di rete:

  • Una vNIC denominata nic0 che è la scheda di rete virtuale (vNIC) principale della seguente:
    • Una NIC dinamica denominata nic0.2
  • Una vNIC denominata nic1 che è la scheda di rete virtuale (vNIC) principale della seguente:
    • Una NIC dinamica denominata nic1.4
    • Una NIC dinamica denominata nic1.5
gcloud compute instances create vm1 \
    --zone zone-a \
    --network-interface=network=network-a,subnet=subnet-a \
    --network-interface=network=network-b,subnet=subnet-b,vlan=2 \
    --network-interface=network=network-c,subnet=subnet-c \
    --network-interface=network=network-d,subnet=subnet-d,vlan=4 \
    --network-interface=network=network-e,subnet=subnet-e,vlan=5

Dopo aver creato un'istanza con schede di rete dinamiche, è necessario anche configurare il sistema operativo guest per le schede di rete dinamiche.

Configura più interfacce di rete con solo indirizzi IPv4

Il seguente comando di esempio crea un'istanza con tre interfacce di rete.

gcloud compute instances create vm1 --machine-type=n1-standard-4 \
    --network-interface '' \
    --network-interface network=net1,subnet=subnet-a,private-network-ip=10.10.10.2,address=EXTERNAL_IPV4_ADDRESS \
    --network-interface network=net2,subnet=subnet-b,private-network-ip=10.10.20.2,no-address

Le interfacce vengono create come segue:

  • nic0 viene creato con le impostazioni predefinite. L'interfaccia è collegata a una subnet nella rete VPC predefinita, con un indirizzo IP interno allocato automaticamente e un indirizzo IP esterno temporaneo.

  • nic1 è collegato alla subnet subnet-a nella rete net1, con un indirizzo IPv4 interno 10.10.10.2 e un indirizzo IPv4 esterno statico EXTERNAL_IPV4_ADDRESS.

  • nic2 è collegato alla subnet subnet-b nella rete net2, con un indirizzo IPv4 interno 10.10.20.2 e nessun indirizzo IP esterno.

Per una descrizione completa delgcloud compute instances create comando e il--network-interface bandiera, leggi ladocumentazione per il comando.

Puoi utilizzare l'indirizzo IP dell'interfaccia di rete che hai aggiunto per configurare il forwarding DNS. Per ulteriori informazioni sulla configurazione delle zone di inoltro di Cloud DNS, consultare Zone di inoltro.

Configura più interfacce di rete con indirizzi IPv4 e IPv6.

Il seguente comando di esempio crea un'istanza dual-stack con due interfacce di rete.

gcloud compute instances create vm1 \
    --network-interface network=dual-int,subnet=int-subnet,stack-type=IPV4_IPV6 \
    --network-interface network=dual-ext,subnet=ext-subnet,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \
    --machine-type=n1-standard-4 --zone=ZONE_A

Le interfacce vengono create nel modo seguente:

  • nic0 è collegato alla subnet int-subnet nella rete dual-int, con un indirizzo IPv4 interno temporaneo e un intervallo di indirizzi IPv6 interno temporaneo.

  • nic1è collegato alla sottoreteext-subnet in retedual-ext con un indirizzo IPv4 interno effimero e un intervallo di indirizzi IPv6 esterni effimeri.

Configurare più interfacce di rete utilizzando solo indirizzi IPv6

Il seguente comando di esempio crea un'istanza solo IPv6 con tre interfacce di rete.

gcloud compute instances create vm1 \
    --network-interface network=ipv6-only-int-a,subnet=int-subnet-a,stack-type=IPV6_ONLY \
    --network-interface network=ipv6-only-int-b,subnet=int-subnet-b,stack-type=IPV6_ONLY,internal-ipv6-address=fd20:db8:0:0:1:0:: \
    --network-interface network=ipv6-only-ext,subnet=ext-subnet,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM,external-ipv6-address=EXTERNAL_IPV6_ADDRESS \
    --machine-type=n1-standard-4 --zone=us-west2-a

Le interfacce vengono create come segue:

  • nic0è collegato alla sottoreteint-subnet-a in reteipv6-only-int-a , con un indirizzo IPv6 interno temporaneo assegnato automaticamente.

  • nic1 è collegato alla subnet int-subnet-b nella rete ipv6-only-int-b, con un intervallo di indirizzi IPv6 interni temporanei personalizzato fd20:db8:0:0:1:0::/96.

  • nic2 è collegato alla subnet ext-subnet nella rete ipv6-only-ext, con un intervallo di indirizzi IPv6 esterni statici, EXTERNAL_IPV6_ADDRESS.

Configurare più interfacce di rete per i gruppi di istanze

Puoi utilizzare istanze con più interfacce di rete in gruppi di istanze non gestite e gruppi di istanze gestite.

Per i gruppi di istanze non gestite , creare ogni istanza individualmente, assicurandosi che l'interfaccia di rete nic0 per ogni istanza sia collegata alla stessa sottorete. Successivamente, aggiungi le istanze al gruppo di istanze non gestite.

Per configurare più interfacce di rete per i gruppi di istanze gestite, devi specificare la configurazione di rete per ogni interfaccia nel modello di istanza impostando il flag --network-interface una volta per ogni interfaccia. L'esempio seguente crea un modello di istanza con tre interfacce di rete:

gcloud compute instance-templates create template-1 \
    --network-interface subnet=net0-subnet-a \
    --network-interface subnet=net1-subnet-b,no-address \
    --network-interface subnet=net2-subnet-c,no-address \
    --region REGION_A

Poiché i nomi delle sottoreti in ogni regione di un progetto devono essere univoci, specificare le sottoreti tramite nome associa implicitamente ciascuna interfaccia a una rete VPC. In questo esempio, ogni interfaccia utilizza una subnet che si trova in una rete VPC unica:

  • nic0 utilizza la subnet net0-subnet-a
  • nic1 utilizza la subnet net1-subnet-b
  • nic2usa ilnet2-subnet-c sottorete

L'opzione no-address nel flag --network-interface indica che l'interfaccia è configurata senza un indirizzo IPv4 esterno. L'indirizzo IP interno proviene dalla sottorete utilizzata dall'interfaccia. Per informazioni complete sui flag e sulla sintassi, vedere il--network-interface bandiera per lainstance-templates create comando.

Passaggi successivi