Configurar endereços IP internos estáticos


Nesta página, mostramos como configurar e gerenciar endereços IPv4 ou IPv6 internos estáticos para instâncias de máquina virtual (VM) do Compute Engine.

Quando uma instância de VM exige um endereço IP interno fixo que seja inalterável, é possível conseguir um endereço IP interno estático para essa VM usando uma das seguintes opções:

Para saber mais sobre como gerenciar endereços IP internos secundários, leia Intervalos de IP de alias.

No Compute Engine, cada instância de VM pode ter várias interfaces de rede. Cada interface pode ter um endereço IP externo, um endereço IP interno principal e um ou mais endereços IP internos secundários. Para saber mais sobre endereços IP, leia a documentação Endereços IP.

Com endereços IP internos estáticos, é sempre possível usar o mesmo endereço IP para uma VM, mesmo que você precise excluir e recriar a VM.

Para configurar um endereço IP externo estático em vez de um endereço IP interno, consulte Configurar endereços IP externos estáticos.

Antes de começar

  • Leia sobre endereços IP.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Confira mais informações em Set up authentication for a local development environment.

      REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

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

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções exigidas

Para receber as permissões necessárias a fim de configurar e gerenciar endereços IP estáticos, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos têm as permissões necessárias para configurar e gerenciar endereços IP estáticos. Para conferir 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 reservar e gerenciar endereços IP estáticos:

  • compute.instances.update na instância de VM
  • compute.instances.updateNetworkInterface na instância de VM
  • compute.instances.addAccessConfig na instância de VM
  • compute.instances.deleteAccessConfig na instância de VM
  • compute.networks.list na rede
  • compute.subnetworks.use na sub-rede
  • compute.subnetworks.list na sub-rede
  • Para criar VMs:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
    • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Atribuir uma rede legada à VM: compute.networks.use no projeto
    • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
    • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
    • Definir tags para a VM: compute.instances.setTags na VM
    • Definir rótulos para a VM: compute.instances.setLabels na VM
    • Definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Criar um disco para a VM: compute.disks.create no projeto
    • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
    • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Limitações

  • Não é possível cancelar a atribuição ou alterar o endereço IPv4 interno de um recurso. Por exemplo, não é possível atribuir um novo endereço IP interno estático a uma instância de VM em execução ou interrompida. No entanto, é possível promover o endereço IP interno efêmero de um recurso para um endereço IP interno estático. Dessa maneira, o endereço permanecerá reservado, mesmo depois que o recurso for excluído.

  • O número de endereços IP internos estáticos que você pode reservar não pode exceder a cota do seu projeto. Para obter mais informações, consulte as cotas por projeto na documentação da VPC.

  • Somente um recurso por vez pode usar um endereço IP interno estático.

  • A reserva de um endereço IP interno estático só é aceita para redes VPC. Ela não é compatível com redes de modo legado.

  • Excluir recursos não libera automaticamente os endereços IP internos estáticos. Será necessário liberá-los manualmente se você não precisar mais deles.

  • Não é possível alterar o nome de um endereço IP estático.

  • Os endereços IP internos estáticos são regionais, o que significa que são restritos à região em que estão reservados. Por exemplo, se houver um endereço IP interno estático reservado em Region A, você só poderá usar o endereço IP em Region A.

Como configurar um endereço IP interno estático

É possível reservar um endereço IP interno estático e, em seguida, especificar o endereço reservado ao criar uma VM. Também é possível criar a VM com um endereço IP interno temporário e, em seguida, promover esse endereço IP temporário a um endereço IP interno estático.

Para usar um endereço IP interno estático, você precisa de uma rede VPC em vigor para o projeto. Para conferir as redes VPC no projeto, consulte Conferir redes VPC.

Reservar um endereço IPv4 ou IPv6 interno estático e associá-lo a uma VM específica

Nesta situação, você reserva separadamente um endereço IP interno estático e o atribui a uma VM:

  1. Escolha uma sub-rede na sua rede VPC. Para endereços IPv6, verifique se é uma sub-rede de pilha dupla.

  2. Reserve um endereço IP interno do intervalo de IPs principal da sub-rede. Esta etapa cria um recurso de endereço IP interno nomeado que contém esse endereço IP interno específico. Reservar o endereço IP impede que o Google Cloud aloque automaticamente esse endereço como temporário.

  3. Use o endereço IP interno reservado associando-o a uma instância de VM ao criar o recurso de VM.

Especificar um endereço IPv4 ou IPv6 interno temporário para uma VM e promovê-lo

Neste cenário, você promove um endereço IPv4 ou IPv6 interno temporário que ainda está anexado a uma VM:

  1. Escolha uma sub-rede na sua rede VPC. Para endereços IPv6, verifique se é uma sub-rede de pilha dupla.

  2. Crie uma instância de VM com um endereço IPv4 ou IPv6 temporário alocado automaticamente ou um endereço IPv4 específico.

  3. Promova o endereço IP interno temporário a um endereço estático.

Os dois métodos estão descritos na figura 1.

Estados de reserva de endereço IP interno.
Figura 1. Estados de reserva de endereço IP interno (clique para ampliar).

Conferir endereços IP internos estáticos disponíveis

Para visualizar todos os endereços IP internos estáticos atuais, conclua as etapas a seguir.

Console

  1. No console do Google Cloud, acesse a página Endereços IP.

    Acessar endereços IP

  2. Clique em Endereços IP internos.

gcloud

Use o comando gcloud compute addresses list:

gcloud compute addresses list

API

Use o método addresses.list.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação
  • REGION: o nome da região para essa solicitação

Para listar todos os endereços em todas as regiões, use o método addresses.aggregatedList:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses

Como endereços IP internos são atribuídos

As interfaces de rede de uma VM recebem endereços IP da sub-rede a que estão conectadas. Cada interface de VM tem um endereço IPv4 interno principal, que é atribuído a partir do intervalo IPv4 principal da sub-rede. Se a VM estiver conectada a uma sub-rede de pilha dupla com um intervalo IPv6 interno, será possível atribuir um endereço IPv6 interno a cada interface de rede.

Os endereços IPv4 internos podem ser atribuídos das seguintes maneiras:

  • O Compute Engine atribui um único endereço IPv4 do intervalo de sub-rede IPv4 principal automaticamente.
  • É possível atribuir um endereço IPv4 interno específico ao criar uma instância de VM ou reservar um endereço IPv4 interno estático para seu projeto e atribuir esse endereço a uma VM.

Os endereços IPv6 internos podem ser atribuídos das seguintes maneiras:

Usar endereços IP internos estáticos reservados ao criar recursos

Depois de reservar um endereço IP interno estático, atribua o endereço reservado ao criar uma VM ou um balanceador de carga interno.

Os procedimentos a seguir descrevem como usar endereços IP internos estáticos ao criar recursos:

Criar uma instância de VM com um endereço IPv4 ou IPv6 interno reservado

Quando você cria uma VM conectada a uma sub-rede de pilha dupla com um intervalo IPv6 interno sem especificar nenhum endereço IPv6 interno estático reservado, o Compute Engine atribui automaticamente à VM um endereço IPv6 interno temporário do intervalo IPv6 da sub-rede.

Console

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

    Acessar "Criar uma instância de VM"

  2. Expanda a seção Opções avançadas.

  3. Expanda a seção Rede.

  4. Para atribuir um endereço IPv4 interno, faça o seguinte:

    1. Selecione uma Rede e uma Sub-rede.
    2. Selecione um endereço IPv4 interno reservado na lista Endereço IPv4 interno principal.

    Como alternativa, selecione Reservar endereço IP interno estático e reserve um novo endereço IPv4 interno estático.

  5. Para atribuir um endereço IPv6 interno, faça o seguinte:

    1. Selecione uma rede que contenha uma sub-rede IPv6.
    2. Selecione uma sub-rede de pilha dupla na lista Sub-rede. A sub-rede precisa ter o tipo de acesso INTERNAL IPv6.
    3. Em Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
    4. Selecione um endereço IPv6 interno reservado na lista Endereço IPv6 interno principal.

    Como alternativa, selecione Reservar endereço IPv6 interno estático e reserve um novo endereço IPv6 interno estático.

  6. Para concluir a modificação da interface de rede padrão, clique em Concluído.

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

  8. Clique em Criar.

gcloud

  • Use o comando instances create para criar uma instância de VM com um endereço IPv4 interno reservado e use a sinalização --private-network-ip para especificar o endereço IP:

    gcloud compute instances create VM_NAME
        --private-network-ip IP_ADDRESS
    

    Substitua:

    • VM_NAME: o nome da VM que você quer criar.
    • IP_ADDRESS: o endereço IP que você quer atribuir.

    Se você estiver usando uma rede com o modo de sub-rede personalizado, você precisará especificar a sub-rede usando o parâmetro --subnet SUBNET.

  • Para criar uma instância com um endereço IPv6 interno reservado, use a sinalização --internal-ipv6-address para especificar o endereço IP:

    gcloud compute instances create VM_NAME
        --subnet SUBNETWORK
        --stack-type IPV4_IPV6
        --internal-ipv6-address INTERNAL_IPV6_ADDRESS
        --zone ZONE
    

    Substitua:

    • VM_NAME: o nome da VM que você quer criar.
    • SUBNETWORK: a sub-rede do endereço IPv6 interno.
    • INTERNAL_IPV6_ADDRESS: o endereço IPv6 /96, o nome do endereço IP ou o URI do recurso de endereço. É preciso reservar o endereço IP para poder usá-lo.
    • ZONE: a zona para a VM.

REST

Para criar uma instância de VM com um endereço IP interno estático, use o método instances.insert.

  • Para endereços IPv4 internos, forneça explicitamente a propriedade networkInterfaces[].networkIP com o endereço IPv4 interno que você quer atribuir à VM.

    Por exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "networkIP": "IPV4_ADDRESS"
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

    Substitua:

    • PROJECT_ID: ID do projeto em que a VM será criada.
    • ZONE: zona em que a VM será criada.
    • VM_NAME: o nome da instância da máquina virtual
    • IPV4_ADDRESS: o endereço IPv4 interno a ser atribuído à VM.
  • Para endereços IPv6 internos, especifique explicitamente os valores das seguintes propriedades:

    • networkInterfaces[].stackType
    • networkInterfaces[].ipv6Address
    • networkInterfaces[].internalIpv6PrefixLength
    • networkInterfaces[].ipv6AccessType

    Por exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "stackType": "IPV4_IPV6"
      "ipv6Address": ""IPV6_ADDRESS"",
      "internalIpv6PrefixLength": 96
      "ipv6AccessType": INTERNAL,
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

    Substitua:

    • PROJECT_ID: ID do projeto em que a VM será criada.
    • ZONE: zona em que a VM será criada.
    • VM_NAME: o nome da VM.
    • IPV6_ADDRESS: o endereço IPv6 que será atribuído à VM.

Se você excluir uma instância de VM com um endereço IP temporário, o endereço voltará para o pool de endereços não alocados. Se você precisa que um endereço IP interno persista além do período da instância, reserve um endereço IP interno estático.

Atribuir um endereço interno estático à interface de rede secundária de uma VM

Ao criar uma instância de VM com várias interfaces de rede, é possível usar um endereço IPv4 ou IPv6 interno estático reservado para as interfaces de rede primária e secundária.

Para usar um endereço IPv4 ou IPv6 interno estático em uma interface de rede secundária, consulte Criar instâncias de máquina virtual com várias interfaces de rede.

Alterar ou atribuir um endereço IPv6 interno a uma VM atual

É possível alterar ou atribuir um endereço IPv6 interno a uma instância VM.

Se a instância já tiver um endereço IPv6 interno atribuído a ela, primeiro será necessário cancelar a atribuição desse endereço. Em seguida, atribua um novo endereço à instância usando a interface de rede dela.

Para alterar ou atribuir um endereço IPv6 interno estático a uma instância de VM atual, conclua as etapas a seguir.

Console

  1. Reserve um endereço IPv6 interno estático.
  2. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  3. Clique no nome da instância cujo endereço IPv6 interno você quer alterar.
  4. Na página de detalhes da instância, conclua estas etapas:

    1. Clique em Editar.
    2. Abra Interfaces de rede.
    3. Na lista Endereço IPv6 interno principal, selecione Alocado automaticamente (/96) ou um endereço IPv6 interno estático reservado.
    4. Clique em Concluído.
  5. Clique em Salvar.

gcloud

Use o comando compute instances network-interfaces update.

gcloud compute instances network-interfaces update VM_NAME \
    --network-interface NIC \
    --ipv6-network-tier PREMIUM \
    --stack-type IPV4_IPV6 \
    --internal-ipv6-address INTERNAL_IPV6_ADDRESS \
    --zone ZONE

Substitua:

  • VM_NAME: o nome da VM que você quer criar.
  • NIC: o nome da interface de rede a ser atualizada.
  • INTERNAL_IPV6_ADDRESS: o endereço IPv6 interno /96 a ser atribuído à interface, o nome do endereço IP ou o URI do recurso de endereço.
  • ZONE: a zona para a VM.

REST

Use o método instances.update. Atualize a propriedade networkInterfaces[].ipv6Address com o endereço IPv6 interno que você quer atribuir.

Exemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
  {
    ...
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "stackType": "IPV4_IPV6"
      "ipv6Address": "IPV6_ADDRESS",
      "internalIpv6PrefixLength": 96
      "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
  }
 

Substitua:

  • PROJECT_ID: o ID do projeto em que a VM está.
  • ZONE: zona em que a VM será criada.
  • VM_NAME: o nome da VM.
  • IPV6_ADDRESS: o endereço IPv6 que será atribuído à VM.

    Se você especificar o URI do recurso de endereço IPv6 interno ou um intervalo de endereços IPv6 como o valor de IPV6_ADDRESS, deixe o valor de internalIpv6PrefixLength em branco.

Gerenciar endereços IP internos estáticos

Os seguintes procedimentos permitem gerenciar endereços IP internos estáticos para suas VMs:

Determinar se um endereço IPv4 ou IPv6 interno é temporário ou estático

Os endereços IP internos estáticos e temporários se comportam e aparecem da mesma forma na maioria dos contextos. No entanto, com endereços IP internos estáticos, é possível usar o mesmo endereço IP para o mesmo recurso, mesmo que ele seja excluído e recriado. Em geral, um endereço IP temporário é liberado ao interromper ou excluir o recurso.

Para determinar se um endereço é estático ou temporário, faça o seguinte:

  1. No console do Google Cloud, acesse a página Endereços IP.

    Acessar endereços IP

  2. Localize o endereço na lista e verifique o tipo de endereço IP na coluna Tipo.

Cancelar a atribuição de um endereço IPv6 interno estático

É possível cancelar a atribuição de um endereço IPv6 interno estático de uma instância de VM de pilha dupla. Basta atualizar o tipo de pilha da interface de rede da instância ou excluir a instância em que está o endereço. é atribuído.

Quando você cancela a atribuição de um endereço IPv6 interno, o sistema o remove do recurso, mas mantém o endereço reservado para o projeto. Posteriormente, você poderá reatribuir o endereço a outro recurso.

Para cancelar a atribuição de um endereço IPv6 interno estático de uma instância de VM, conclua as etapas a seguir.

Console

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

    Acessar instâncias de VM

  2. Clique no nome da instância cujo endereço IPv6 interno você quer remover.
  3. Na página de detalhes da instância, conclua estas etapas:

    1. Clique em Editar.
    2. Abra Interfaces de rede.
    3. Em Tipo de pilha de IP, selecione IPv4 (pilha única).
    4. Clique em Concluído.
  4. Clique em Salvar.

gcloud

Use o comando compute instances network-interfaces update com a sinalização --stack-type definida como IPV4_ONLY:

gcloud compute instances network-interfaces update VM_NAME \
    --network-interface NIC \
    --stack-type IPV4_ONLY \
    --zone ZONE

Substitua:

  • VM_NAME: o nome da VM cuja interface de rede você quer atualizar.
  • NIC: o nome da interface de rede a ser atualizada.
  • ZONE: a zona para a VM.

Verifique se o endereço IPv6 externo estático está disponível e marcado como RESERVED e não IN_USE.

gcloud compute addresses list \
    --filter="region=REGION AND name=NAME"

REST

Atualize o tipo de pilha da instância da interface de rede em que o endereço IPv6 interno está anexado:

  1. Faça uma solicitação PATCH ao método instances.updateNetworkInterface.
  2. No corpo da solicitação, atualize o valor do campo stackType para IPV4_ONLY.

    Por exemplo:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateNetworkInterface
    {
      "networkInterfaces": [{
        ...
        "stackType" : "IPV4_ONLY"
        ...
        }]
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a VM está.
    • ZONE: zona em que a VM será criada.
    • VM_NAME: o nome da VM.

Liberar um endereço IP interno estático

Se você não precisar mais de um endereço IPv4 ou IPv6 externo estático, libere o endereço IP excluindo o recurso de endereço IP. A exclusão de uma VM não libera automaticamente um endereço IP externo estático. Será necessário liberá-los manualmente se você não precisar mais deles.

Para liberar um endereço IP interno estático, consulte Liberar um endereço IPv4 ou IPv6 interno estático na documentação da VPC.

A seguir