Criar VMs com várias interfaces de rede

Por padrão, cada instância de máquina virtual (VM) em uma rede de nuvem privada virtual (VPC) tem uma única interface de rede. No entanto, é possível configurar uma instância com várias interfaces de rede. Ao usar várias interfaces de rede de uma instância, cada interface precisa ser anexada a uma sub-rede de uma rede VPC diferente. Não é possível anexar várias interfaces de rede à mesma sub-rede ou às sub-redes que estão na mesma rede VPC.

Só é possível configurar interfaces de VM com endereços IPv4 (pilha única) ou endereços IPv4 e IPv6 (pilha dupla).

Se você não precisar de várias interfaces de rede, siga o procedimento em Como criar e iniciar uma instância para criar instâncias com a configuração de rede padrão.

Para mais informações sobre várias interfaces de rede e como elas funcionam, consulte Várias interfaces de rede.

Especificações

  • Você só pode configurar uma interface de rede quando cria uma instância.
  • Se você criar uma instância com várias interfaces de rede, cada interface precisará se conectar a uma rede VPC diferente. As redes podem ser VPC independentes ou VPC compartilhadas.
  • Uma interface de rede precisa se conectar a uma sub-rede que tenha um intervalo de endereços IP que não se sobreponha ao intervalo de endereços IP de outra interface na mesma instância.
  • Se você quiser criar uma VM conectada a sub-redes em várias redes VPC, todas as redes e sub-redes precisam existir antes de criar a instância. Para mais informações sobre como criar redes e sub-redes, consulte Criar e gerenciar redes VPC.
  • Não é possível excluir uma interface de rede sem excluir a instância a que ela está anexada.
  • Cada instância precisa ter no mínimo uma interface de rede e no máximo oito, dependendo do tipo de máquina da instância.

    • nic0 é obrigatório e precisa ser configurado na criação da instância.
    • nic1 a nic7 são opcionais, mas também precisam ser configurados na criação da instância.

    Para mais informações, consulte Número máximo de interfaces.

  • Toda interface pode ter um endereço IPv4 externo.

  • Se você conectar uma VM a uma sub-rede que tenha um intervalo de sub-rede IPv6 interno ou externo, será possível configurar um endereço IPv6 interno ou externo.

  • O servidor DHCP do Google Cloud envia uma rota padrão (RFC 3442, "rota estática sem classificação") somente para a interface de rede padrão, nic0. Se uma rota padrão for necessária em outra interface de rede, configure o roteamento de políticas na instância.

  • Todas as interfaces de rede da VM precisam se conectar a sub-redes em redes que estão no mesmo projeto que a VM ou a uma rede VPC compartilhada que foi compartilhada com o projeto.

Limitações

  • Não é possível adicionar ou remover interfaces de rede a partir de uma VM atual.

  • O encaminhamento de IP é ativado no nível da VM, não sendo possível aplicá-lo a interfaces individuais.

Permissões, IAM e instâncias com várias interfaces de rede

Para criar uma instância com várias interfaces de rede, você precisa ter um dos seguintes papéis:

Como criar e excluir instâncias e modelos de instância com várias interfaces em um projeto que não usa um ambiente de VPC compartilhada: um usuário que tem o papel proprietário, editor ou administrador da instância do Compute (v1) no nível do projeto pode criar uma instância com várias interfaces associadas a redes e sub-redes VPC que fazem parte desse mesmo projeto.

Como criar e excluir instâncias e modelos de instância com várias interfaces em ambientes de VPC compartilhada: um usuário com o papel de proprietário, editor ou administrador de instâncias do Compute (v1) no projeto pode criar uma instância com várias interfaces. Se alguma das interfaces estiver anexada a uma sub-rede em um projeto host de VPC compartilhada, você também terá o Papel Usuário de rede do Compute (roles/compute.networkUser ) no nível do projeto host da VPC compartilhada ou no nível da sub-rede da VPC compartilhada.

Para saber mais sobre permissões, leia a Documentação do IAM do Compute Engine.

Usar várias interfaces de rede com diferentes tipos de rede VPC

  • O uso de várias interfaces de rede não é compatível com redes legadas.
  • Quando você configurar várias interfaces de rede, conecte cada interface a uma rede VPC de modo automático ou a uma rede VPC de modo personalizado.

Alocação de endereço IP da interface de rede

  • É necessário configurar cada interface de rede com um endereço IP interno principal alocado a partir do intervalo de endereço IP principal de uma sub-rede.
    • O endereço interno principal alocado para cada uma das interfaces em uma única instância não pode ser o mesmo.
  • É possível optar por configurar cada uma das interfaces virtuais (NIC, na sigla em inglês) com um endereço IP externo exclusivo. Os endereços externos podem ser temporários ou reservados.

Número máximo de interfaces de rede

O número de interfaces de rede virtual é escalonado com o número de vCPUs com um mínimo de 2 e máximo de 8.

Use a tabela a seguir para determinar quantas interfaces de rede podem ser anexadas a uma instância:

Número de vCPUs Número de vNICs
2 ou menos 2
4 até 4
6 até 6
8 ou mais até 8

Antes de começar

Criar instâncias de VM com várias interfaces de rede

Para instruções gerais sobre como criar instâncias, consulte Criar e iniciar uma instância de VM.

É possível adicionar várias interfaces de rede ao criar uma instância:

  • No console do Google Cloud, adicione interfaces de rede na página Criar uma instância, na seção Rede > Interfaces de rede.
  • Na CLI gcloud, use o comando instances create. Inclua a sinalização --network-interface para cada interface, seguida por qualquer chave de rede apropriada, como ([network | subnet], private-network-ip, address, external-ipv6-address).

A primeira interface sempre é criada como nic0 e padrão. Isso é importante para alguns outros aspectos da rede do Google Cloud. Por exemplo, os balanceadores de carga do Google Cloud (exceto os balanceadores de carga de rede de passagem ) só distribuem tráfego para nic0.

Console

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. No campo Nome, insira um nome para a instância.

  3. No campo Região, selecione uma região.

  4. No campo Zona, selecione uma zona.

  5. Na seção Opções avançadas, expanda Rede e faça o seguinte:

    1. Na seção Interfaces de rede, expanda a interface de rede para editá-la.

    2. Em Rede e Sub-rede, selecione a rede e a sub-rede que você quer usar.

    Se você quiser configurar endereços IPv6 na interface, selecione uma sub-rede que tenha um intervalo de endereços IPv6 configurado. O tipo de acesso IPv6 da sub-rede determina se a VM recebe um endereço IPv6 interno ou um endereço IPv6 externo.

    1. Selecione um tipo de pilha de IP: IPv4 (pilha única) ou IPv4 e IPv6 (pilha dupla)

    2. Em Endereço IPv4 interno principal, selecione uma das seguintes opções:

      • Temporário para atribuir um novo endereço IPv4 temporário
      • Um endereço IPv4 interno estático reservado da lista
      • Reservar endereço IPv4 interno estático para reservar e atribuir um novo endereço IPv4 interno estático
    3. Em Endereço IPv6 interno principal, selecione uma das seguintes opções:

      • Alocado automaticamente para atribuir um novo endereço IPv6 interno estático
      • Um endereço IPv6 interno estático reservado da lista
      • Reservar endereço IPv6 interno estático para reservar e atribuir um novo endereço IPv6 interno estático
    4. Em Endereço IPv4 externo, selecione uma das seguintes opções:

      • Temporário para atribuir um novo endereço IPv4 temporário
      • Nenhum, para não atribuir um endereço IPv4 externo
      • Um endereço IPv4 estático reservado da lista
      • Reserve um endereço IP externo estático para reservar e atribuir um novo endereço IPv4 externo estático
    5. Em Endereço IPv6 externo, selecione uma das seguintes opções:

      • Alocação automática para atribuir um novo endereço IPv6 externo estático
      • Um endereço IPv6 externo estático reservado da lista
      • Reservar um endereço IPv6 externo estático para reservar e atribuir um novo endereço IPv6 externo estático
    6. Para concluir a modificação da interface de rede, clique em Concluído.

  6. Para adicionar outra interface, clique em Adicionar interface de rede.

  7. Continue com o processo de criação da VM.

  8. Clique em Criar.

gcloud

Para criar interfaces de rede em uma nova instância, use o comando instances create.

Inclua a sinalização --network-interface para cada interface, seguida por qualquer chave de rede apropriada, como network, subnet, private-network-ip, address e external-ipv6-address. Para conferir exemplos de como criar VMs com várias interfaces, consulte Configurações de exemplo.

Esse snippet ilustra apenas a sinalização --network-interface, um dos muitos parâmetros possíveis de especificar ao criar uma instância.

Para ver quais tipos de máquina aceitam o número de interfaces de rede necessário, consulte a tabela Número máximo de interfaces de rede.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --network-interface \
        network=NETWORK,subnet=SUBNET, \
        stack-type=STACK_TYPE, \
        address=EXTERNAL_IPV4_ADDRESS | no-address, \
        private-network-ip=INTERNAL_IPV4_ADDRESS \
        internal-ipv6-address=INTERNAL_IPV6_ADDRESS \
    ...
    --network-interface \
        network=NETWORK,subnet=SUBNET, \
        stack-type=STACK_TYPE, \
        external-ipv6-address=EXTERNAL_IPV6_ADDRESS, \
        external-ipv6-prefix-length=96 \
        ipv6-network-tier=PREMIUM \
    ...

Substitua:

  • INSTANCE_NAME: o nome da instância de VM a ser criada.
  • ZONE: a zona em que a instância é criada.
  • NETWORK: a rede em que a interface é anexada.
  • SUBNET: a sub-rede em que a interface é anexada.
  • STACK_TYPE: o tipo de pilha da interface.

    O valor padrão é IPV4_ONLY. Especifique IPV4_IPV6 para configurar uma interface de pilha dupla.

  • EXTERNAL_IPV4_ADDRESS: atribui o endereço IPv4 externo nomeado à interface.

    É preciso reservar um endereço IPv4 externo anteriormente. Especifique "no-address" em vez de address=EXTERNAL_IPV4_ADDRESS se não quiser que a interface tenha um endereço IP externo. Especifique address='' se quiser que a interface receba um endereço IP externo temporário.

  • INTERNAL_IPV4_ADDRESS: o endereço IPv4 interno que você quer que a interface tenha na sub-rede de destino. Omita se você quiser apenas qualquer endereço válido atribuído.

  • INTERNAL_IPV6_ADDRESS: o endereço IPv6 interno que você quer que a interface tenha na sub-rede de destino. Se você omitir essa sinalização, um endereço IPv6 interno não será atribuído.

  • EXTERNAL_IPV6_ADDRESS: atribui o endereço IPv4 externo nomeado à interface.

    É preciso reservar um endereço IPv6 externo anteriormente. Especifique "no-address" em vez de external-ipv6-address=EXTERNAL_IPV6_ADDRESS se não quiser que a interface tenha um endereço IPv6 externo. Especifique external-ipv6-address='' se quiser que a interface receba um endereço IPv6 externo temporário.

API

Use o método instances.insert para criar uma instância de VM com várias interfaces de rede.

  • Para criar uma instância de VM com endereços IPv4 internos, faça o seguinte:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "networkIP": "IPV4_ADDRESS",
        "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Substitua:

    • SUBNET: a sub-rede em que a interface de rede está localizada.
    • REGION: a região que contém a instância.
    • PROJECT_ID: o ID do projeto que contém a instância.
    • ZONE: é a zona que contém a instância.
    • IPV4_ADDRESS: o endereço IPv4 interno que você quer atribuir à interface de rede.
  • Para criar uma instância de VM com endereços IPv6 internos, faça o seguinte:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
        "ipv6Address": "IPV6_ADDRESS",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV4_IPV6,
        "ipv6AccessType": INTERNAL
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Substitua:

    • SUBNET: a sub-rede em que a interface de rede está localizada.
    • REGION: a região que contém a instância.
    • PROJECT_ID: o ID do projeto que contém a instância.
    • ZONE: é a zona que contém a instância.
    • IPV6_ADDRESS: o endereço IPv6 interno que você quer atribuir à interface de rede.

Terraform

É possível usar um recurso do Terraform para criar uma instância de VM com várias interfaces de rede.

Os argumentos do Terraform têm exemplos de valores que podem ser alterados.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace with your project ID in quotes
  zone         = "us-central1-b"
  name         = "backend-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = var.subnet_1 # Replace with self link to a subnetwork in quotes
    network_ip = "10.0.0.14"
  }
  network_interface {
    subnetwork = var.subnet_2 # Replace with self link to a subnetwork in quotes
    network_ip = "10.10.20.14"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Exemplos de configurações

As seções a seguir mostram como criar VMs com várias interfaces.

Configurar várias interfaces de rede com endereços IPv4

A amostra de comando a seguir cria uma instância com três interfaces de rede.

 gcloud compute instances create vm1 --machine-type=n1-standard-4 \
    --network-interface '' \
    --network-interface network=net1,subnet=subnet-a,private-network-ip=10.10.10.2,address=EXTERNAL_IPV4_ADDRESS \
    --network-interface network=net2,subnet=subnet-b,private-network-ip=10.10.20.2,no-address

As interfaces são criadas da seguinte forma:

  • A conta nic0 é criada com as configurações padrão. A interface é anexada a uma sub-rede na rede VPC padrão, com um endereço IP interno alocado automaticamente e um temporário.

  • nic1 está anexado à sub-rede subnet-a na rede net1, com um endereço IPv4 interno de 10.10.10.2 e um endereço IPv4 externo estático, EXTERNAL_IPV4_ADDRESS.

  • nic2 está anexado à sub-rede subnet-b na rede net2, com um endereço IPv4 interno de 10.10.20.2 e nenhum endereço IP externo.

Para uma descrição completa do comando gcloud compute instances create e da sinalização --network-interface, leia a documentação para o comando.

É possível usar o endereço IP da interface de rede adicionada para configurar o encaminhamento de DNS. Para saber mais sobre como configurar zonas de encaminhamento do Cloud DNS, consulte Zonas de encaminhamento.

Configurar várias interfaces de rede com endereços IPv4 e IPv6

A amostra de comando a seguir cria uma instância de pilha dupla com duas interfaces de rede.

gcloud compute instances create vm1 \
--network-interface network=dual-int,subnet=int-subnet,stack-type=IPV4_IPV6 \
--network-interface network=dual-ext,subnet=ext-subnet,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \
--machine-type=n1-standard-4 --zone=us-west2-a

As interfaces são criadas da seguinte forma:

  • nic0 está anexado à sub-rede int-subnet na rede dual-int, com um endereço IPv4 interno efêmero e um endereço IPv6 interno temporário.

  • nic1 está anexado à sub-rede ext-subnet na rede dual-ext, com um endereço IPv4 interno temporário e um endereço IPv6 externo temporário.

Configurar várias interfaces de rede para grupos de instâncias

É possível usar instâncias com várias interfaces de rede em grupos de instâncias não gerenciadas e em grupos de instâncias gerenciadas.

Para grupos de instâncias não gerenciadas, crie cada instância individualmente, garantindo que a interface de rede nic0 de cada VM esteja anexada a mesma sub-rede. Em seguida, adicione as instâncias de VM ao grupo de instâncias não gerenciadas.

Para configurar várias interfaces de rede para grupos de instâncias gerenciadas, é preciso especificar a configuração de rede para cada interface no modelo de instância. Para isso, defina a sinalização --network-interface uma vez para cada interface. O exemplo a seguir cria um modelo de instância com três interfaces de rede:

gcloud compute instance-templates create template-1 \
    --network-interface subnet=net0-subnet-a \
    --network-interface subnet=net1-subnet-b,no-address \
    --network-interface subnet=net2-subnet-c,no-address \
    --region us-central1

Como os nomes das sub-redes em cada região de um projeto precisam ser exclusivos, a especificação de sub-redes por nome associa implicitamente cada interface a uma rede VPC. Cada interface precisa usar uma sub-rede que esteja em uma rede VPC exclusiva:

  • nic0 usa a sub-rede net0-subnet-a
  • nic1 usa a sub-rede net1-subnet-b
  • nic2 usa a sub-rede net2-subnet-c

A opção no-address na sinalização --network-interface indica que a interface está configurada sem um endereço IP externo. O endereço IP interno vem da sub-rede usada pela interface. Para informações completas sobre as sinalizações e a sintaxe, consulte a sinalização --network-interface para o comando instance-templates create.

Configurar roteamento de política

Para imagens aceitas pelo Google, quando você precisar de uma interface de rede secundária (que não seja nic0) para se comunicar com qualquer endereço IP que não seja local para o intervalo de sub-rede principal da sub-rede associada à interface secundária, você precisará configurar o roteamento de política para garantir que os pacotes de saída saiam da interface correta. Nesses casos, você precisa configurar uma tabela de roteamento separada para cada interface de rede usando o roteamento de políticas.

O roteamento de políticas com base na origem não é compatível com os sistemas operacionais Windows.

Encontrar o gateway padrão da interface

Para encontrar o gateway padrão da interface de uma VM, consulte o servidor de metadados.

  • Para encontrar o gateway padrão do endereço IPv4 de uma interface, faça a seguinte solicitação na VM:

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google"
    

    Substitua INTERFACE_NUMBER pelo número da interface. Por exemplo, para encontrar o gateway padrão de nic1, use 1.

  • Para encontrar o gateway padrão do endereço IPv6 de uma interface, faça a seguinte solicitação na VM:

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway-ipv6 -H "Metadata-Flavor: Google"
    

    Substitua INTERFACE_NUMBER pelo número da interface. Por exemplo, para encontrar o gateway padrão de nic1, use 1.

Configurar o roteamento com base em políticas em VMs do Linux

Para evitar a perda de conectividade com a VM enquanto altera a rota padrão, use o console serial.

  • Configure o roteamento de políticas para cada interface secundária com ifconfig. Não configure a interface principal (nic0), já que ela tem uma rota configurada.

    sudo ifconfig NIC IP_ADDRESS netmask NETMASK broadcast IP_ADDRESS mtu 1430
    echo "1 rt1" | sudo tee -a /etc/iproute2/rt_tables
    sudo ip route add GATEWAY src IP_ADDRESS dev NIC table rt1
    sudo ip route add default via GATEWAY dev NIC table rt1
    sudo ip rule add from IP_ADDRESS/PREFIX_LENGTH table rt1
    sudo ip rule add to IP_ADDRESS/PREFIX_LENGTH  table rt1
    

    Substitua:

    • NIC: a interface em que você quer adicionar uma rota. Por exemplo, eth1.
    • IP_ADDRESS: o endereço IP configurado na interface.
    • NETMASK: a máscara de rede da interface. Por exemplo, 255.255.255.255.
    • GATEWAY: o endereço IP padrão do gateway da interface.
    • PREFIX_LENGTH: o tamanho do prefixo do endereço IP configurado.

Configurar o roteamento com base em políticas no Ubuntu versão 18.04 ou mais recente

Com a mudança de ifupdown para Netplan como o utilitário de configuração de rede padrão para o Ubuntu 18.04 LTS ou posterior, o pacote ifconfig não é pré-instalado. Além disso, as alterações feitas nos arquivos de configuração de rede do Netplan não são mantidas nas reinicializações da VM do Compute Engine.

  1. Crie um script de inicialização que define uma tabela de roteamento para cada interface de rede na inicialização da VM. Saiba mais sobre como criar scripts de inicialização.

    O uso de um script de inicialização não funciona se você estiver ativando um compartilhamento de arquivos na sua VM porque eles são executados somente depois que as partições são ativadas. Isso deixaria o compartilhamento de arquivos sempre ativado na interface padrão antes da criação da tabela de roteamento pelo script de inicialização.

  2. Para ativar um compartilhamento de arquivos em uma VM por meio de uma rede secundária, ou seja, uma interface diferente de nic0, configure a política de roteamento da VM do cliente para garantir que o compartilhamento de arquivos seja ativado através da interface de rede correta do Google. Para fazer isso, modifique os seguintes arquivos:

    • Em /etc/default/instance_configs.cfg, defina a sinalização setup de NetworkInterfaces como false:

      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
          setup = false
      

    • Em /etc/network/interfaces, adicione as seguintes linhas à interface de interesse:

      auto eth1
      iface eth1 inet dhcp
          up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
      

    Substitua:

    • filestore-reserved-address-range é o intervalo de endereços reservado para uso da instância do Compute Engine.
    • default-gateway-of-nic-to-filestore é o endereço IP do gateway padrão da NIC conectada à rede VPC compartilhada com a instância do Compute Engine.

    Para mais informações sobre como ativar um compartilhamento de arquivos em uma instância de VM, consulte Como ativar o compartilhamento de arquivos no Compute Engine.

Solução de problemas

Não consigo criar uma VM com várias interfaces

Veja uma das seguintes mensagens de erro:

  • Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.

    Se você receber essa mensagem de erro, está tentando criar mais interfaces do que o máximo aceito pelo tipo de máquina da sua instância. Consulte a tabela de número máximo de interfaces.

  • Networks must be distinct for NICs attached to a VM.

    Se você receber essa mensagem, está tentando criar mais de uma interface na mesma rede. Cada interface de rede precisa ser anexada a uma rede VPC diferente.

  • Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.

    Se você receber essa mensagem, os intervalos CIDR associados às interfaces da sua VM estão sobrepostos. Esses intervalos CIDR incluem todos os intervalos primários de sub-redes associadas às interfaces da VM, bem como os intervalos secundários usados nos intervalos de IP de alias. Cada interface é anexada a uma sub-rede, cada uma em uma rede VPC diferente, que não pode se sobrepor a sub-redes de outras interfaces. Por exemplo, se você estiver tentando criar sua instância na região us-west1, poderá verificar os intervalos CIDR principais da sub-rede usando o seguinte comando ou o Console do Google Cloud.

    gcloud compute networks subnets list --regions us-west1
    NAME                REGION    NETWORK          RANGE
    default             us-west1  default          10.138.0.0/20
    overlapping-subnet  us-west1  test-network     10.138.8.0/24
    

    Para verificar os intervalos de CIDR de sub-rede secundária, use o seguinte comando ou o Console do Google Cloud.

    gcloud compute networks subnets describe overlapping-subnet --region us-west1
    
    ...
    ipCidrRange: 10.128.8.0/24
    ...
    secondaryIpRanges:
    - ipCidrRange: 10.138.8.0/24
      rangeName: conflicting-range
    
  • Multiple network interfaces are not supported on legacy networks.

    Se você receber essa mensagem, está tentando criar sua instância em uma rede legada. Instâncias com várias interfaces não são compatíveis com redes legadas. Verifique se uma rede é legada usando o seguinte comando ou o Console do Google Cloud. O campo Modo indica o tipo de rede.

    gcloud compute networks list
    NAME             MODE    IPV4_RANGE     GATEWAY_IPV4
    default          auto
    legacy-network   legacy  10.240.0.0/16  10.240.0.1
    test-network     custom
    

  • Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'

    Se você receber essa mensagem, a conta com que fez login não tem permissões do IAM necessárias para criar uma instância. Consulte Permissões do IAM para informações detalhadas sobre os papéis necessários para a criação de instâncias. Verifique se a política do IAM associada ao seu projeto concede a você os seguintes papéis: OWNER, EDITOR ou compute.instanceAdmin.v1. Para criar instâncias na VPC compartilhada, você também precisaria do papel compute.networkUser. No exemplo abaixo, a conta email2@gmail.com não tem permissões de IAM suficientes para criar uma instância. Para ver instruções mais detalhadas, consulte o guia do IAM Como conceder, alterar e revogar acesso a recursos.

    gcloud projects get-iam-policy PROJECT_ID
    bindings:
    - members:
      - user:email1@gmail.com
        role: roles/owner
    - members:
      - serviceAccount:our-project-123@appspot.gserviceaccount.com
      - serviceAccount:123456789012-compute@developer.gserviceaccount.com
        role: roles/editor
    - members:
      - user:email2@gmail.com
        role: roles/viewer
    etag: BwUjMhXbSPU=
    version: 1
    

    Peça ao proprietário ou editor do seu projeto que conceda a você um papel de OWNER, EDITOR ou compute.instanceAdmin.v1. Você precisaria da função compute.networkUser também se estivesse associando qualquer interface a uma sub-rede pertencente à VPC compartilhada.

    gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
    

Não consigo me conectar ao endereço IP interno de uma interface secundária

  • Verifique as regras de firewall para ver se elas permitem a conectividade com a interface secundária da VM. Observe as regras de firewall para a rede que está conectada à interface secundária acessando o Console do Google Cloud e clicando na rede VPC apropriada ou usando o seguinte comando gcloud.

    gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
    
  • Verifique se você está tentando se conectar a uma interface secundária de um endereço de Internet ou de fora da rede da interface secundária. Só é possível se conectar ao IP interno de uma interface de dentro da respectiva rede. Se você precisa alcançar essa interface de fora da rede, é possível atribuir um endereço IP externo à interface secundária.

  • Verifique se você está tentando se conectar ao IP interno da interface secundária de fora da sub-rede à qual a interface secundária está anexada, de uma outra sub-rede da mesma rede ou de uma rede com peering. Várias interfaces de rede por instância explicam a interação entre o peering da VPC e instâncias de VM com várias interfaces. Para alcançar interfaces secundárias de fora da sub-rede da interface, talvez seja necessário configurar rotas na VM. Consulte Comportamento do DHCP com várias interfaces de rede para mais detalhes sobre como o DHCP programa rotas padrão na VM.

  • Se você estiver tentando acessar um endereço IPv6, consulte também Não consigo me conectar ao endereço IPv6 de uma interface secundária.

Não consigo me conectar a uma interface secundária usando um endereço IP externo

O servidor DHCP programa uma rota padrão somente na interface de rede principal da VM. Se você quiser se conectar à interface secundária usando um IP externo, há duas opções. Se você precisa apenas se conectar fora da rede na interface de rede secundária, é possível definir uma rota padrão nessa interface de rede. Caso contrário, você pode usar a instrução Como configurar o roteamento de políticas para configurar uma tabela de roteamento separada usando roteamento de políticas baseadas na fonte em sua VM.

Se você estiver tentando acessar um endereço IPv6, consulte também Não consigo me conectar ao endereço IPv6 de uma interface secundária.

Não consigo me conectar ao endereço IPv6 de uma interface secundária

Se você estiver tentando acessar um endereço IPv6, verifique se a VM tem a versão google-guest-agent 20220603.00 ou posterior instalada. Para mais informações sobre como gerenciar versões google-guest-agent, consulte Ambiente convidado.

Se você tiver uma versão anterior do google-guest-agent, as interfaces secundárias não receberão uma rota de sub-rede IPv6. Recomendamos que você atualize o agente convidado para que as rotas sejam configuradas corretamente.

No entanto, como solução alternativa, é possível criar um script de inicialização para fazer a seguinte alteração de configuração em cada interface secundária.

sudo sysctl -w net.ipv6.conf.INTERFACE_NAME.accept_ra_rt_info_max_plen=128

Substitua INTERFACE_NAME pelo nome da interface, por exemplo, eth1 ou ens5.

Estou com problemas de conectividade ao usar uma máscara de rede que não seja /32

Por padrão, o servidor de metadados da instância responde apenas às solicitações ARP para o gateway padrão.

Para configurar interfaces com uma máscara de rede diferente de /32, crie uma imagem usando a sinalização --guest-os-features MULTI_IP_SUBNET e use-a para criar sua instância. Por exemplo, se você estiver usando uma imagem baseada em debian-9, poderá criar uma imagem usando o seguinte comando:

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone us-west1-a \
     --guest-os-features MULTI_IP_SUBNET

Para visualizar os recursos de convidado configurados na imagem, execute o comando gcloud compute images describe na imagem do convidado.

gcloud compute images describe debian-9-multi-ip-subnet

Para mais informações sobre como criar imagens personalizadas, consulte Como criar, excluir e suspender o uso de imagens personalizadas.

Não consigo resolver o nome do host interno de uma VM com várias interfaces de rede

Quando uma consulta DNS é executada com um nome do host interno, ela é resolvida na interface de rede principal (nic0) da instância.

Se nic0 estiver anexado a uma rede VPC diferente da rede VPC da instância que emite a consulta DNS, a consulta DNS falhará. O DNS interno é resolvido somente dentro de uma determinada rede VPC. Para mais informações, consulte Resolução de DNS com várias interfaces de rede.

Como solucionar problemas usando o console serial

Muitas vezes, é recomendável ativar o console serial em uma VM para depurar problemas relacionados à configuração. É possível ativar o console serial para depuração interativa seguindo as etapas em Solução de problemas usando o console serial.