Reservar um endereço IP interno e estático

Nesta página, mostramos como reservar e gerenciar endereços IPv4 ou IPv6 internos estáticos em redes de nuvem privada virtual (VPC).

Os endereços IP internos estáticos oferecem a capacidade de reservar endereços IP internos do intervalo de endereços IP configurado na sub-rede e, em seguida, atribuir esses endereços IP internos reservados aos recursos conforme necessário. Reservar um endereço IP interno remove esse endereço do pool de alocação dinâmico e impede que ele seja usado em alocações automáticas. Para reservar endereços IP internos estáticos, é necessário ter permissões específicas do Identity and Access Management (IAM) para que apenas usuários autorizados possam reservar um endereço IP interno estático.

Com a possibilidade de reservar endereços IP internos estáticos, você pode sempre usar o mesmo endereço IP para o mesmo recurso, mesmo que precise excluir e recriar o recurso.

Para reservar um endereço IP externo estático em vez de um endereço IP interno, consulte Reservar um endereço IP externo estático.

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ódigo ou amostras em um ambiente de desenvolvimento local, faça a autenticação da maneira a seguir.

    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

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

    gcloud init

    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.

    Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.

    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 ter as permissões necessárias para reservar e gerenciar endereços IP estáticos, peça ao administrador para conceder a você o Administrador de rede do Compute (roles/compute.networkAdmin) 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.

Esse papel predefinido contém as permissões necessárias para reservar 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 permissões a seguir são necessárias para reservar e gerenciar endereços IP estáticos:

  • compute.addresses.create no endereço IP
  • compute.addresses.createInternal no endereço IP
  • compute.networks.list na rede
  • compute.subnetworks.use na sub-rede
  • compute.subnetworks.list na sub-rede

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.

Reservar um novo endereço IPv4 interno ou IPv6 estático

Antes de reservar um novo endereço IP interno estático, é preciso criar uma rede VPC com uma sub-rede.

Se você quiser reservar um novo endereço IPv6 interno estático, a rede VPC precisará ter o intervalo IPv6 interno do ULA ativado. Além disso, ela precisa ter uma sub-rede dupla com o tipo de acesso INTERNAL IPv6.

Para reservar um endereço IP interno autônomo, 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 Reservar endereço IP estático interno. Talvez seja necessário clicar no menu Mais ações para ver esse botão.
  3. No campo Nome, digite um nome de endereço IP.
  4. Na lista Versão do IP, selecione a versão do IP necessária:
    • Para reservar um endereço IPv4 interno estático, selecione IPv4.
    • Para reservar um endereço IPv6 interno estático, selecione IPv6.
  5. Nas listas Rede e Sub-rede, selecione uma rede VPC e uma sub-rede, respectivamente.
  6. Especifique como você quer reservar o endereço IP:
    • Para endereços IPv4, para especificar um endereço IPv4 interno estático a ser reservado, em Endereço IP estático, selecione Deixe-me escolher e insira um IP personalizado. . Caso contrário, o sistema atribuirá automaticamente um endereço IPv4 interno estático na sub-rede.
    • Para endereços IPv6, o sistema atribui automaticamente um endereço IPv6 interno estático do intervalo de endereços IPv6 interno da sub-rede.
  7. Opcional: para compartilhar o endereço IPv4 interno estático em diferentes front-ends, na lista Objetivo, escolha Compartilhado. A seleção padrão é Não compartilhado.

  8. Clique em Reservar.

gcloud

  • Para reservar um endereço IPv4 interno, use o comando compute addresses create:

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --addresses IP_ADDRESS
    

    Substitua:

    • ADDRESS_NAMES: os nomes de um ou mais endereços [--purpose=SHARED_LOADBALANCER_VIP] que você quer criar. No caso de vários endereços, especifique todos como uma lista, separados por espaços. Por exemplo, example-address-1 example-address-2 example-address-3.
    • REGION: a região desta solicitação
    • SUBNETWORK: a sub-rede deste endereço IP interno
    • IP_ADDRESS: o endereço IP a ser reservado, que precisa estar no intervalo de IP principal da sub-rede. Se não for especificado, um endereço IP será alocado automaticamente pela sub-rede.
  • Para reservar um endereço IPv6 interno, use o comando compute addresses create. Especifique IPV6 como o valor de --ip-version.

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --ip-version IPV6
    

    Substitua:

    • ADDRESS_NAMES: os nomes de um ou mais endereços que você quer reservar. No caso de vários endereços, especifique todos como uma lista, separados por espaços. Por exemplo: example-address-1 example-address-2 example-address-3
    • REGION: a região desta solicitação
    • SUBNETWORK: a sub-rede deste endereço IPv6 interno

    Ao contrário da reserva IPv4 interna, a reserva IPv6 interna não é compatível com a reserva de um endereço IP específico da sub-rede. Em vez disso, um endereço IPv6 interno /96 é alocado automaticamente do intervalo de endereços IPv6 interno /64 da sub-rede.

Exemplos

  • Reserve um endereço IPv4 interno alocado automaticamente de uma sub-rede:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1
    
  • Reserve um endereço IPv4 interno específico de uma sub-rede:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12
    
  • Reserve um endereço IPv6 interno estático de uma sub-rede:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --ip-version IPV6
    
  • Crie vários endereços IPv4 passando mais de um nome de endereço IPv4. Todos os endereços são reservados na mesma sub-rede:

    gcloud compute addresses create example-address-1 example-address-2 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12,10.128.0.13
    

Terraform

Use um módulo do Terraform (em inglês) para criar um endereço IP interno.

No exemplo a seguir, os argumentos do Terraform têm valores de exemplo que podem ser alterados. No exemplo, dois endereços IP internos específicos são criados:

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 4.0"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
  addresses  = ["10.0.0.3", "10.0.0.4"]
}

No exemplo a seguir, criamos dois endereços IP internos alocados dinamicamente:

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 4.0"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
}

API

Use o método addresses.insert.

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

Para endereços IPv4 e IPv6, o corpo da solicitação precisa incluir o campo addressType, que precisa ser INTERNAL, o name do endereço e o subnetwork ao qual o endereço IP pertence. O corpo da solicitação pode incluir purpose do endereço IP interno.

Além disso, para endereços IPv4 internos, é possível permitir que o sistema aloque automaticamente um endereço IP para você ou use address para especificar um endereço IPv4 interno. O endereço IPV4 precisa pertencer ao intervalo de endereços IP principal da sub-rede.

{
  "addressType": "INTERNAL",
  "name": "IPV4_ADDRESS_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "address": "IPV4_ADDRESS"
  "purpose": "GCE_ENDPOINT"
}

Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv4-address-1",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
  "purpose": "GCE_ENDPOINT"
}

Para endereços IPv6 internos, você também precisa especificar ipVersion como IPV6. O sistema atribui automaticamente um endereço IPv6 interno estático do intervalo de endereços IPv6 interno da sub-rede.

{
  "addressType": "INTERNAL",
  "name": "IPV6_ADDRESS_NAME",
  "ipVersion": "IPV6",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "purpose": "GCE_ENDPOINT"
}

Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv6-address-1",
  "ipVersion": "IPV6"
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "purpose": "GCE_ENDPOINT"
}

Reservar um intervalo de endereços IP internos estáticos para VPN de alta disponibilidade no Cloud Interconnect

É possível reservar um intervalo de endereços IP internos estáticos para usar com a VPN de alta disponibilidade no Cloud Interconnect.

Ao criar o endereço IP interno estático, é preciso especificar a sinalização --purpose=IPSEC_INTERCONNECT e um comprimento de prefixo (--prefix-length) entre 26 e 29.

Os endereços IPv4 internos regionais que você reserva são aplicados aos gateways de VPN de alta disponibilidade usados pelo Cloud Interconnect.

Para mais informações, consulte Atribuir intervalos de endereços IP internos a gateways da VPN de alta disponibilidade.

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.

Promover um endereço IPv4 ou IPv6 interno efêmero em uso a um endereço estático

Se tiver endereços IP internos efêmeros em uso, é possível promover esses endereços a endereços IP internos estáticos. Dessa forma, os endereços permanecerão com o projeto até você os remover ativamente.

Para promover um endereço IP interno temporário a um estático, 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.
  3. Opcional: no campo Filtro, para pesquisar endereços IP temporários, insira ephemeral e selecione Temporário : tipo na lista suspensa ,
  4. Selecione o endereço IP interno que você quer promover.
  5. No menu Mais ações () no final da linha de exibição do endereço IP selecionado, escolha Promover a endereço IP estático. ,
  6. Insira um nome para o novo endereço IP estático e clique em Reservar.

gcloud

  1. Antes de promover um endereço IPv6 interno efêmero, você precisa saber o valor desse endereço IP. Use a Google Cloud CLI para fazer uma solicitação describe ao recurso para conseguir o valor do endereço IP.

    • Para uma instância com um endereço IPv4, use o seguinte comando:

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"
      
    • Para uma instância com um endereço IPv6, use o seguinte comando:

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "ipv6Address"
      
    • Para uma regra de encaminhamento regional, use o seguinte comando:

      gcloud compute forwarding-rules describe FORWARDING_RULE_NAME --region REGION | grep "IPAddress"
      

      Para uma regra de encaminhamento global, use a sinalização --global em vez da sinalização --region.

  2. Promova o endereço:

    • Para promover um ou mais endereços IPv4, use o comando compute addresses create e forneça a sinalização --addresses com endereços IP internos explícitos para promover:

      gcloud compute addresses create IPV4_ADDRESS_NAMES \
        --addresses IPV4_ADDRESSES \
        --region REGION \
        --prefix-length PREFIX_LENGTH \
        --subnet SUBNETWORK
      

      Substitua:

      • IPV4_ADDRESS_NAMES: os nomes dos endereços IPv4. No caso de vários endereços, especifique todos os nomes de endereço como uma lista, separados por espaços, por exemplo, example-address-name-1 example-address-name-2 example-address-name-3. Declare os nomes na mesma ordem em que você declara os endereços IP. Por exemplo, suponha que você especifique os nomes dos endereços como example-address-name-1 example-address-name-2 example-address-name-3 e os endereços IPv4 como 192.0.2.0 192.0.2.1 192.0.2.2. Nesse cenário, o Compute Engine mapeia os nomes e endereços da seguinte maneira:

        • example-address-name-1: 192.0.2.0
        • example-address-name-2: 192.0.2.1
        • example-address-name-3: 192.0.2.2
      • IPV4_ADDRESSES: os endereços IPv4 a serem promovidos. No caso de vários endereços, especifique todos os endereços como uma lista, separados por espaços. Por exemplo: 192.0.2.0 192.0.2.1 192.0.2.2.

      • REGION: a região para reservar este endereço.

      • PREFIX_LENGTH: opcional. O comprimento do prefixo do intervalo de endereços IPv4. O valor precisa ser um número inteiro entre 7 e 31. Só inclua esse campo se você especificar um intervalo de endereços. Exclua o campo se o endereço IPv4 especificado for um único endereço IP.

      • SUBNETWORK: a sub-rede desta solicitação.

    • Para promover um ou mais endereços IPv6 internos existentes, use o comando compute addresses create e forneça a sinalização --addresses com os endereços IPv6 internos explícitos:

      gcloud compute addresses create IPV6_ADDRESS_NAMES \
       --addresses IPV6_ADDRESSES \
       --region REGION \
       --prefix-length PREFIX_LENGTH \
       --subnet SUBNETWORK
      

      Substitua:

      • IPV6_ADDRESS_NAMES: os nomes do endereço. Declare os nomes na mesma ordem em que você declara os endereços IPv6. Nesse caso, IPV6_ADDRESS_NAME_1 corresponde a IPV6_ADDRESS_1 e IPV6_ADDRESS_NAME_2 corresponde a IPV6_ADDRESS_2.
      • IPV6_ADDRESS_1,[IPV6_ADDRESS_2,...]: os endereços IPv6 a serem promovidos no formato CIDR.
      • PREFIX_LENGTH_1,[PREFIX_LENGTH_2,...]: o tamanho do prefixo dos endereços IPv6.
      • REGION: a região para reservar este endereço.
      • SUBNETWORK: a sub-rede desta solicitação.

      O endereço IPv6 interno permanece anexado à instância, mesmo depois de ser promovido para um endereço IPv6 interno estático. Se você precisar atribuir o endereço IPv6 interno estático recém-promovido a outro recurso, primeiro cancele a atribuição do endereço IPv6 interno estático da instância que já existe.

API

Use o método addresses.insert.

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

Para endereços IPv4 e IPv6, o corpo da solicitação precisa incluir addressType, que precisa ser INTERNAL, name do endereço e address para promover e o subnetwork ao qual o endereço IP pertence. Para endereços IPv6, o corpo da solicitação precisa incluir prefixLength com 96 como valor.

  • Corpo da solicitação para promover endereços IPv4 internos:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    }
    

    Por exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv4-address-1",
    "addressType": "INTERNAL",
    "address": "10.128.0.2",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    }
    
  • Corpo da solicitação para promover endereços IPv6 internos:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    "prefixLength": 96
    }
    

    Por exemplo:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv6-address-1",
    "addressType": "INTERNAL",
    "address": "fd20:0:0::",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    "prefixLength": 96
    }
    

Usar um endereço IPv4 ou IPv6 interno estático com a VPC compartilhada

Você pode criar um endereço IP interno estático reservado em uma sub-rede compartilhada de uma rede VPC compartilhada. O próprio objeto de endereço IP é criado no mesmo projeto de serviço do recurso que o usará, embora o valor do endereço IP venha do intervalo de endereços IP disponíveis em uma sub-rede compartilhada selecionada da rede VPC compartilhada. Para mais informações sobre esse caso de uso, consulte os seguintes recursos:

Listar endereços IPv4 ou IPv6 internos estáticos

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

Excluir um endereço IPv4 ou IPv6 interno estático

Se você não precisar mais de um endereço IP interno estático, libere o endereço IP excluindo o recurso de endereço IP.

Se você estiver usando o console do Google Cloud, só poderá liberar um endereço IP estático se ele não estiver sendo usado por outro recurso.

Se você estiver usando a CLI gcloud ou API, poderá liberar um endereço IP, esteja ele sendo usado ou não por outro recurso.

  • Se o endereço IP não estiver sendo usado por um recurso, ele será retornado ao pool de endereços IP internos disponíveis.

  • Se o endereço IP estiver sendo usado por um recurso, ele permanecerá anexado ao recurso até o recurso ser excluído.

Para liberar um endereço IPv4 ou IPv6 interno e estático, siga as etapas abaixo.

Console

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

    Acessar endereços IP

  2. Selecione a guia Endereços IP internos.
  3. Opcional: no campo Filtro, digite static e selecione Estático : tipo na lista suspensa.
  4. Selecione o endereço IP interno estático que você quer liberar.
  5. Clique em Liberar endereço estático e confirme essa operação clicando em Liberar na caixa de diálogo.

    Se essa opção não estiver disponível, clique no menu Mais ações () na barra de menus superior e selecione Liberar endereço estático da lista.

gcloud

Use o comando compute addresses delete (em inglês).

gcloud compute addresses delete ADDRESS_NAME \
    --region REGION

Substitua:

  • ADDRESS_NAME: o nome do endereço a ser excluído.
  • REGION: a região à qual o endereço pertence.

Por exemplo:

gcloud compute addresses delete example-address-to-delete \
    --region us-west1

API

Use o método addresses.delete.

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

Este exemplo exclui um endereço na região us-west1:

DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete

A seguir