Visualizar a configuração de rede de uma instância


Use as instruções nesta página para visualizar as interfaces de rede, redes, sub-redes e endereços IP de uma instância de computação.

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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 as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        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 mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções obrigatórias

Para obter as permissões necessárias para visualizar a configuração de rede de uma instância, peça ao administrador para conceder a você a função do IAM Administrador de instância do Compute (v1) ( roles/compute.instanceAdmin.v1 ) ou Administrador de rede do Compute ( roles/compute.networkAdmin ) no projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Essa função predefinida contém as permissões necessárias para visualizar a configuração de rede de uma instância. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para visualizar a configuração de rede de uma instância:

  • Visualize a configuração de rede de uma instância: compute.instances.get na instância
  • Visualize endereços IP de uma instância: compute.instances.list no projeto

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Ver endereços IP

Você pode visualizar os endereços IP internos e externos da sua instância. Os endereços IP podem ser endereços IPv4 ou IPv6.

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Opcional: Use a caixa Filtro para restringir o número de instâncias mostradas.

  3. Se a instância tiver um endereço IP externo, ele aparecerá na coluna IP externo .

    Se a instância não tiver um endereço IP externo, você poderá atribuir um .

Página de instâncias de VM mostrando IPs internos e externos.

Dependendo das opções de exibição de colunas, você poderá ver mais colunas ou menos colunas do que aparecem na imagem anterior.

gcloud

Existem dois comandos que você pode usar para visualizar os endereços IP de uma instância:

  • gcloud compute instances list mostra todos os endereços IP usados ​​por uma instância de computação, seja ela estática ou temporária.
  • gcloud compute addresses list mostra todos os endereços IP reservados atribuídos a uma instância de computação.

Esta tarefa mostra como visualizar endereços IP usando comandos gcloud compute instances .

  1. Para visualizar os endereços IP internos e externos das suas instâncias, use o comando gcloud compute instances list .

    gcloud compute instances list

    Você pode anexar a cláusula --filter para restringir o número de instâncias retornadas pelo comando, por exemplo, --filter='zone:us-central1-c' .

    A saída é semelhante à seguinte:

    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 visualizar o endereço IP interno ou externo de uma instância específica, use o comando gcloud compute instances describe com uma sinalização --format para filtrar a saída.

    Endereços internos

    Para visualizar o endereço IP interno de uma instância específica, use um dos seguintes comandos:

    • Endereços IPv4:

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

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

    Endereços externos

    Para visualizar o endereço IP externo de uma instância específica, use um dos seguintes comandos:

    • Endereços IPv4:

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

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

    Substitua o seguinte:

    • INSTANCE_NAME : o nome da instância cujo IP interno ou externo você deseja visualizar
    • ZONE : o nome da zona onde a instância está localizada.

    Se o comando não retornar um endereço IP, a instância não terá um endereço IP externo configurado.

DESCANSAR

Faça uma solicitação GET para o método instances.get . Ao anexar um parâmetro de consulta $fields à solicitação, você pode restringir a saída apenas aos campos de interesse.

 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
 

Substitua o seguinte:

  • PROJECT_NAME : o nome do projeto que contém a instância.
  • ZONE : a zona da instância que você deseja consultar.
  • INSTANCE_NAME : o nome do recurso de instância a ser retornado.

Se algum dos endereços IP não estiver configurado, esse campo não aparecerá na saída. Para uma instância de computação que usa uma rede de pilha dupla com um endereço IPv6 externo, o corpo da resposta é semelhante ao seguinte:

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

Os seguintes campos contêm as informações necessárias:

  • networkIP : o endereço IPv4 interno atribuído.
  • natIP : o endereço IPv4 externo atribuído.
  • externalIpv6 : o endereço IPv6 externo atribuído.

Pitão

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

Visualizar interfaces de rede para uma instância

Cada instância de computação possui pelo menos uma interface de rede. Você pode visualizar as propriedades configuradas das interfaces de rede de uma instância das seguintes maneiras.

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Opcional: Use a caixa Filtro para restringir o número de instâncias mostradas.

  3. Clique no nome da instância que você deseja inspecionar.

  4. Na seção Rede , em Interfaces de rede , você pode ver as interfaces de rede (NICs) criadas para a instância, a rede e a sub-rede associadas a cada NIC e seus endereços IP atribuídos.

  5. Você pode clicar no nome de uma NIC para abrir a página de detalhes da interface de rede . Nesta página você pode ver os firewalls e rotas usadas pela NIC e também realizar um teste de conectividade para a NIC.

gcloud

Para visualizar as interfaces de rede (NICs) de uma instância de computação, use o comando gcloud compute instances describe . Você pode anexar uma opção --format ao comando para restringir as informações retornadas a campos específicos e alterar a forma como elas são exibidas, por exemplo:

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

O comando anterior retorna uma saída semelhante a esta:

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

Construa uma solicitação GET para o método instances.get . Ao anexar um parâmetro de consulta $fields à solicitação, você pode restringir a saída apenas à propriedade networkInterfaces .

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

Substitua o seguinte:

  • PROJECT_NAME : o nome do projeto que contém a instância.
  • ZONE : a zona da instância que você deseja consultar.
  • INSTANCE_NAME : o nome do recurso de instância a ser retornado.

Seu corpo de resposta deve ser semelhante ao seguinte:

{
  "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 as instâncias de computação em uma rede

Use um dos métodos a seguir para visualizar todas as instâncias de computação em uma determinada rede.

Console

  1. No console do Google Cloud, acesse a página de redes VPC .

    Acesse redes VPC

  2. Opcional: Use a caixa Filtro para restringir o número de redes mostradas.

  3. Clique no nome da rede para a qual você deseja listar as instâncias de computação.

  4. Selecione a guia Instâncias para visualizar as instâncias nessa rede.

gcloud

Para visualizar as instâncias de computação que usam uma rede específica, use o comando gcloud compute instances list .

Use um sinalizador --filter para listar apenas as instâncias que usam uma rede específica. Você também pode usar um sinalizador --format para restringir e formatar os resultados, por exemplo:

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

A saída é semelhante à seguinte:

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

Determine se a rede Tier_1 está habilitada

Use um dos métodos a seguir para determinar se o desempenho de rede por VM Tier_1 está habilitado para uma instância.

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Opcional: Use a caixa Filtro para restringir o número de instâncias mostradas.

  3. Clique no nome da instância que você deseja inspecionar.

  4. Na seção Rede , verifique o valor do nível de largura de banda de saída total :

    • TIER_1 : a rede Tier_1 está habilitada.
    • - : A rede Tier_1 não está habilitada.

gcloud

Para visualizar a configuração networkPerformanceConfig de uma instância, use o comando gcloud compute instances describe . Você pode anexar uma opção --format ao comando para restringir as informações retornadas a campos específicos e alterar a forma como elas são exibidas, por exemplo:

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

Se a rede Tier_1 não estiver configurada para a instância, o campo networkPerformanceConfig não será incluído na saída. Se a rede Tier_1 estiver habilitada para uma instância, a saída será semelhante a esta:

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

DESCANSAR

Construa uma solicitação GET para o método instances.get . Ao anexar um parâmetro de consulta $fields à solicitação, você pode restringir a saída apenas aos campos name , networkPerformanceConfig e nicType .

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

Substitua o seguinte:

  • PROJECT_NAME : o nome do projeto que contém a instância.
  • ZONE : a zona da instância que você deseja consultar.
  • INSTANCE_NAME : o nome do recurso de instância a ser retornado.

Se a rede Tier_1 não estiver configurada para a instância, o campo networkPerformanceConfig não será incluído na saída. Se a rede Tier_1 estiver habilitada para uma instância, a saída será semelhante a esta:

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