Netzwerkkonfiguration für eine Instanz ansehen


Anhand der Anleitung auf dieser Seite können Sie sich die Netzwerkschnittstellen, Netzwerke, Subnetze und IP-Adressen einer Compute-Instanz ansehen.

Hinweise

  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud -Dienste und ‑APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute-Instanzadministrator (v1) (roles/compute.instanceAdmin.v1) oder Compute-Netzwerkadministrator (roles/compute.networkAdmin) für das Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Aufrufen der Netzwerkkonfiguration einer Instanz benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Aufrufen der Netzwerkkonfiguration einer Instanz erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um die Netzwerkkonfiguration für eine Instanz aufzurufen:

  • Netzwerkkonfiguration für eine Instanz aufrufen: compute.instances.get auf der Instanz
  • IP-Adressen für eine Instanz aufrufen: compute.instances.list für das Projekt

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

IP-Adressen ansehen

Sie können die interne und externe IP-Adresse für Ihre Instanz aufrufen. Die IP-Adressen können entweder IPv4- oder IPv6-Adressen sein.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Optional: Mit dem Feld Filter können Sie die Anzahl der angezeigten Instanzen einschränken.

  3. Wenn die Instanz eine externe IP-Adresse hat, wird sie in der Spalte Externe IP angezeigt.

    Wenn die Instanz keine externe IP-Adresse hat, können Sie ihr eine solche zuweisen.

Seite "VM-Instanzen" mit internen und externen IP-Adressen

Je nach Spaltenanzeigeoptionen werden möglicherweise mehr oder weniger Spalten angezeigt als im vorherigen Bild.

gcloud

Es gibt zwei Befehle, mit denen Sie die IP-Adressen für eine Instanz aufrufen können:

  • Unter gcloud compute instances list werden alle IP-Adressen angezeigt, die von einer Compute-Instanz verwendet werden, entweder statisch oder vorübergehend.
  • Unter gcloud compute addresses list werden alle reservierten IP-Adressen angezeigt, die einer Compute-Instanz zugewiesen sind.

In dieser Aufgabe erfahren Sie, wie Sie IP-Adressen mit gcloud compute instances-Befehlen aufrufen.

  1. Verwenden Sie den Befehl gcloud compute instances list, um die internen und externen IP-Adressen für Ihre Instanzen aufzurufen.

    gcloud compute instances list

    Sie können die --filter-Klausel anhängen, um die Anzahl der vom Befehl zurückgegebenen Instanzen einzuschränken, z. B. --filter='zone:us-central1-c'.

    Die Ausgabe sieht in etwa so aus:

    NAME           ZONE            MACHINE_TYPE    PREEMPTIBLE  INTERNAL_IP                EXTERNAL_IP                     STATUS
    webapp1        us-central1-c   c3-highmem-88   true         192.0.2.11                                                 RUNNING
    my-instance    us-central1-c   n4-standard-2                192.0.2.126                203.0.113.6                     RUNNING
    my-dual-stack  us-central1-a   e2-micro                     192.0.2.54                 203.0.113.7                     RUNNING
                                                                                          2001:db8:2:2:2:2:2:2/96
    new-ipv6-only  us-central1-a   n4-standard-2                2001:db8:1:1:1:1:1:1/96                                    RUNNING
    
  2. Verwenden Sie den Befehl gcloud compute instances describe mit dem Flag --format, um die interne oder externe IP-Adresse für eine bestimmte Instanz aufzurufen.

    Interne Adressen

    Verwenden Sie einen der folgenden Befehle, um die interne IP-Adresse für eine bestimmte Instanz aufzurufen:

    • IPv4-Adressen:

         gcloud compute instances describe INSTANCE_NAME \
             --zone=ZONE \
             --format='get(networkInterfaces[0].networkIP)'
        
      192.0.2.11
    • IPv6-Adressen:

         gcloud compute instances describe INSTANCE_NAME \
             --zone=ZONE \
             --format='get(networkInterfaces[0].ipv6Address)'
        
      2001:db8:2:2:2:2:2:2

    Externe Adressen

    Verwenden Sie einen der folgenden Befehle, um die externe IP-Adresse für eine bestimmte Instanz aufzurufen:

    • IPv4-Adressen:

         gcloud compute instances describe INSTANCE_NAME \
             --zone=ZONE \
             --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
        
      203.0.113.6
    • IPv6-Adressen:

         gcloud compute instances describe INSTANCE_NAME \
             --zone=ZONE \
             --format='get(networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)'
        
      2001:db8:3:3:3:3:3:3

    Ersetzen Sie Folgendes:

    • INSTANCE_NAME: Name der Instanz, deren interne oder externe IP-Adresse Sie aufrufen möchten
    • ZONE: Der Name der Zone, in der sich die Instanz befindet.

    Wenn der Befehl keine IP-Adresse zurückgibt, ist für die Instanz keine externe IP-Adresse konfiguriert.

REST

Stellen Sie eine GET-Anfrage an die Methode instances.get. Wenn Sie der Anfrage einen $fields-Abfrageparameter anhängen, können Sie die Ausgabe auf die gewünschten Felder beschränken.

 GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME$fields=name,networkInterfaces.networkIP,networkInterfaces.accessConfigs.natIP,networkInterfaces.ipv6AccessConfigs.externalIpv6
 

Ersetzen Sie Folgendes:

  • PROJECT_NAME: Der Name des Projekts, das die Instanz enthält.
  • ZONE: Die Zone für die Instanz, die Sie abfragen möchten
  • INSTANCE_NAME: Der Name der Instanzressource, die zurückgegeben werden soll.

Wenn eine der IP-Adressen nicht konfiguriert ist, wird dieses Feld nicht in der Ausgabe angezeigt. Bei einer Compute-Instanz, die ein Dual-Stack-Netzwerk mit einer externen IPv6-Adresse verwendet, sieht der Antworttext in etwa so aus:

{
  "name": "my-dual-stack-vm",
  "networkInterfaces": [
    {
      "networkIP": "10.0.0.2",
      "accessConfigs": [
        {
          "natIP": "104.155.21.204"
        }
      ],
      "ipv6AccessConfigs": [
        {
          "externalIpv6": "2600:1900:4010:8b2:0:0:0:0"
        }
      ]
    }
  ]
}

Die folgenden Felder enthalten die erforderlichen Informationen:

  • networkIP: Die zugewiesene interne IPv4-Adresse.
  • natIP: Die zugewiesene externe IPv4-Adresse.
  • externalIpv6: die zugewiesene externe IPv6-Adresse.

Python

from enum import Enum
from typing import List

from google.cloud import compute_v1


def get_instance(project_id: str, zone: str, instance_name: str) -> compute_v1.Instance:
    """
    Get information about a VM instance in the given zone in the specified project.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        zone: name of the zone you want to use. For example: “us-west3-b”
        instance_name: name of the VM instance you want to query.
    Returns:
        An Instance object.
    """
    instance_client = compute_v1.InstancesClient()
    instance = instance_client.get(
        project=project_id, zone=zone, instance=instance_name
    )

    return instance


class IPType(Enum):
    INTERNAL = "internal"
    EXTERNAL = "external"
    IP_V6 = "ipv6"


def get_instance_ip_address(
    instance: compute_v1.Instance, ip_type: IPType
) -> List[str]:
    """
    Retrieves the specified type of IP address (ipv6, internal or external) of a specified Compute Engine instance.

    Args:
        instance (compute_v1.Instance): instance to get
        ip_type (IPType): The type of IP address to retrieve (ipv6, internal or external).

    Returns:
        List[str]: Requested type IP addresses of the instance.
    """
    ips = []
    if not instance.network_interfaces:
        return ips
    for interface in instance.network_interfaces:
        if ip_type == IPType.EXTERNAL:
            for config in interface.access_configs:
                if config.type_ == "ONE_TO_ONE_NAT":
                    ips.append(config.nat_i_p)
        elif ip_type == IPType.IP_V6:
            for ipv6_config in getattr(interface, "ipv6_access_configs", []):
                if ipv6_config.type_ == "DIRECT_IPV6":
                    ips.append(ipv6_config.external_ipv6)

        elif ip_type == IPType.INTERNAL:
            # Internal IP is directly available in the network interface
            ips.append(interface.network_i_p)
    return ips

Java


import com.google.cloud.compute.v1.AccessConfig;
import com.google.cloud.compute.v1.AccessConfig.Type;
import com.google.cloud.compute.v1.GetInstanceRequest;
import com.google.cloud.compute.v1.Instance;
import com.google.cloud.compute.v1.InstancesClient;
import com.google.cloud.compute.v1.NetworkInterface;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class GetVmAddress {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to use.
    String projectId = "your-project-id";
    // Instance ID of the Google Cloud project you want to use.
    String instanceId = "your-instance-id";
    // IPType you want to search.
    IpType ipType = IpType.INTERNAL;

    getVmAddress(projectId, instanceId, ipType);
  }

  // Retrieves the specified type of IP address
  // (ipv6, internal or external) of a specified Compute Engine instance.
  public static List<String> getVmAddress(String projectId, String instanceId, IpType ipType)
          throws IOException {
    List<String> result = new ArrayList<>();
    Instance instance = getInstance(projectId, instanceId);

    for (NetworkInterface networkInterface : instance.getNetworkInterfacesList()) {
      if (ipType == IpType.EXTERNAL) {
        for (AccessConfig accessConfig : networkInterface.getAccessConfigsList()) {
          if (accessConfig.getType().equals(Type.ONE_TO_ONE_NAT.name())) {
            result.add(accessConfig.getNatIP());
          }
        }
      } else if (ipType == IpType.IP_V6) {
        for (AccessConfig accessConfig : networkInterface.getAccessConfigsList()) {
          if (accessConfig.hasExternalIpv6()
                  && accessConfig.getType().equals(Type.DIRECT_IPV6.name())) {
            result.add(accessConfig.getExternalIpv6());
          }
        }
      } else if (ipType == IpType.INTERNAL) {
        result.add(networkInterface.getNetworkIP());
      }
    }

    return result;
  }

  private static Instance getInstance(String projectId, String instanceId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (InstancesClient instancesClient = InstancesClient.create()) {
      GetInstanceRequest request = GetInstanceRequest.newBuilder()
              .setInstance(instanceId)
              .setProject(projectId)
              .setZone("us-central1-b")
              .build();
      return instancesClient.get(request);
    }
  }

  public enum IpType {
    INTERNAL("internal"),
    EXTERNAL("external"),
    IP_V6("ipv6");

    private final String type;

    IpType(String type) {
      this.type = type;
    }

    public String getType() {
      return type;
    }
  }
}

Netzwerkschnittstellen für eine Instanz ansehen

Jede Compute-Instanz hat mindestens eine Netzwerkschnittstelle. Sie haben folgende Möglichkeiten, sich die konfigurierten Eigenschaften der Netzwerkschnittstellen für eine Instanz anzusehen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Optional: Mit dem Feld Filter können Sie die Anzahl der angezeigten Instanzen einschränken.

  3. Klicken Sie auf den Namen der Instanz, die Sie prüfen möchten.

  4. Im Bereich Netzwerk unter Netzwerkschnittstellen sehen Sie die für die Instanz erstellten Netzwerkschnittstellen (NICs), das mit jeder NIC verknüpfte Netzwerk und Subnetz sowie die zugewiesenen IP-Adressen.

  5. Klicken Sie auf den Namen einer NIC, um die Seite Netzwerkschnittstellendetails zu öffnen. Auf dieser Seite sehen Sie die Firewalls und Routen, die von der NIC verwendet werden, und können einen Konnektivitätstest für die NIC ausführen.

gcloud

Verwenden Sie den Befehl gcloud compute instances describe, um die Netzwerkschnittstellen (NICs) für eine Compute-Instanz aufzurufen. Sie können dem Befehl die Option --format hinzufügen, um die zurückgegebenen Informationen auf bestimmte Felder zu beschränken und die Anzeige zu ändern. Beispiel:

gcloud compute instances describe INSTANCE_NAME --zone=ZONE \
    --format="flattened(name,networkInterfaces[].name, networkInterfaces[].network.basename(), networkInterfaces[].stackType, networkInterfaces[].nicType)"

Die Ausgabe des vorherigen Befehls sieht in etwa so aus:

name:                           my-multinic-vm
networkInterfaces[0].name:      nic0
networkInterfaces[0].network:   default
networkInterfaces[0].nicType:   GVNIC
networkInterfaces[0].stackType: IPV4_ONLY
networkInterfaces[1].name:      nic1
networkInterfaces[1].network:   appnet-vpc-0
networkInterfaces[1].nicType:   GVNIC
networkInterfaces[1].stackType: IPV4_IPV6

REST

Senden Sie eine GET-Anfrage an die Methode instances.get. Wenn Sie der Anfrage einen $fields-Abfrageparameter anhängen, können Sie die Ausgabe auf die networkInterfaces-Property beschränken.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME?$fields=networkInterfaces

Ersetzen Sie Folgendes:

  • PROJECT_NAME: Der Name des Projekts, das die Instanz enthält.
  • ZONE: Die Zone für die Instanz, die Sie abfragen möchten
  • INSTANCE_NAME: Der Name der Instanzressource, die zurückgegeben werden soll.

Der Antworttext sollte in etwa so aussehen:

{
  "networkInterfaces": [
  {
    "kind": "compute#networkInterface",
    "network": "https://www.googleapis.com/compute/v1/projects/my-project/global/networks/network-name-1",
    "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-name-1",
    "networkIP": "10.128.0.15",
    "name": "nic0",
    "accessConfigs": [
      {
        "kind": "compute#accessConfig",
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
        "networkTier": "PREMIUM"
      }
    ],
    "fingerprint": "mBy9xvkWA9M=",
    "stackType": "IPV4_ONLY",
    "nicType": "GVNIC"
  },
  {
    "kind": "compute#networkInterface",
    "network": "https://www.googleapis.com/compute/v1/projects/my-project/global/networks/network-name-2",
    "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-name-2",
    "networkIP": "10.0.20.2",
    "name": "nic1",
    "accessConfigs": [
      {
        "kind": "compute#accessConfig",
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
        "networkTier": "PREMIUM"
      }
    ],
    "ipv6AccessConfigs": [
      {
        "kind": "compute#accessConfig",
        "type": "DIRECT_IPV6",
        "name": "external-ipv6",
        "externalIpv6": "2600:1900:4000:8447:0:0:0:0",
        "externalIpv6PrefixLength": 96,
        "publicPtrDomainName": "",
        "networkTier": "PREMIUM"
      }
    ],
    "fingerprint": "rx6hfNA94f4=",
    "stackType": "IPV4_IPV6",
    "ipv6AccessType": "EXTERNAL",
    "nicType": "GVNIC"
  }
  ]
}

Alle Compute-Instanzen in einem Netzwerk ansehen

Verwenden Sie eine der folgenden Methoden, um alle Compute-Instanzen in einem bestimmten Netzwerk aufzurufen.

Console

  1. Rufen Sie in der Google Cloud -Konsole die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Optional: Mit dem Feld Filter können Sie die Anzahl der angezeigten Netzwerke einschränken.

  3. Klicken Sie auf den Namen des Netzwerks, für das Sie die Compute-Instanzen auflisten möchten.

  4. Wählen Sie den Tab Instanzen aus, um die Instanzen in diesem Netzwerk aufzurufen.

gcloud

Verwenden Sie den Befehl gcloud compute instances list, um die Compute-Instanzen aufzurufen, die ein bestimmtes Netzwerk verwenden.

Verwenden Sie das Flag --filter, um nur die Instanzen aufzulisten, die ein bestimmtes Netzwerk verwenden. Sie können auch ein --format-Flag verwenden, um die Ergebnisse einzuschränken und zu formatieren, z. B.:

gcloud compute instances list \
    --filter 'networkInterfaces[].network:NETWORK_NAME' \
    --format="table(name:sort=1,machineType.basename(),zone.basename(),networkInterfaces[].subnetwork)"

Die Ausgabe sieht in etwa so aus:

NAME: c2-tier1-multinic
MACHINE_TYPE: c2-standard-30
ZONE: us-central1-c
SUBNETWORK: ['https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/default', 'https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/webapps-external-subnet']
NAME: c3-with-lssd MACHINE_TYPE: c3-standard-4-lssd ZONE: us-central1-a SUBNETWORK: ['https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/default']
NAME: example-instance3 MACHINE_TYPE: n2-custom-2-163840-ext ZONE: us-central1-b SUBNETWORK: ['https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/default']
NAME: n4-test-windows MACHINE_TYPE: n4-standard-2 ZONE: us-central1-c SUBNETWORK: ['https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/default']

Prüfen, ob das Tier_1-Netzwerk aktiviert ist

Verwenden Sie eine der folgenden Methoden, um festzustellen, ob die Netzwerkleistung pro VM-Tier_1 für eine Instanz aktiviert ist.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Optional: Mit dem Feld Filter können Sie die Anzahl der angezeigten Instanzen einschränken.

  3. Klicken Sie auf den Namen der Instanz, die Sie prüfen möchten.

  4. Prüfen Sie im Abschnitt Netzwerk den Wert für Gesamtbandbreite für ausgehenden Traffic:

    • TIER_1: Tier_1-Netzwerk ist aktiviert.
    • -: Das Tier_1-Netzwerk ist nicht aktiviert.

gcloud

Verwenden Sie den Befehl gcloud compute instances describe, um die networkPerformanceConfig-Einstellung für eine Instanz aufzurufen. Sie können dem Befehl die Option --format hinzufügen, um die zurückgegebenen Informationen auf bestimmte Felder zu beschränken und die Darstellung zu ändern. Beispiel:

gcloud compute instances describe INSTANCE_NAME \
    --zone=ZONE \
    --format="text(name, networkPerformanceConfig)"

Wenn das Tier_1-Netzwerk nicht für die Instanz konfiguriert ist, ist das Feld networkPerformanceConfig nicht in der Ausgabe enthalten. Wenn das Tier 1-Netzwerk für eine Instanz aktiviert ist, sieht die Ausgabe in etwa so aus:

name:                                              c2-tier1-multinic
networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

REST

Senden Sie eine GET-Anfrage an die Methode instances.get. Wenn Sie der Anfrage einen $fields-Abfrageparameter anhängen, können Sie die Ausgabe auf die Felder name, networkPerformanceConfig und nicType beschränken.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME?$fields=name,networkPerformanceConfig,networkInterfaces.nicType

Ersetzen Sie Folgendes:

  • PROJECT_NAME: Der Name des Projekts, das die Instanz enthält.
  • ZONE: Die Zone für die Instanz, die Sie abfragen möchten
  • INSTANCE_NAME: Der Name der Instanzressource, die zurückgegeben werden soll.

Wenn das Tier_1-Netzwerk nicht für die Instanz konfiguriert ist, ist das Feld networkPerformanceConfig nicht in der Ausgabe enthalten. Wenn das Tier 1-Netzwerk für eine Instanz aktiviert ist, sieht die Ausgabe in etwa so aus:

{
  "name": "c2-tier1-multinic",
  "networkInterfaces": [
    {
      "nicType": "GVNIC"
    },
    {
      "nicType": "GVNIC"
    }
  ],
  "networkPerformanceConfig": {
    "totalEgressBandwidthTier": "TIER_1"
  }
}