Creare VM con più interfacce di rete

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

Prima di iniziare, assicurati di conoscere le caratteristiche delle istanze con più interfacce di rete, come descritto nella Panoramica di più interfacce di rete.

Ruoli IAM

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

Creazione ed eliminazione di istanze e modelli di istanze 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 alle reti e alle subnet VPC che fanno parte dello stesso progetto.

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

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

Creare istanze VM con più interfacce di rete

Questa sezione descrive come creare un'istanza con più interfacce di rete, tra cui vNIC e NIC dinamiche. Per istruzioni generali sulla creazione di istanze, vedi Creare e avviare 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 campo Nome, inserisci un nome per l'istanza.

  3. Nel campo Regione, seleziona una regione.

  4. Nel campo Zona, seleziona una zona.

  5. Nella sezione Opzioni avanzate, espandi Networking e segui questi passaggi:

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

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

      Se vuoi configurare gli indirizzi IPv6 sull'interfaccia, seleziona una subnet in cui è configurato un intervallo di indirizzi IPv6. Il tipo di accesso IPv6 della subnet determina se l'istanza riceve un indirizzo IPv6 interno o un indirizzo IPv6 esterno.

    3. Seleziona una delle seguenti opzioni per il tipo di stack IP per l'interfaccia:

      • IPv4 (stack singolo)
      • IPv4 e IPv6 (stack doppio)
      • IPv6 (stack singolo) (anteprima)
    4. Per le interfacce con indirizzi IPv4:

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

        • Temporaneo (automatico) per assegnare automaticamente un nuovo indirizzo IPv4 temporaneo
        • Temporaneo (personalizzato) per specificare manualmente un nuovo indirizzo IPv4 temporaneo
        • 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:

        • Temporaneo per assegnare un nuovo indirizzo IPv4 temporaneo
        • Nessuno per non assegnare un indirizzo IPv4 esterno
        • Un indirizzo IPv4 statico riservato dall'elenco
        • Prenota indirizzo IP esterno statico per prenotare e assegnare un nuovo indirizzo IPv4 esterno statico
    5. Per le interfacce con indirizzi IPv6, procedi nel seguente modo, a seconda del tipo di accesso della subnet connessa:

      1. Per Indirizzo IPv6 interno principale, seleziona una delle seguenti opzioni:
        • Temporaneo (automatico) per assegnare automaticamente un nuovo indirizzo IPv6 interno temporaneo
        • Temporaneo (personalizzato) per specificare manualmente un nuovo indirizzo IPv6 interno temporaneo
        • Un indirizzo IPv6 interno statico prenotato dall'elenco
        • Prenota indirizzo IPv6 interno statico per prenotare e assegnare un nuovo indirizzo IPv6 interno statico
      2. Per Indirizzo IPv6 esterno, seleziona una delle seguenti opzioni:
        • Allocazione automatica per assegnare automaticamente un nuovo indirizzo IPv6 esterno temporaneo
        • Un indirizzo IPv6 esterno statico riservato dall'elenco
        • Prenota indirizzo IPv6 esterno statico per prenotare e assegnare un nuovo indirizzo IPv6 esterno statico
    6. Per completare la modifica dell'interfaccia di rete, fai clic su Fine.

  6. Per aggiungere un'altra interfaccia, fai clic su Aggiungi interfaccia di rete.

  7. Continua il processo di creazione dell'istanza.

  8. Fai clic su Crea.

gcloud

Per creare interfacce di rete in 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, ad esempio network, subnet, private-network-ip, address, external-ipv6-address e vlan.

Se includi la chiave vlan, viene creata una NIC dinamica. Se crei una NIC dinamica, devi anche seguire i passaggi per la configurazione del 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 snippet illustra solo il flag --network-interface, uno dei molti possibili parametri che puoi 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 (anteprima).

  • Valori per le interfacce con indirizzi IPv4:

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

      Devi aver prenotato in precedenza 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'indirizzo IPv6 interno che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un indirizzo IPv6 interno dalla subnet.
    • EXTERNAL_IPV6_ADDRESS: l'indirizzo IPv6 esterno che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un indirizzo IPv6 esterno 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 vNIC principale nel comando.

API

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

Se includi il campo vlan, viene creata una NIC dinamica. Se crei una NIC dinamica, devi anche seguire i passaggi per la configurazione del 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 subnet in cui si trova ogni interfaccia di rete.
    • 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 vNIC principale della richiesta.
  • Per creare un'istanza con indirizzi IPv4 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'indirizzo IPv6 interno che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un indirizzo IPv6 interno 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 vNIC principale.
  • Per creare un'istanza con solo indirizzi IPv6 interni (anteprima), segui questi passaggi:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET"
        "ipv6Address": "IPV6_ADDRESS",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV6_ONLY,
        "ipv6AccessType": INTERNAL
      },
        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: la subnet in cui si trova l'interfaccia di rete.
    • IPV6_ADDRESS: l'indirizzo IPv6 interno che vuoi che l'interfaccia abbia nella subnet di destinazione. Se non specificato, Google Cloud assegna automaticamente un indirizzo IPv6 interno dalla subnet.

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.

Configurazioni di esempio

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 è il contenitore di quanto segue:
    • Una NIC dinamica denominata nic0.2
  • Una vNIC denominata nic1 che è il contenitore di quanto segue:
    • Una NIC dinamica denominata nic1.4
    • Una NIC dinamica denominata nic1.5
gcloud beta 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 NIC dinamiche, devi anche configurare il sistema operativo guest per le NIC dinamiche.

Configurare 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 è collegata 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 del comando gcloud compute instances create e del flag --network-interface, leggi la documentazione del comando.

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

Configurare più interfacce di rete con indirizzi IPv4 e IPv6

Il seguente comando di esempio crea un'istanza a doppio 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 come segue:

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

  • nic1 è collegata alla subnet ext-subnet nella rete dual-ext, con un indirizzo IPv4 interno temporaneo e un indirizzo IPv6 esterno temporaneo.

Configurare più interfacce di rete con solo indirizzi IPv6

Il seguente comando di esempio crea un'istanza solo IPv6 (anteprima) 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 è collegata alla subnet int-subnet-a nella rete ipv6-only-int-a con un indirizzo IPv6 interno temporaneo allocato automaticamente.

  • nic1 è collegata alla subnet int-subnet-b nella rete ipv6-only-int-b con un indirizzo IPv6 interno temporaneo personalizzato fd20:db8:0:0:1:0::/96.

  • nic2 è collegata alla subnet ext-subnet nella rete ipv6-only-ext con un indirizzo IPv6 esterno statico, EXTERNAL_IPV6_ADDRESS.

Configurare più interfacce di rete per i gruppi di istanze

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

Per i gruppi di istanze non gestite, crea ogni istanza singolarmente, assicurandoti che l'interfaccia di rete nic0 di ogni istanza sia collegata alla stessa sottorete. Poi, 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 subnet in ogni regione di un progetto devono essere univoci, la specifica delle subnet per nome associa implicitamente ogni interfaccia a una rete VPC. Ogni interfaccia deve utilizzare una subnet in una rete VPC univoca:

  • nic0 utilizza la subnet net0-subnet-a
  • nic1 utilizza la subnet net1-subnet-b
  • nic2 utilizza la subnet net2-subnet-c

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