Como reservar um endereço IP interno estático

Se uma instância de máquina virtual (VM) exigir 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. As regras de encaminhamento podem ter endereços IP externos para balanceamento de carga externo ou endereços internos para balanceamento de carga interno. Para saber sobre endereços IP, leia a documentação Endereços IP.

Os IPs internos estáticos permitem reservar endereços IP internos do intervalo de IPs configurado na sub-rede e, em seguida, atribuir esses endereços 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. A reserva de endereços IP internos estáticos exige permissões do IAM específicas. Dessa maneira, somente usuários autorizados podem 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, leia Como reservar um endereço externo estático.

Antes de começar

Permissões

Para reservar e gerenciar endereços IP internos estáticos, você precisa receber o papel compute.networkAdmin ou uma ou mais das seguintes permissões:

  • compute.addresses.create no endereço IP
  • compute.addresses.createInternal no endereço IP
  • compute.instances.update na instância de VM
  • compute.subnetworks.use na sub-rede

Restrições

  • Não é possível alterar o endereço IP interno de um recurso atual. Por exemplo, não é possível atribuir um novo endereço IP interno estático a uma instância de VM em execução. No entanto, é possível promover o endereço IP interno efêmero de um recurso para um 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.

  • Não há como saber se um endereço IP é estático ou efêmero depois que ele é atribuído a um recurso, exceto se comparar o endereço IP com a lista de endereços IP internos estáticos reservados para esse projeto. Use o subcomando addresses list para ver uma lista de endereços IP internos estáticos disponíveis para o projeto.

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

Como reservar um endereço IP interno estático

É possível reservar um endereço IP interno estático antes de criar o recurso associado ou criar o recurso com um endereço IP interno efêmero. Depois, promova esse IP efêmero a endereço interno estático.

Para usar um endereço IP interno estático, você precisa de uma rede VPC em vigor para o projeto. Consulte Como usar redes VPC para saber como criar uma rede VPC.

Reservar um endereço específico e, em seguida, associá-lo a um recurso específico

Nesta situação, você reserva separadamente um endereço IP interno estático e o atribui a um recurso. Em resumo:

  1. Crie uma sub-rede a partir da rede VPC.

  2. Reserve um endereço IP interno do intervalo de IP principal da sub-rede. Esta etapa cria um recurso de endereço IP interno que contém esse endereço específico. Essa etapa também 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 ou um balanceador de carga interno ao criar o recurso de VM ou balanceador de carga.

Especificar um endereço IP interno efêmero para um recurso e, em seguida, promover o endereço

Neste cenário, o endereço IP interno efêmero ainda anexado a um recurso é promovido a endereço IP interno estático.

  1. Crie uma sub-rede.

  2. Crie uma instância de VM ou um balanceador de carga interno com um endereço IP efêmero alocado automaticamente ou um endereço IP escolhido em específico.

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

Os dois métodos são descritos no diagrama abaixo.

Reserva de IP interno.

Reservar um novo endereço IP interno estático

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

Console

É possível reservar um endereço IP interno independente usando o Console do Cloud.

  1. Acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique na rede VPC em que você quer reservar o novo IP estático.
  3. Clique em Endereços IP internos estáticos e em Reservar endereço estático.
  4. Digite um Nome para este endereço IP.
  5. Selecione uma sub-rede.
  6. Se quiser especificar o endereço IP a ser reservado, emEndereço IP estático , selecioneDeixe-me escolher e preencha com umEndereço IP personalizado para criar um anexo da VLAN de monitoramento. Caso contrário, o sistema atribui automaticamente um endereço IP na sub-rede para você.
  7. Se você quiser compartilhar esse IP em diferentes front-ends, em Finalidade, escolha Compartilhado.
  8. Clique em Reservar para concluir o processo.

gcloud

Usando a ferramenta gcloud, execute o comando compute addresses create:

gcloud compute addresses create ADDRESS_NAME [ADDRESS_NAME..] \
    --region REGION --subnet SUBNETWORK \
    --addresses IP_ADDRESS

Substitua:

  • ADDRESS_NAME: os nomes que você quer de um ou mais endereços a serem criados
  • 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 dentro do intervalo de IP principal da sub-rede. Se não for especificado, um será alocado automaticamente pela sub-rede.

Por exemplo, para reservar um endereço IP interno alocado automaticamente de uma sub-rede:

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1

Para reservar um endereço IP 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

É possível criar vários endereços passando o nome de mais de um endereço. No entanto, todos os endereços serão reservados na mesma sub-rede. Exemplo:

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

API

Chame o método addresses.insert.

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

O corpo da solicitação precisa incluir addressType, que precisa ser INTERNAL, o name do endereço e o subnetwork do endereço IP. É possível permitir que o sistema aloque automaticamente um endereço IP para você ou especifique o address para um endereço IP específico. O endereço IP precisa pertencer ao intervalo de endereços IP principal da sub-rede.

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

Exemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
}

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    = "3.0.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    = "3.0.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"]
}

Promover um endereço IP interno efêmero em uso a um endereço estático

Se tiver endereços IP efêmeros em uso no momento, é 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 reservar um endereço IP existente, você precisará do valor do endereço IP que quer promover. Faça uma solicitação describe ao recurso para obter o endereço IP. Por exemplo, se você promover um endereço IP atualmente em uso por uma instância de VM, use:

gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"

A ferramenta gcloud retorna o valor networkIP, que é o IP interno sendo usado pelo recurso. Por exemplo:

networkIP: 10.240.0.2

Em seguida, promova o endereço.

Console

Para promover um endereço IP interno efêmero para um endereço IP estático no console, siga estas etapas:

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

    Acessar instâncias de VM

  2. Selecione o projeto.

  3. Clique no nome da VM que você quer alterar.

  4. Na página de detalhes, clique em Editar e faça o seguinte:

    1. Na seção Interfaces de rede, clique na interface de rede para editá-la.
    2. Em Tipo de IP interno, selecione Estático.
    3. Preencha as informações de endereço IP estático.
    4. Para salvar as alterações, clique em Concluído.
  5. Para atualizar a instância, clique em Salvar.

gcloud

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

gcloud compute addresses create ADDRESS_NAME_1 [ADDRESS_NAME_2..] \
    --addresses IP_ADDRESS_1,[IP_ADDRESS_2,..] \
    --region REGION \
    --subnet SUBNETWORK

Substitua:

  • ADDRESS_NAME: os nomes que você quer do endereço. Declare os nomes na mesma ordem em que você declara os endereços IP. Nesse caso, ADDRESS_NAME_1 corresponde a IP_ADDRESS_1 e ADDRESS_NAME_2 corresponde a IP_ADDRESS_2.
  • IP_ADDRESS_1,[IP_ADDRESS_2,...]: os endereços IP a serem promovidos. Por exemplo, 10.128.1.9.
  • REGION: a região para reservar este endereço.
  • SUBNETWORK: a sub-rede desta solicitação.

Exemplo:

gcloud compute addresses create example-address-1 example-address-2 \
    --addresses 10.128.4.90,10.128.0.232 \
    --region us-central1 \
    --subnet subnet-1

API

Chame o método addresses.insert.

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

O corpo da solicitação precisa incluir o addressType que precisa ser INTERNAL, o name do endereço, o address para promover e o subnetwork do endereço IP:

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

Exemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "address": "10.128.0.2",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
}

Criar uma instância de VM com um endereço IP interno específico

É possível escolher um endereço IP interno específico para atribuir a uma instância ao criar a instância. Ele precisa ser um endereço IP válido da sub-rede da instância e não pode estar em uso. Ele permanece anexado à instância até ela ser excluída. Isso libera o endereço IP de volta ao pool. Se você parar e reiniciar a instância, ela manterá o mesmo endereço IP interno.

O Google Compute Engine alocará um endereço IP automaticamente da sub-rede ou da rede caso ele não seja especificado por você. Especifique um endereço IP interno usando o Console do Google Cloud, a ferramenta gcloud ou a API Compute Engine.

Console

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

    Acesse "Criar uma instância"

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

  3. Expanda Rede e faça o seguinte:

    1. Na seção Interfaces de rede, expanda uma interface de rede para editá-la.
    2. Opcionalmente, em Rede e Sub-rede, selecione a rede e a sub-rede que você quer usar.
    3. Na lista IP interno primário, selecione um endereço IP interno.
    4. Para concluir a modificação da interface de rede, clique em Concluído.
  4. Continue com o processo de criação da VM.

gcloud

Especifique um endereço IP válido ao criar a instância:

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

Substitua:

  • VM_NAME: o nome da instância a ser criada.
  • 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.

API

Para criar uma instância de VM com um endereço IP interno estático, chame o método instances.insert e forneça explicitamente a propriedade networkInterfaces[].networkIP pelo endereço IP interno que você quer atribuir à VM.

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": "IP_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
  • IP_ADDRESS: o endereço IP a ser atribuído à instância

Se você exclui uma instância com um endereço IP especificado, o endereço retorna ao 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.

Criar um balanceador de carga interno com um endereço IP interno estático

Para criar um balanceador de carga interno que use um endereço IP interno estático, siga as instruções destes links:

Usar um endereço IP interno estático para uma interface de rede secundária

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

Para atribuir um endereço IP interno estático a uma interface de rede secundária, faça o seguinte:

  1. Primeiro, reserve um endereço IP interno estático. Por exemplo, o exemplo a seguir reserva um endereço chamado my-second-ip-address na região us-central1. Como o comando omite a sinalização --addresses, o Compute Engine reserva um endereço IP aleatório:

    gcloud compute addresses create my-second-ip-address \
        --region us-central1 --subnet subnet-b
  2. Use o endereço como o endereço IP da interface secundária ao criar uma instância de VM. Exemplo:

    gcloud compute instances create my-instance \
        --image-family IMAGE_FAMILY \
        --image-project IMAGE_PROJECT \
        --network-interface subnet=subnet-a,no-address \
        --network-interface \
          subnet=subnet-b,private-network-ip=my-second-ip-address,no-address

Usar um IP interno estático com uma VPC compartilhada

Você pode criar um 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 IPs disponíveis em uma sub-rede compartilhada selecionada da rede VPC compartilhada. Consulte estas páginas para mais informações sobre o caso de uso:

Listar endereços IP internos estáticos

No Console do Cloud, você pode ver seus endereços IP internos estáticos de uma VPC selecionada. Para ver todo o endereço IP estático atual, incluindo endereço IP externo e interno, execute addresses list ou faça uma solicitação GET à API.

Console

  1. Acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique na rede VPC que você quer verificar.
  3. Clique em DESTINOS DE IP INTERNO INTERNO para visualizar todos os endereços IP internos estáticos reservados nessa VPC.

gcloud

Use o comando compute addresses list para listar todos os endereços IP estáticos, incluindo aqueles externos.

gcloud compute addresses list

API

Chame o método addresses.list:

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

Substitua:

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

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

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

Excluir um endereço IP interno estático

É possível excluir um endereço IP interno estático se você não precisar mais dele. É possível excluir um endereço usado ou não por outro recurso. Se estiver sendo usado por um recurso, o endereço permanecerá anexado ao recurso até o recurso ser excluído, quando o endereço é devolvido ao pool de endereços disponíveis para outros projetos.

Console

  1. Acesse a página Redes VPC.

    Acessar redes VPC

  2. Identifique a rede VPC que contém o IP que você quer liberar e clique no nome dela.
  3. Clique em E-MAILS INTERNOS ESTÁTICOS.
  4. Selecione os endereços IP que você quer liberar.
  5. Clique em RELEASE e confirme essa operação clicando em RELEASE na mensagem pop-up.

gcloud

Usando a ferramenta gcloud, execute o comando compute addresses delete:

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.

Exemplo:

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

API

Chame o método addresses.delete.

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

Por exemplo, para excluir 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