Como configurar o IPv6 para instâncias e modelos de instância

Será possível configurar endereços IPv6 em uma instância de máquina virtual (VM) se a sub-rede à qual a VM estiver conectada tiver um intervalo IPv6 configurado.

Para mais informações sobre o IPv6, consulte Intervalos de sub-rede IPv6.

Especificações

  • As VMs que têm configurações IPv4 e IPv6 são dual-stack. As interfaces em VMs de pilha dupla são alocadas para um único intervalo /96 de endereços IPv6; o primeiro endereço IPv6 no intervalo (/128) está configurado na interface. O endereço IPv6 é adicionado a todos os endereços IPv4 configurados na interface. Não é possível configurar uma VM para ter apenas endereços IPv6.

  • Qualquer interface na VM pode ter endereços IPv6 configurados. Para mais informações sobre como configurar várias interfaces de rede, consulte Visão geral de várias interfaces de rede.

  • Para configurar endereços IPv6 em uma interface de VM, a interface precisa estar conectada a uma sub-rede de pilha dupla.

  • A configuração do tipo de acesso IPv6 de uma sub-rede determina se a sub-rede tem um intervalo IPv6 interno ou externo. As VMs conectadas herdam o tipo de acesso IPv6 da sub-rede.

Limitações

A conexão com APIs e serviços do Google que usam endereços IPv6 não é compatível e resultará em uma resposta ICMP destination unreachable. A maioria dos aplicativos reverterá para o IPv4 de forma transparente.

Para mais informações sobre como acessar APIs e serviços do Google usando um endereço IPv4, consulte Conectar às APIs do Google e Acessar APIs do Google em VMs com IP externo endereços.

Como acessar VMs usando endereços IPv6

A regra de firewall de entrada de negação IPv6 implícita protege as instâncias bloqueando as conexões recebidas para os endereços IPv6 delas. Para acessar VMs usando os endereços IPv6, você precisa ter uma regra de prioridade mais alta que permita o acesso de entrada.

Para mais informações sobre regras de firewall, consulte a visão geral do firewall da VPC e a visão geral das políticas hierárquicas de firewall.

Por exemplo, para regras de firewall da VPC, consulte Configurar regras de firewall para casos de uso comuns.

Atribuição de endereços IPv6

  • As VMs recebem um endereço IPv6 usando o DHCPv6. O servidor de metadados responde às solicitações DHCPv6 da VM e envia o primeiro endereço IPv6 (/128) do intervalo /96 alocado.

  • O servidor de metadados usa a divulgação de rota para publicar a rota padrão na VM. A VM pode usar essa rota padrão para todo o tráfego IPv6.

    Para encontrar a rota padrão da interface de uma VM, consulte a entrada gateway-ipv6 no servidor de metadados.

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

    Para mais informações sobre o servidor de metadados, consulte Como consultar metadados da VM.

  • As VMs são configuradas com endereços IP locais de link, que são atribuídos com base no intervalo fe80::/10, mas são usados apenas para descoberta de vizinhos.

  • A configuração da MTU na interface de rede da VM se aplica aos pacotes IPv4 e IPv6.

Criar uma VM de pilha dupla

Para criar uma VM de pilha dupla, conecte a VM a uma sub-rede que tenha um intervalo IPv6 interno ou externo configurado.

Console

  1. Acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Digite um Nome para a instância.

  3. Selecione uma Região que contenha uma sub-rede com um intervalo IPv6 configurado.

  4. Selecione uma Zona.

  5. Expanda a seção Rede, discos, segurança, gerenciamento, locação individual.

  6. 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.

      Selecione uma sub-rede que tenha um intervalo 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.

    3. Em Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).

    4. Em IP interno primário, selecione uma das seguintes opções:

      • Temporário para atribuir um novo endereço IPv4 temporário
      • Um endereço IPv4 reservado da lista
      • Estático para atribuir um novo endereço IPv4 estático
    5. 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 reservado da lista
      • Crie um novo endereço IP para atribuir um novo endereço IPv4 estático
    6. Para concluir a modificação da interface de rede, clique em Concluído.

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

  8. Clique em Criar.

gcloud

Crie uma instância usando o comando gcloud compute instances create.

gcloud compute instances create INSTANCE_NAME \
  --subnet=SUBNET_NAME \
  --zone=ZONE \
  --stack-type=IPV4_IPV6

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • SUBNET_NAME: a sub-rede à qual a instância será conectada. A sub-rede precisa ter um intervalo de sub-rede IPv6.
  • ZONE: a zona em que a instância de VM será implantada.

API

  1. Selecione uma imagem. Anote o nome da imagem ou da família de imagens e o nome do projeto que contém a imagem.
  2. Use o método instances.insert para criar uma VM a partir de uma família de imagens ou de uma versão específica de uma imagem do SO:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    

    Substitua:

    • PROJECT_ID: ID do projeto em que a VM será criada
    • ZONE: zona em que a VM será criada

    Exemplo de corpo da solicitação:

    {
     "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
     "name": "INSTANCE_NAME",
     "networkInterfaces": [
       {
         "subnetwork": "regions/REGION/subnetworks/SUBNET",
         "stackType": "IPV4_IPV6"
       }
     ],
     "disks": [
       {
         "initializeParams": {
           "sourceImage": "IMAGE_URI"
         },
         "boot": true
       }
     ],
    }
    

    Substitua:

    • MACHINE_TYPE_ZONE: zona que contém o tipo de máquina a ser usado para a nova VM
    • MACHINE_TYPE: tipo de máquina, predefinida ou personalizada, para a nova VM. Por exemplo, n1-standard-1.
    • INSTANCE_NAME: o nome da nova VM.
    • SUBNET: uma sub-rede com o IPv6 configurado.
    • REGION: a região da sub-rede.
    • IMAGE_URI: o URI da imagem que você quer usar.

      Por exemplo, se você especificar "sourceImage": "projects/debian-cloud/global/images/family/debian-10", o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.

Alterar o tipo de pilha de uma VM

É possível alterar o tipo de pilha de uma VM atual. O tipo de pilha pode ser definido como um dos seguintes:

  • Somente IPv4 (pilha única)
  • IPv4 e IPv6 (pilha dupla)

Se você estiver alterando o tipo de pilha para pilha dupla, a VM precisará estar conectada a uma sub-rede de pilha dupla. Se você precisar alterar a qual sub-rede a VM está conectada, interrompa a VM e altere a sub-rede. Depois que a sub-rede for atualizada, será possível alterar o tipo de pilha de IP da VM.

Console

  1. Acesse a página Instâncias da VM.

    Acessar instâncias de VM

  2. Clique no nome da instância à qual você quer atribuir um endereço IPv6.
  3. Na página "Detalhes da instância", siga estas etapas:
    1. Clique em Editar.
    2. Em Interfaces de rede, expanda a interface que você quer editar.
    3. Selecione o Tipo de pilha de IP: somente IPv4 (pilha única) ou IPv4 e IPv6 (pilha dupla).
    4. Clique em Concluído.
  4. Clique em Salvar.

gcloud

Atualize o tipo de pilha de uma VM usando o comando gcloud compute instances network-interfaces update

gcloud compute instances network-interfaces update INSTANCE_NAME \
  --stack-type=STACK_TYPE \
  --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância.
  • ZONE: a zona em que a instância está implantada.
  • STACK_TYPE: o tipo de pilha da VM: IPV4_ONLY ou IPV4_IPV6.

API

Atualize o tipo de pilha de uma VM fazendo uma solicitação PATCH para o método instances.updateNetworkInterface.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONEinstances/INSTANCE_NAME/updateNetworkInterface

Substitua:

  • PROJECT_ID: o ID do projeto que contém a instância.
  • ZONE: a zona em que a instância está implantada.
  • INSTANCE_NAME: o nome da instância.i

Exemplo de corpo da solicitação:

{
  "stackType": "STACK_TYPE",
}

Substitua STACK_TYPE pelo tipo de pilha da VM: IPV4_ONLY ou IPV4_IPV6.

Criar um modelo de instância com endereços IPv6

Crie um modelo de instância que possa ser usado para criar VMs de pilha dupla. Consulte Como criar modelos de instância para mais informações sobre como criar modelos de instância.

Use a Google Cloud CLI ou a API para criar um modelo de instância que crie VMs de pilha dupla.

gcloud

Crie um modelo de instância usando o comando gcloud compute instance-templates create.

gcloud compute instance-templates create TEMPLATE_NAME \
    --subnet=SUBNET \
    --stack-type=IPV4_IPV6

Substitua:

  • TEMPLATE_NAME: o nome do modelo.
  • SUBNET: uma sub-rede que tem um intervalo de sub-rede IPv6.

API

Crie um modelo de instância fazendo uma solicitação POST ao método instanceTemplates.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

Substitua PROJECT_ID pelo ID do projeto.

Exemplo de corpo da solicitação:

{
  "name": "INSTANCE_TEMPLATE_NAME"
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNET",
        "stackType": "IPV4_IPV6",
      },
    ],
    "disks":
    [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "IMAGE_URI"
        }
      }
    ]
  }
}

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
  • MACHINE_TYPE: o tipo de máquina das VMs Por exemplo, n1-standard-1.
  • SUBNET: uma sub-rede que tem um intervalo de sub-rede IPv6.
  • REGION: a região da sub-rede.
  • IMAGE_URI: o URI da imagem que você quer usar.

    Por exemplo, se você especificar "sourceImage": "projects/debian-cloud/global/images/family/debian-10", o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.

Para saber mais sobre os parâmetros de solicitação, consulte o método instanceTemplates.insert.