VMs mit mehreren Netzwerkschnittstellen erstellen

Auf dieser Seite wird beschrieben, wie Sie VM-Instanzen mit mehreren Netzwerkschnittstellen erstellen.

Machen Sie sich vor Beginn mit den Eigenschaften von Instanzen mit mehreren Netzwerkschnittstellen vertraut, die in der Übersicht über mehrere Netzwerkschnittstellen beschrieben sind.

IAM-Rollen

Wenn Sie eine Instanz mit mehreren Netzwerkschnittstellen erstellen möchten, benötigen Sie eine der folgenden Rollen:

Erstellen und Löschen von Instanzen und Instanzvorlagen mit mehreren Schnittstellen in einem Projekt, in dem keine freigegebene VPC-Umgebung verwendet wird:Ein Nutzer mit der Rolle „Inhaber“, „Bearbeiter“ oder „Compute Instance Admin (v1)“ kann eine Instanz mit mehreren Schnittstellen erstellen, die mit VPC-Netzwerken und Subnetzen verknüpft sind, die zu demselben Projekt gehören.

Erstellen und Löschen von Instanzen und Instanzvorlagen mit mehreren Schnittstellen in Umgebungen mit freigegebene VPC VPC:Ein Nutzer mit der Rolle Inhaber, Bearbeiter oder Compute-Instanzadministrator (v1) kann eine Instanz mit mehreren Schnittstellen erstellen. Wenn eine dieser Schnittstellen an ein Subnetz in einem freigegebene VPC-Hostprojekt angehängt ist, benötigen Sie auch die Rolle „Compute-Netzwerknutzer“ (roles/compute.networkUser) für das gesamte Hostprojekt oder für die Subnetze, die Sie verwenden müssen.

Weitere Informationen zu Berechtigungen finden Sie in der Compute Engine IAM-Dokumentation.

VM-Instanzen mit mehreren Netzwerkschnittstellen erstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Instanz mit mehreren Netzwerkschnittstellen erstellen, einschließlich vNICs und dynamischer NICs. Allgemeine Anleitungen zum Erstellen von Instanzen finden Sie unter VM-Instanz erstellen und starten.

Die erste Schnittstelle wird immer als nic0 erstellt und ist immer die Standardschnittstelle.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

    Zur Seite „Instanz erstellen“

  2. Geben Sie im Feld Name einen Namen für die Instanz ein.

  3. Wählen Sie im Feld Region eine Region aus.

  4. Wählen Sie im Feld Zone eine Zone aus.

  5. Maximieren Sie im Abschnitt Erweiterte Optionen den Bereich Netzwerk und gehen Sie dann so vor:

    1. Maximieren Sie im Bereich Netzwerkschnittstellen eine Netzwerkschnittstelle, um sie zu bearbeiten.

    2. Wählen Sie unter Netzwerk und Subnetzwerk das gewünschte Netzwerk und Subnetzwerk aus.

      Wählen Sie ein Subnetz aus, für das ein IPv6-Adressbereich konfiguriert ist, wenn Sie IPv6-Adressen auf der Schnittstelle konfigurieren möchten. Der IPv6-Zugriffstyp des Subnetzes bestimmt, ob die Instanz eine interne IPv6-Adresse oder eine externe IPv6-Adresse erhält.

    3. Wählen Sie für die Schnittstelle eine der folgenden Optionen für den IP-Stack-Typ aus:

      • IPv4 (Einzel-Stack)
      • IPv4 und IPv6 (Dual-Stack)
      • IPv6 (Single-Stack) (Vorabversion)
    4. So gehen Sie bei Schnittstellen mit IPv4-Adressen vor:

      1. Wählen Sie für Primäre interne IPv4-Adresse eine der folgenden Optionen aus:

        • Sitzungsspezifisch (automatisch), um eine neue sitzungsspezifische IPv4-Adresse automatisch zuzuweisen
        • Sitzungsspezifisch (benutzerdefiniert), um eine neue sitzungsspezifische IPv4-Adresse manuell anzugeben
        • Reservierte statische interne IPv4-Adresse aus der Liste
        • Statische interne IP-Adresse reservieren, um eine neue statische interne IPv4-Adresse zu reservieren und zuzuweisen
      2. Wählen Sie für Externe IPv4-Adresse eine der folgenden Optionen aus:

        • Sitzungsspezifisch, um eine neue sitzungsspezifische IPv4-Adresse zuzuweisen
        • None (Keine), um keine externe IPv4-Adresse zuzuweisen
        • Reservierte statische IPv4-Adresse aus der Liste
        • Statische externe IP-Adresse reservieren, um eine neue statische externe IPv4-Adresse zu reservieren und zuzuweisen
    5. Gehen Sie bei Schnittstellen mit IPv6-Adressen je nach Zugriffstyp des verbundenen Subnetzes so vor:

      1. Wählen Sie für Primäre interne IPv6-Adresse eine der folgenden Optionen aus:
        • Sitzungsspezifisch (automatisch), um eine neue sitzungsspezifische interne IPv6-Adresse automatisch zuzuweisen
        • Sitzungsspezifisch (benutzerdefiniert), um eine neue sitzungsspezifische interne IPv6-Adresse manuell anzugeben
        • Reservierte statische interne IPv6-Adresse aus der Liste
        • Statische interne IPv6-Adresse reservieren, um eine neue statische interne IPv6-Adresse zu reservieren und zuzuweisen
      2. Wählen Sie für Externe IPv6-Adresse eine der folgenden Optionen aus:
        • Automatisch zuweisen, um eine neue statische sitzungsspezifische IPv6-Adresse automatisch zuzuweisen
        • Reservierte statische externe IPv6-Adresse aus der Liste
        • Statische externe IPv6-Adresse reservieren, um eine neue statische externe IPv6-Adresse zu reservieren und zuzuweisen
    6. Klicken Sie auf Fertig, um die Änderung der Netzwerkschnittstelle abzuschließen.

  6. Zum Hinzufügen einer weiteren Schnittstelle klicken Sie auf Netzwerkschnittstelle hinzufügen.

  7. Fahren Sie mit der Erstellung der Instanz fort.

  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud compute instances create, um Netzwerkschnittstellen auf einer neuen Instanz zu erstellen.

Geben Sie dabei für jede Schnittstelle das Flag --network-interface, gefolgt von allen geeigneten Netzwerkschlüsseln an, z. B. network, subnet, private-network-ip, address, external-ipv6-address und vlan.

Wenn Sie den vlan-Schlüssel angeben, wird eine dynamische NIC erstellt. Wenn Sie eine dynamische NIC erstellen, müssen Sie nach dem Erstellen der Instanz auch die Schritte zum Konfigurieren des Gastbetriebssystems für dynamische NICs ausführen.

Beispiele zum Erstellen von Instanzen mit mehreren Schnittstellen finden Sie unter Beispielkonfigurationen.

Dieses Snippet zeigt nur das Flag --network-interface, einen von vielen möglichen Parametern, die Sie beim Erstellen einer Instanz angeben können.

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 \
    ...

Ersetzen Sie Folgendes:

  • INSTANCE_NAME: Name der zu erstellenden Instanz
  • ZONE: Die Zone, in der die Instanz erstellt wird.
  • NETWORK_A, NETWORK_B: Das Netzwerk, an das die Schnittstelle angehängt ist.
  • SUBNET_A, SUBNET_B: das Subnetz, an das die Schnittstelle angehängt ist.
  • STACK_TYPE: der Stacktyp für die Schnittstelle

    Der Standardwert ist IPV4_ONLY. Geben Sie IPV4_IPV6 an, um eine Dual-Stack-Schnittstelle zu konfigurieren, oder IPV6_ONLY, um eine reine IPv6-Schnittstelle zu konfigurieren (Vorabversion).

  • Werte für Schnittstellen mit IPv4-Adressen:

    • INTERNAL_IPV4_ADDRESS ist die interne IPv4-Adresse, die die Schnittstelle im Zielsubnetz haben soll. Lassen Sie diese aus, wenn Sie nur eine beliebige gültige Adresse zuweisen möchten.
    • EXTERNAL_IPV4_ADDRESS: die externe IPv4-Adresse der Schnittstelle.

      Sie müssen zuvor eine externe IPv4-Adresse reserviert haben. Wenn die Schnittstelle keine externe IP-Adresse haben soll, geben Sie anstelle von address=EXTERNAL_IPV4_ADDRESS „no-address“ an. Geben Sie address='' an, wenn die Schnittstelle eine sitzungsspezifische externe IP-Adresse erhalten soll.

  • Werte für Schnittstellen mit IPv6-Adressen:

    • INTERNAL_IPV6_ADDRESS ist die interne IPv6-Adresse, die die Schnittstelle im Zielsubnetz haben soll. Wenn Sie nichts angeben, weistGoogle Cloud automatisch eine interne IPv6-Adresse aus dem Subnetz zu.
    • EXTERNAL_IPV6_ADDRESS ist die externe IPv6-Adresse, die die Schnittstelle im Zielsubnetz haben soll. Wenn Sie keine Angabe machen, weistGoogle Cloud automatisch eine externe IPv6-Adresse aus dem Subnetz zu.
  • VLAN_ID: eine VLAN-ID. Wenn Sie eine VLAN-ID angeben, wird die Netzwerkschnittstelle als Dynamic NIC konfiguriert. Sie müssen eine dynamische NIC im Befehl nach der übergeordneten vNIC platzieren.

API

Verwenden Sie die Methode instances.insert, um eine Instanz mit mehreren Netzwerkschnittstellen zu erstellen.

Wenn Sie das Feld vlan angeben, wird eine dynamische NIC erstellt. Wenn Sie eine dynamische NIC erstellen, müssen Sie nach dem Erstellen der Instanz auch die Schritte zum Konfigurieren des Gastbetriebssystems für dynamische NICs ausführen.

Betrachten Sie die folgenden Beispiele:

  • So erstellen Sie eine Instanz mit nur internen IPv4-Adressen:

    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...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die ID des Projekts, das die Instanz enthält.
    • ZONE: Die Zone, die die Instanz enthält.
    • IPV4_ADDRESS_A, IPV4_ADDRESS_B: Die internen IPv4-Adressen, die Sie den einzelnen Netzwerkschnittstellen zuweisen möchten.
    • REGION: Die Region, die die Instanz enthält.
    • SUBNET_A, SUBNET_B: die Subnetze, in denen sich die einzelnen Netzwerkschnittstellen befinden.
    • VLAN_ID: eine VLAN-ID. Wenn Sie eine VLAN-ID angeben, wird die Netzwerkschnittstelle als Dynamic NIC konfiguriert. Sie müssen eine Dynamic NIC nach der übergeordneten vNIC in der Anfrage platzieren.
  • So erstellen Sie eine Instanz mit internen IPv4- und internen IPv6-Adressen:

    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...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die ID des Projekts, das die Instanz enthält.
    • ZONE: Die Zone, die die Instanz enthält.
    • REGION: Die Region, die die Instanz enthält.
    • SUBNET_A, SUBNET_B: die Subnetze, in denen sich die einzelnen Netzwerkschnittstellen befinden.
    • IPV6_ADDRESS_A, IPV6_ADDRESS_B ist die interne IPv6-Adresse, die die Schnittstelle im Zielsubnetz haben soll. Wenn Sie nichts angeben, weistGoogle Cloud automatisch eine interne IPv6-Adresse aus dem Subnetz zu.
    • VLAN_ID: eine VLAN-ID. Wenn Sie eine VLAN-ID angeben, wird die Netzwerkschnittstelle als Dynamic NIC konfiguriert. Sie müssen eine Dynamic NIC nach der übergeordneten vNIC platzieren.
  • So erstellen Sie eine Instanz mit nur internen IPv6-Adressen (Vorabversion):

    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...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die ID des Projekts, das die Instanz enthält.
    • ZONE: Die Zone, die die Instanz enthält.
    • REGION: Die Region, die die Instanz enthält.
    • SUBNET: Das Subnetz, in dem sich die Netzwerkschnittstelle befindet.
    • IPV6_ADDRESS ist die interne IPv6-Adresse, die die Schnittstelle im Zielsubnetz haben soll. Wenn Sie nichts angeben, weistGoogle Cloud automatisch eine interne IPv6-Adresse aus dem Subnetz zu.

Terraform

Sie können eine Terraform-Ressource verwenden, um eine Instanz mit mehreren Netzwerkschnittstellen zu erstellen.

Die Terraform-Argumente haben Beispielwerte, die Sie ändern können.

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"
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Beispielkonfigurationen

In den folgenden Abschnitten wird gezeigt, wie Sie Instanzen mit mehreren Schnittstellen erstellen.

Mehrere vNICs und dynamische NICs konfigurieren

Mit dem folgenden Beispielbefehl wird eine Instanz mit den folgenden Netzwerkschnittstellen erstellt:

  • Eine vNIC mit dem Namen nic0, die übergeordnet ist für Folgendes:
    • Eine dynamische NIC mit dem Namen nic0.2
  • Eine vNIC mit dem Namen nic1, die übergeordnet ist für Folgendes:
    • Eine dynamische NIC mit dem Namen nic1.4
    • Eine dynamische NIC mit dem Namen 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

Nachdem Sie eine Instanz mit dynamischen NICs erstellt haben, müssen Sie auch das Gastbetriebssystem für dynamische NICs konfigurieren.

Mehrere Netzwerkschnittstellen nur mit IPv4-Adressen konfigurieren

Mit dem folgenden Beispielbefehl wird eine Instanz mit drei Netzwerkschnittstellen erstellt.

 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

Die Schnittstellen werden so erstellt:

  • nic0 wird mit den Standardeinstellungen erstellt. Die Schnittstelle ist an ein Subnetz im Standard-VPC-Netzwerk angehängt und erhält eine automatisch zugewiesene interne IP-Adresse und eine sitzungsspezifische externe IP-Adresse.

  • nic1 ist an das Subnetz subnet-a im Netzwerk net1 mit der internen IPv4-Adresse 10.10.10.2 und der statischen externen IPv4-Adresse EXTERNAL_IPV4_ADDRESS angehängt.

  • nic2 ist an das Subnetz subnet-b im Netzwerk net2 mit der internen IPv4-Adresse 10.10.20.2 und ohne externe IP-Adresse angehängt.

Eine vollständige Beschreibung des Befehls gcloud compute instances create und des Flags --network-interface finden Sie in der Dokumentation zum Befehl.

Sie können die IP-Adresse der Netzwerkschnittstelle verwenden, die Sie hinzugefügt haben, um die DNS-Weiterleitung einzurichten. Weitere Informationen zum Konfigurieren von Cloud DNS-Weiterleitungszonen finden Sie unter Weiterleitungszonen.

Mehrere Netzwerkschnittstellen mit IPv4- und IPv6-Adressen konfigurieren

Mit dem folgenden Beispielbefehl wird eine Dual-Stack-Instanz mit zwei Netzwerkschnittstellen erstellt.

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

Die Schnittstellen werden so erstellt:

  • nic0 ist an das Subnetz int-subnet im Netzwerk dual-int mit einer sitzungsspezifischen internen IPv4-Adresse und einer sitzungsspezifischen internen IPv6-Adresse angehängt.

  • nic1 ist an das Subnetz ext-subnet im Netzwerk dual-ext mit einer sitzungsspezifischen internen IPv4-Adresse und einer sitzungsspezifischen externen IPv6-Adresse angehängt.

Mehrere Netzwerkschnittstellen nur mit IPv6-Adressen konfigurieren

Mit dem folgenden Beispielbefehl wird eine reine IPv6-Instanz (Vorabversion) mit drei Netzwerkschnittstellen erstellt.

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

Die Schnittstellen werden wie folgt erstellt:

  • nic0 ist mit dem Subnetz int-subnet-a im Netzwerk ipv6-only-int-a mit einer automatisch zugewiesenen sitzungsspezifischen internen IPv6-Adresse verbunden.

  • nic1 ist an das Subnetz int-subnet-b im Netzwerk ipv6-only-int-b mit einer benutzerdefinierten sitzungsspezifischen internen IPv6-Adresse fd20:db8:0:0:1:0::/96 angehängt.

  • nic2 ist mit dem Subnetz ext-subnet im Netzwerk ipv6-only-ext mit der statischen externen IPv6-Adresse EXTERNAL_IPV6_ADDRESS verbunden.

Mehrere Netzwerkschnittstellen für Instanzgruppen konfigurieren

Sie können Instanzen mit mehreren Netzwerkschnittstellen in nicht verwalteten Instanzgruppen und verwalteten Instanzgruppen verwenden.

Erstellen Sie für nicht verwaltete Instanzgruppen jede Instanz einzeln und achten Sie darauf, dass die Netzwerkschnittstelle nic0 für jede Instanz mit demselben Subnetz verbunden ist. Fügen Sie dann die Instanzen der nicht verwalteten Instanzgruppe hinzu.

Zum Konfigurieren mehrerer Netzwerkschnittstellen für verwaltete Instanzgruppen müssen Sie die Netzwerkkonfiguration für jede Schnittstelle in der Instanzvorlage angeben. Dazu legen Sie das Flag --network-interface einmal für jede Schnittstelle fest. Im folgenden Beispiel wird eine Instanzvorlage mit drei Netzwerkschnittstellen erstellt:

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

Da Subnetznamen in jeder Region eines Projekts eindeutig sein müssen, wird durch die Angabe von Subnetzen implizit jede Schnittstelle einem VPC-Netzwerk zugeordnet. Jede Schnittstelle muss ein Subnetz verwenden, das sich in einem eindeutigen VPC-Netzwerk befindet:

  • nic0 verwendet das Subnetz net0-subnet-a
  • nic1 verwendet das Subnetz net1-subnet-b
  • nic2 verwendet das Subnetz net2-subnet-c

Die Option no-address im Flag --network-interface gibt an, dass die Schnittstelle ohne externe IPv4-Adresse konfiguriert ist. Die interne IP-Adresse stammt aus dem Subnetz, das von der Schnittstelle verwendet wird. Ausführliche Informationen zu Flags und Syntax finden Sie unter dem Flag --network-interface für den Befehl instance-templates create.