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) e bare metal do Compute Engine.

Se uma instância exigir um endereço IP interno fixo que não muda, será possível conseguir um endereço IP interno estático para ela 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

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

  • Cada VM pode ter várias interfaces de rede, e cada interface pode ter os seguintes endereços IP atribuídos, de acordo com o tipo de pilha:

    • Interfaces somente IPv4:
      • Um endereço IPv4 interno (obrigatório)
      • Um endereço IPv4 externo (opcional)
    • Interfaces de pilha dupla (IPv4 e IPv6):
      • Um endereço IPv4 interno (obrigatório)
      • Um endereço IPv4 externo (opcional)
      • Um intervalo de endereços IPv6 /96, interno ou externo, mas não ambos (obrigatório)
    • Interfaces somente IPv6 (pré-lançamento):
      • Um intervalo de endereços IPv6 /96, interno ou externo, mas não ambos (obrigatório)
  • Não é possível desatribuir ou mudar o seguinte:

    • 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.
    • O endereço IPv6 interno de uma VM com uma interface de rede somente IPv6.

    No entanto, é possível promover um endereço IP interno efêmero de um recurso para um endereço IP interno estático. Dessa maneira, o endereço permanece reservado, mesmo depois que o recurso é excluído.

  • 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 instância. 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

Neste cenário, você reserva separadamente um endereço IP interno estático e o atribui a uma instância:

  1. Escolha uma sub-rede na sua rede VPC. Para endereços IPv6, verifique se é uma sub-rede com um intervalo de endereços IPv6 interno.

  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 Google Cloud aloque automaticamente esse endereço como temporário.

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

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

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

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

  2. Crie uma instância 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.

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 instância recebem endereços IP da sub-rede a que estão conectadas. Cada interface de rede somente IPv4 ou de pilha dupla tem um endereço IPv4 interno principal, que é atribuído a partir do intervalo IPv4 principal da sub-rede. Cada interface de rede somente IPv6 ou de pilha dupla conectada a uma sub-rede com um intervalo de endereços IPv6 interno recebe um endereço IPv6 interno.

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 ou reservar um endereço IPv4 interno estático para seu projeto e atribuir esse endereço à interface de rede de uma instância.

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 instância 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 com um endereço IPv4 ou IPv6 interno reservado

Quando você cria uma instância conectada a uma sub-rede de pilha dupla ou somente IPv6 com um intervalo IPv6 interno sem especificar nenhum endereço IPv6 interno estático reservado, o Compute Engine atribui automaticamente à instância 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 com um intervalo de endereços IPv6.
    2. Selecione uma sub-rede de pilha dupla ou somente IPv6 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) ou IPv6 (pilha única).
    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 de instâncias.

  8. Clique em Criar.

gcloud

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

    gcloud compute instances create INSTANCE_NAME \
        --private-network-ip IP_ADDRESS
    

    Substitua:

    • INSTANCE_NAME: o nome da instância 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 INSTANCE_NAME \
        --subnet SUBNETWORK \
        --stack-type STACK_TYPE \
        --internal-ipv6-address INTERNAL_IPV6_ADDRESS \
        --zone ZONE
    

    Substitua:

    • INSTANCE_NAME: o nome da instância que você quer criar.
    • SUBNETWORK: a sub-rede do endereço IPv6 interno
    • STACK_TYPE: o tipo de pilha da instância, IPV4_IPV6 ou IPv6_ONLY.
    • INTERNAL_IPV6_ADDRESS: o endereço IPv6 /96, o nome do endereço IP ou o URI do recurso de endereço. O endereço IP precisa ser reservado para poder ser usado.
    • ZONE: a zona na qual será criada a instância;

REST

Para criar uma instância 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 à instância.

    Exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
    "name": "INSTANCE_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: o ID do projeto em que a instância será criada.
    • ZONE: a zona na qual será criada a instância.
    • INSTANCE_NAME: o nome da instância da máquina virtual
    • IPV4_ADDRESS: o endereço IPv4 interno a ser atribuído à instância
  • 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": "INSTANCE_NAME",
    "machineType": "zones/us-central1-f/machineTypes/n4-standard-2",
    "networkInterfaces": [{
      "network": "global/networks/default",
      "stackType": "STACK_TYPE"
      "ipv6Address": "IPV6_ADDRESS",
      "internalIpv6PrefixLength": 96
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/debian-11-bullseye-v20241009"
      }
    }]
    }

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância será criada.
    • ZONE: a zona na qual será criada a instância;
    • INSTANCE_NAME: o nome da instância.
    • STACK_TYPE: o tipo de pilha da instância, IPV4_IPV6 ou IPv6_ONLY.
    • IPV6_ADDRESS: o endereço IPv6 interno a ser atribuído à instância.

Se você excluir uma instância 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 instância

Ao criar uma instância 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árias e secundárias.

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

Alterar ou atribuir um endereço IPv6 interno a uma instância atual

É possível alterar ou atribuir um endereço IPv6 interno a uma instância de pilha dupla. Se a instância for somente IPv4 e você quiser atribuir um endereço IPv6, primeiro mude o tipo de pilha para pilha dupla.

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, siga as etapas abaixo.

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. Se a instância for somente IPv4 e você quiser atribuir um endereço IPv6, primeiro mude o tipo de pilha para pilha dupla.
    4. Na lista Endereço IPv6 interno principal, selecione Alocado automaticamente (/96) ou um endereço IPv6 interno estático reservado.
    5. Clique em Concluído.
  5. Clique em Salvar.

gcloud

Use o comando compute instances network-interfaces update.

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

Substitua:

  • INSTANCE_NAME: o nome da instância que você quer criar.
  • NIC: o nome da interface de rede a ser atualizada
  • STACK_TYPE: o tipo de pilha da instância, que precisa ser IPV4_IPV6
  • 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 da instância;

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/INSTANCE_NAME
  {
      ...
      "networkInterfaces": [{
          "accessConfigs": [{
              "type": "ONE_TO_ONE_NAT",
              "name": "External NAT",
          }],
          "stackType": "STACK_TYPE"
          "ipv6Address": "IPV6_ADDRESS",
          "internalIpv6PrefixLength": 96
          "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
      }],
      "disks": [{
          "autoDelete": "true",
          "boot": "true",
          "type": "PERSISTENT",
          "initializeParams": {
              "sourceImage": "projects/debian-cloud/global/images/debian-11-bullseye-v20241009"
          }
      }]
 }
 

Substitua:

  • PROJECT_ID: o ID do projeto em que a instância está
  • ZONE: a zona na qual será criada a instância.
  • INSTANCE_NAME: o nome da instância.
  • STACK_TYPE: o tipo de pilha da instância, que precisa ser IPV4_IPV6
  • IPV6_ADDRESS: o endereço IPv6 interno que será atribuído à instância

    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 procedimentos a seguir permitem gerenciar endereços IP internos estáticos para suas instâncias:

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 pilha dupla atualizando o tipo de pilha da interface de rede da instância ou excluindo a instância a que 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, siga estas etapas.

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 INSTANCE_NAME \
    --network-interface=NIC \
    --stack-type=IPV4_ONLY \
    --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância cuja interface de rede você quer atualizar.
  • NIC: o nome da interface de rede a ser atualizada
  • ZONE: a zona da instância;

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=INSTANCE_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/INSTANCE_NAME/updateNetworkInterface
    {
        "networkInterfaces": [{
            ...
            "stackType" : "IPV4_ONLY"
            ...
        }]
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a instância está.
    • ZONE: a zona na qual será criada a instância.
    • INSTANCE_NAME: o nome da instância.

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 instância 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