Cómo ver la configuración de red de una instancia


Usa las instrucciones de esta página para ver las interfaces de red, las redes, las subredes y las direcciones IP de una instancia de procesamiento.

Antes de comenzar

  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

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

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para ver la configuración de red de una instancia, pídele a tu administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) o Administrador de redes de Compute (roles/compute.networkAdmin) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para ver la configuración de red de una instancia. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para ver la configuración de red de una instancia:

  • Consulta la configuración de red de una instancia: compute.instances.get en la instancia
  • Para ver las direcciones IP de una instancia, usa compute.instances.list en el proyecto.

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Ver direcciones IP

Puedes ver las direcciones IP internas y externas de tu instancia. Las direcciones IP pueden ser IPv4 o IPv6.

Console

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Opcional: Usa el cuadro Filtro para restringir la cantidad de instancias que se muestran.

  3. Si la instancia tiene una dirección IP externa, esta aparece en la columna IP externa.

    Si la instancia no tiene una dirección IP externa, puedes asignarle una.

Página Instancias de VM que muestra IP internas y externas.

Según las opciones de visualización de columnas, es posible que veas más o menos columnas que las que aparecen en la imagen anterior.

gcloud

Existen dos comandos que puedes usar para ver las direcciones IP de una instancia:

  • gcloud compute instances list muestra todas las direcciones IP que usa una instancia de procesamiento, ya sea estática o efímera.
  • gcloud compute addresses list muestra todas las direcciones IP reservadas que se asignan a una instancia de procesamiento.

En esta tarea, se muestra cómo ver las direcciones IP con los comandos de gcloud compute instances.

  1. Para ver las direcciones IP internas y externas de tus instancias, usa el comando gcloud compute instances list.

    gcloud compute instances list

    Puedes agregar la cláusula --filter para restringir la cantidad de instancias que muestra el comando, por ejemplo, --filter='zone:us-central1-c'.

    El resultado es similar a este:

    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. Para ver las direcciones IP internas o externas de una instancia específica, usa el comando gcloud compute instances describe con una marca --format para filtrar el resultado.

    Direcciones internas

    Para ver la dirección IP interna de una instancia específica, usa cualquiera de los siguientes comandos:

    • Direcciones IPv4:

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

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

    Direcciones externas

    Para ver la dirección IP externa de una instancia específica, usa uno de los siguientes comandos:

    • Direcciones IPv4:

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

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

    Reemplaza lo siguiente:

    • INSTANCE_NAME: El nombre de la instancia cuya IP interna o externa deseas ver.
    • ZONE: El nombre de la zona en la que se encuentra la instancia

    Si el comando no muestra una dirección IP, significa que la instancia no tiene una dirección IP externa configurada.

REST

Realiza una solicitud GET al método instances.get. Si agregas un parámetro de consulta $fields a la solicitud, puedes restringir la salida solo a los campos de interés.

 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
 

Reemplaza lo siguiente:

  • PROJECT_NAME: Es el nombre del proyecto que contiene la instancia.
  • ZONE: La zona de la instancia que deseas consultar
  • INSTANCE_NAME: El nombre del recurso de la instancia que se mostrará

Si no se configuró ninguna de las direcciones IP, ese campo no aparecerá en el resultado. Para una instancia de procesamiento que usa una red de pila doble con una dirección IPv6 externa, el cuerpo de la respuesta se parece al siguiente:

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

Los siguientes campos contienen la información requerida:

  • networkIP: Es la dirección IPv4 interna asignada.
  • natIP: La dirección IPv4 externa asignada.
  • externalIpv6: La dirección IPv6 externa asignada.

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

Cómo ver las interfaces de red de una instancia

Cada instancia de procesamiento tiene, al menos, una interfaz de red. Puedes ver las propiedades configuradas de las interfaces de red de una instancia de las siguientes maneras.

Console

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Opcional: Usa el cuadro Filtro para restringir la cantidad de instancias que se muestran.

  3. Haz clic en el nombre de la instancia que deseas inspeccionar.

  4. En la sección Herramientas de redes, en Interfaces de red, puedes ver las interfaces de red (NIC) creadas para la instancia, la red y la subred asociadas con cada NIC, y sus direcciones IP asignadas.

  5. Puedes hacer clic en el nombre de una NIC para abrir la página Detalles de la interfaz de red. En esta página, puedes ver los firewalls y las rutas que usa la NIC, así como realizar una prueba de conectividad para la NIC.

gcloud

Para ver las interfaces de red (NIC) de una instancia de procesamiento, usa el comando gcloud compute instances describe. Puedes agregar una opción --format al comando para restringir la información que se muestra en campos específicos y cambiar la forma en que se muestra, por ejemplo:

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

El comando anterior muestra un resultado similar al siguiente:

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

Realiza una solicitud GET al método instances.get. Si agregas un parámetro de consulta $fields a la solicitud, puedes restringir el resultado solo a la propiedad networkInterfaces.

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

Reemplaza lo siguiente:

  • PROJECT_NAME: Es el nombre del proyecto que contiene la instancia.
  • ZONE: La zona de la instancia que deseas consultar
  • INSTANCE_NAME: El nombre del recurso de la instancia que se mostrará

El cuerpo de la respuesta debe ser similar al siguiente:

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

Cómo ver todas las instancias de procesamiento de una red

Usa uno de los siguientes métodos para ver todas las instancias de procesamiento dentro de una red determinada.

Console

  1. En la consola de Google Cloud , ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. Opcional: Usa el cuadro Filtrar para restringir la cantidad de redes que se muestran.

  3. Haz clic en el nombre de la red para la que deseas enumerar las instancias de procesamiento.

  4. Selecciona la pestaña Instancias para ver las instancias de esa red.

gcloud

Para ver las instancias de procesamiento que usan una red específica, usa el comando gcloud compute instances list.

Usa una marca --filter para enumerar solo las instancias que usan una red específica. También puedes usar una marca --format para restringir y dar formato a los resultados, por ejemplo:

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

El resultado es similar a este:

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

Determina si las herramientas de redes de Tier_1 están habilitadas

Usa uno de los siguientes métodos para determinar si el rendimiento de red Tier_1 por VM está habilitado para una instancia.

Console

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Opcional: Usa el cuadro Filtro para restringir la cantidad de instancias que se muestran.

  3. Haz clic en el nombre de la instancia que deseas inspeccionar.

  4. En la sección Herramientas de redes, verifica el valor de Nivel de ancho de banda de salida total:

    • TIER_1: Las redes de nivel 1 están habilitadas.
    • -: Las redes Tier_1 no están habilitadas.

gcloud

Para ver la configuración de networkPerformanceConfig de una instancia, usa el comando gcloud compute instances describe. Puedes agregar una opción --format al comando para restringir la información que se muestra en campos específicos y cambiar la forma en que se muestra, por ejemplo:

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

Si no se configuran las redes Tier_1 para la instancia, el campo networkPerformanceConfig no se incluye en el resultado. Si la red de nivel 1 está habilitada para una instancia, el resultado es similar al siguiente:

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

REST

Realiza una solicitud GET al método instances.get. Si agregas un parámetro de consulta $fields a la solicitud, puedes restringir el resultado solo a los campos name, networkPerformanceConfig y nicType.

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

Reemplaza lo siguiente:

  • PROJECT_NAME: Es el nombre del proyecto que contiene la instancia.
  • ZONE: La zona de la instancia que deseas consultar
  • INSTANCE_NAME: El nombre del recurso de la instancia que se mostrará

Si no se configuran las redes Tier_1 para la instancia, el campo networkPerformanceConfig no se incluye en el resultado. Si la red de nivel 1 está habilitada para una instancia, el resultado es similar al siguiente:

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