Melihat konfigurasi jaringan untuk instance


Gunakan petunjuk di halaman ini untuk melihat antarmuka jaringan, jaringan, subnet, dan alamat IP untuk instance komputasi.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud . Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    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

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

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

        gcloud init

      Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna melihat konfigurasi jaringan untuk instance, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) atau Compute Network Admin (roles/compute.networkAdmin) di project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk melihat konfigurasi jaringan untuk instance. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melihat konfigurasi jaringan untuk instance:

  • Melihat konfigurasi jaringan untuk instance: compute.instances.get pada instance
  • Melihat alamat IP untuk instance: compute.instances.list di project

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Melihat alamat IP

Anda dapat melihat alamat IP internal dan eksternal untuk instance Anda. Alamat IP dapat berupa alamat IPv4 atau IPv6.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance VM.

    Buka instance VM

  2. Opsional: Gunakan kotak Filter untuk membatasi jumlah instance yang ditampilkan.

  3. Jika instance memiliki alamat IP eksternal, instance tersebut akan muncul di kolom External IP.

    Jika instance tidak memiliki alamat IP eksternal, Anda dapat menetapkannya.

Halaman instance VM yang menampilkan IP internal dan eksternal.

Bergantung pada opsi tampilan kolom, Anda mungkin melihat lebih banyak kolom atau lebih sedikit kolom daripada yang muncul di gambar sebelumnya.

gcloud

Ada dua perintah yang dapat Anda gunakan untuk melihat alamat IP untuk instance:

  • gcloud compute instances list menampilkan semua alamat IP yang digunakan oleh instance compute, baik statis maupun sementara.
  • gcloud compute addresses list menampilkan semua alamat IP yang dicadangkan yang ditetapkan ke instance komputasi.

Tugas ini menunjukkan cara melihat alamat IP menggunakan perintah gcloud compute instances.

  1. Untuk melihat alamat IP internal dan eksternal instance, gunakan perintah gcloud compute instances list.

    gcloud compute instances list

    Anda dapat menambahkan klausul --filter untuk membatasi jumlah instance yang ditampilkan oleh perintah, misalnya, --filter='zone:us-central1-c'.

    Outputnya mirip dengan hal berikut ini:

    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. Untuk melihat alamat IP internal atau eksternal untuk instance tertentu, gunakan perintah gcloud compute instances describe dengan tanda --format untuk memfilter output.

    Alamat internal

    Untuk melihat alamat IP internal untuk instance tertentu, gunakan salah satu perintah berikut:

    • Alamat IPv4:

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

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

    Alamat eksternal

    Untuk melihat alamat IP eksternal untuk instance tertentu, gunakan salah satu perintah berikut:

    • Alamat IPv4:

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

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

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance yang IP internal atau eksternalnya ingin Anda lihat
    • ZONE: nama zona tempat instance berada.

    Jika perintah tidak menampilkan alamat IP, berarti instance tidak memiliki alamat IP eksternal yang dikonfigurasi.

REST

Buat permintaan GET ke metode instances.get. Dengan menambahkan parameter kueri $fields ke permintaan, Anda dapat membatasi output hanya ke kolom yang diinginkan.

 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
 

Ganti kode berikut:

  • PROJECT_NAME: Nama project yang berisi instance.
  • ZONE: Zona untuk instance yang ingin Anda kueri.
  • INSTANCE_NAME: Nama resource instance yang akan ditampilkan.

Jika salah satu alamat IP tidak dikonfigurasi, kolom tersebut tidak akan muncul dalam output. Untuk instance komputasi yang menggunakan jaringan stack ganda dengan alamat IPv6 eksternal, isi respons Anda akan menyerupai berikut:

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

Kolom berikut berisi informasi yang diperlukan:

  • networkIP: alamat IPv4 internal yang ditetapkan.
  • natIP: alamat IPv4 eksternal yang ditetapkan.
  • externalIpv6: alamat IPv6 eksternal yang ditetapkan.

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

Melihat antarmuka jaringan untuk instance

Setiap instance komputasi memiliki minimal satu antarmuka jaringan. Anda dapat melihat properti antarmuka jaringan yang dikonfigurasi untuk instance dengan cara berikut.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance VM.

    Buka instance VM

  2. Opsional: Gunakan kotak Filter untuk membatasi jumlah instance yang ditampilkan.

  3. Klik nama instance yang ingin Anda periksa.

  4. Di bagian Networking, pada bagian Network interfaces, Anda dapat melihat antarmuka jaringan (NIC) yang dibuat untuk instance, jaringan, dan subnet yang terkait dengan setiap NIC, serta alamat IP yang ditetapkan.

  5. Anda dapat mengklik nama NIC untuk membuka halaman Network interface details. Di halaman ini, Anda dapat melihat firewall dan rute yang digunakan oleh NIC dan juga melakukan uji konektivitas untuk NIC.

gcloud

Untuk melihat antarmuka jaringan (NIC) untuk instance komputasi, gunakan perintah gcloud compute instances describe. Anda dapat menambahkan opsi --format ke perintah untuk membatasi informasi yang ditampilkan ke kolom tertentu dan mengubah cara informasi tersebut ditampilkan, misalnya:

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

Perintah sebelumnya menampilkan output yang mirip dengan berikut ini:

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

Buat permintaan GET ke metode instances.get. Dengan menambahkan parameter kueri $fields ke permintaan, Anda dapat membatasi output hanya ke properti networkInterfaces.

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

Ganti kode berikut:

  • PROJECT_NAME: Nama project yang berisi instance.
  • ZONE: Zona untuk instance yang ingin Anda kueri.
  • INSTANCE_NAME: Nama resource instance yang akan ditampilkan.

Isi respons Anda akan mirip dengan berikut ini:

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

Melihat semua instance komputasi dalam jaringan

Gunakan salah satu metode berikut untuk melihat semua instance komputasi dalam jaringan tertentu.

Konsol

  1. Di konsol Google Cloud , buka halaman VPC networks.

    Buka jaringan VPC

  2. Opsional: Gunakan kotak Filter untuk membatasi jumlah jaringan yang ditampilkan.

  3. Klik nama jaringan yang instance komputasinya ingin Anda cantumkan.

  4. Pilih tab Instances untuk melihat instance dalam jaringan tersebut.

gcloud

Untuk melihat instance komputasi yang menggunakan jaringan tertentu, gunakan perintah gcloud compute instances list.

Gunakan flag --filter untuk hanya mencantumkan instance yang menggunakan jaringan tertentu. Anda juga dapat menggunakan tanda --format untuk membatasi dan memformat hasil, misalnya:

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

Outputnya mirip dengan hal berikut ini:

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']

Menentukan apakah jaringan Tier_1 diaktifkan

Gunakan salah satu metode berikut untuk menentukan apakah performa jaringan Tingkat_1 per VM diaktifkan untuk instance.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance VM.

    Buka instance VM

  2. Opsional: Gunakan kotak Filter untuk membatasi jumlah instance yang ditampilkan.

  3. Klik nama instance yang ingin Anda periksa.

  4. Di bagian Networking, periksa nilai untuk Total egress bandwidth tier:

    • TIER_1: Jaringan Tingkat_1 diaktifkan.
    • -: Jaringan Tingkat_1 tidak diaktifkan.

gcloud

Untuk melihat setelan networkPerformanceConfig untuk instance, gunakan perintah gcloud compute instances describe. Anda dapat menambahkan opsi --format ke perintah untuk membatasi informasi yang ditampilkan ke kolom tertentu dan mengubah cara informasi tersebut ditampilkan, misalnya:

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

Jika jaringan Tingkat_1 tidak dikonfigurasi untuk instance, kolom networkPerformanceConfig tidak akan disertakan dalam output. Jika jaringan Tier_1 diaktifkan untuk instance, output-nya akan mirip dengan berikut ini:

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

REST

Buat permintaan GET ke metode instances.get. Dengan menambahkan parameter kueri $fields ke permintaan, Anda dapat membatasi output hanya ke kolom name, networkPerformanceConfig, dan nicType.

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

Ganti kode berikut:

  • PROJECT_NAME: Nama project yang berisi instance.
  • ZONE: Zona untuk instance yang ingin Anda kueri.
  • INSTANCE_NAME: Nama resource instance yang akan ditampilkan.

Jika jaringan Tingkat_1 tidak dikonfigurasi untuk instance, kolom networkPerformanceConfig tidak akan disertakan dalam output. Jika jaringan Tier_1 diaktifkan untuk instance, output-nya akan mirip dengan berikut ini:

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