Ver la configuración de red de una instancia


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

Antes de comenzar

  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Roles requeridos

Para obtener los permisos que necesita para ver la configuración de red de una instancia, solicite a su administrador que le otorgue el rol de IAM de Administrador de instancia informática (v1) ( roles/compute.instanceAdmin.v1 ) o Administrador de red informática ( roles/compute.networkAdmin ) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Esta función predefinida contiene los permisos necesarios para ver la configuración de red de una instancia. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

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

  • Ver la configuración de red de una instancia: compute.instances.get en la instancia
  • Ver direcciones IP para una instancia: compute.instances.list en el proyecto

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Ver direcciones IP

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

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Opcional: utilice el cuadro de filtro para restringir el número de instancias mostradas.

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

    Si la instancia no tiene una dirección IP externa, puede asignar una .

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

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

nube de gcloud

Hay dos comandos que puede utilizar para ver las direcciones IP de una instancia:

  • gcloud compute instances list muestra todas las direcciones IP utilizadas por una instancia informática, ya sea estática o efímera.
  • gcloud compute addresses list muestra todas las direcciones IP reservadas que están asignadas a una instancia informática.

Esta tarea muestra cómo ver direcciones IP mediante los comandos 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

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

    El resultado es similar al siguiente:

    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 la dirección IP interna o externa de una instancia específica, use el comando gcloud compute instances describe con una marca --format para filtrar la salida.

    Direcciones internas

    Para ver la dirección IP interna de una instancia específica, utilice 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, utilice cualquiera 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

    Reemplace lo siguiente:

    • INSTANCE_NAME : el nombre de la instancia cuya IP interna o externa desea ver
    • ZONE : el nombre de la zona donde se encuentra la instancia.

    Si el comando no devuelve una dirección IP, entonces la instancia no tiene una dirección IP externa configurada.

DESCANSAR

Realice una solicitud GET al método instances.get . Al agregar un parámetro de consulta $fields a la solicitud, puede 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
 

Reemplace lo siguiente:

  • PROJECT_NAME : el nombre del proyecto que contiene la instancia.
  • ZONE : La zona de la instancia que desea consultar.
  • INSTANCE_NAME : el nombre del recurso de instancia que se devolverá.

Si alguna de las direcciones IP no está configurada, ese campo no aparece en el resultado. Para una instancia informática que utiliza una red de doble pila con una dirección IPv6 externa, el cuerpo de su 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 : la dirección IPv4 interna asignada.
  • natIP : la dirección IPv4 externa asignada.
  • externalIpv6 : la dirección IPv6 externa asignada.

Pitón

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

Ver interfaces de red para una instancia

Cada instancia informática tiene al menos una interfaz de red. Puede ver las propiedades configuradas de las interfaces de red para una instancia de las siguientes maneras.

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Opcional: utilice el cuadro de filtro para restringir el número de instancias mostradas.

  3. Haga clic en el nombre de la instancia que desea inspeccionar.

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

  5. Puede hacer clic en el nombre de una NIC para abrir la página de detalles de la interfaz de red . En esta página, puede ver los firewalls y las rutas utilizadas por la NIC y también realizar una prueba de conectividad para la NIC.

nube de gcloud

Para ver las interfaces de red (NIC) de una instancia informática, use el comando gcloud compute instances describe . Puede agregar una opción --format al comando para restringir la información devuelta a 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 devuelve 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

DESCANSAR

Construya una solicitud GET para el método instances.get . Al agregar un parámetro de consulta $fields a la solicitud, puede restringir la salida solo a la propiedad networkInterfaces .

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

Reemplace lo siguiente:

  • PROJECT_NAME : el nombre del proyecto que contiene la instancia.
  • ZONE : La zona de la instancia que desea consultar.
  • INSTANCE_NAME : el nombre del recurso de instancia que se devolverá.

El cuerpo de su 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"
  }
  ]
}

Ver todas las instancias informáticas dentro de una red

Utilice uno de los siguientes métodos para ver todas las instancias informáticas dentro de una determinada red.

Consola

  1. En la consola de Google Cloud, vaya a la página de redes VPC .

    Ir a redes VPC

  2. Opcional: use el cuadro de filtro para restringir la cantidad de redes que se muestran.

  3. Haga clic en el nombre de la red para la que desea enumerar las instancias informáticas.

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

nube de gcloud

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

Utilice un indicador --filter para enumerar solo las instancias que utilizan una red específica. También puedes usar un indicador --format para restringir y formatear 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 al siguiente:

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

Determinar si la red Tier_1 está habilitada

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

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Opcional: utilice el cuadro de filtro para restringir el número de instancias mostradas.

  3. Haga clic en el nombre de la instancia que desea inspeccionar.

  4. En la sección Redes , verifique el valor del nivel de ancho de banda de salida total :

    • TIER_1 : la red de Nivel_1 está habilitada.
    • - : La red Tier_1 no está habilitada.

nube de gcloud

Para ver la configuración de networkPerformanceConfig para una instancia, usa el comando gcloud compute instances describe . Puede agregar una opción --format al comando para restringir la información devuelta a 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 la red Tier_1 no está configurada para la instancia, entonces el campo networkPerformanceConfig no se incluye en la salida. Si la red Tier_1 está habilitada para una instancia, el resultado es similar al siguiente:

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

DESCANSAR

Construya una solicitud GET para el método instances.get . Al agregar un parámetro de consulta $fields a la solicitud, puede restringir la salida 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

Reemplace lo siguiente:

  • PROJECT_NAME : el nombre del proyecto que contiene la instancia.
  • ZONE : La zona de la instancia que desea consultar.
  • INSTANCE_NAME : el nombre del recurso de instancia que se devolverá.

Si la red Tier_1 no está configurada para la instancia, entonces el campo networkPerformanceConfig no se incluye en la salida. Si la red Tier_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"
  }
}