Reservar um endereço IP externo estático


É possível reservar endereços IP externos estáticos para sua instância de máquina virtual (VM). Também é possível alterar, listar e liberar endereços IP estáticos da sua VM.

Os endereços IP externos podem ser estáticos ou temporários. Se uma VM exige um endereço IP externo fixo que não muda, é possível conseguir um endereço IP externo estático. É possível reservar novos endereços IP externos ou promover endereços IP externos temporários já existentes.

Se você precisa de um endereço IP estático na rede interna do Compute Engine, leia Como reservar um endereço interno estático.

Antes de começar

  • Leia sobre endereços IP.
  • Leia sobre cotas e limites de endereços IP externos estáticos.
  • Leia sobre preços de endereço IP externo.
  • 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 da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    Terraform

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

    1. Instale a CLI do Google Cloud.
    2. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
    3. Crie as credenciais de autenticação para sua Conta do Google:

      gcloud auth application-default login

    Veja mais informações em: Configurar a autenticação para um ambiente de desenvolvimento local.

    REST

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

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Permissões

Para reservar endereços IPv6 externos regionais estáticos usando o console do Google Cloud, é necessário selecionar uma rede e uma sub-rede. No entanto, para ver uma lista de redes e sub-redes disponíveis, é necessário ter as seguintes permissões do IAM:

  • compute.networks.list
  • compute.subnetworks.list

Sobre endereços IP externos estáticos

Um endereço IP externo estático é o endereço reservado para seu recurso até que você decida liberá-lo. Se você tiver um endereço IP que os clientes ou usuários usam para acessar seu serviço, reserve-o para que apenas seu recurso possa usá-lo. Também é possível promover um endereço IP externo temporário para um endereço IP externo estático.

Para mais informações, consulte Endereços IP.

A tabela a seguir lista os endereços IP externos estáticos compatíveis com o Google Cloud.

Tipo de endereço IP Recurso Intervalo de IP Origem Associada a
Endereços IPv4 externos regionais VMs e balanceadores de carga regionais /32 Pool de endereços IP externos do Google Projeto
Endereços IPv6 externos regionais VMs e balanceadores de carga regionais compatíveis /96 Intervalo de endereços IPv6 externo da sub-rede Sub-rede
Endereços IPv4 externos globais Balanceadores de carga globais /32 Pool de endereços IP externos do Google Projeto
Endereços IPv6 externos globais Balanceadores de carga globais /64 Pool de endereços IP externos do Google Projeto

Para ver uma lista de balanceadores de carga regionais e globais, consulte o Resumo dos tipos de balanceador de carga.

Especificações para o uso de endereços IP externos estáticos

  • Apenas um recurso por vez usa um endereço IP externo estático.

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

  • Cada VM pode ter várias interfaces de rede, mas cada interface de rede pode ter apenas um endereço IP externo temporário ou estático.

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

  • Os endereços IP externos atribuídos existem no mesmo host físico que a VM e existem na mesma região que a VM para todos os fins, incluindo roteamento, latência e preços. Isso ocorre independentemente das informações de pesquisa de geolocalização na Internet.

Observação: as interfaces de rede podem receber tráfego de várias regras de encaminhamento, que também disponibilizam outros endereços IP externos. Qualquer número de endereços IP externos pode referir-se a uma interface de rede com essas regras de encaminhamento, mas cada interface de rede pode ter apenas um endereço IP externo.

Para mais informações sobre balanceamento de carga e regras de encaminhamento, leia a documentação sobre o balanceamento de carga.

Reservar um novo endereço IP externo estático.

Depois de reservar o endereço, atribua-o a uma nova VM ao criá-lo ou a uma VM existente.

Console

  1. No console do Google Cloud, acesse a página Reservar um endereço estático.

    Acessar "Reservar um endereço estático"

  2. Escolha um nome para o novo endereço.

  3. Especifique se o nível de serviço da rede é Premium ou Standard. A reserva de endereços estáticos IPv6 é suportada apenas no nível Premium.

  4. Especifique se o endereço é IPv4 ou IPv6.

  5. Especifique se esse endereço IP é regional ou global.

    • Se você estiver reservando um endereço IP estático para um balanceador de carga global, escolha Global e clique em Reservar.
    • Se você estiver reservando um endereço IP estático para uma VM ou para um balanceador de carga regional, escolha Regional e selecione a região para criar o endereço.
  6. Se você estiver reservando um endereço IPv6 externo regional, escolha também o seguinte:

    • Rede: a rede VPC.
    • Sub-rede: a sub-rede da qual o endereço IPv6 regional será atribuído.
    • Tipo de endpoint: escolha VM instance ou Network Load Balancer
  7. Opcional: se você estiver reservando o endereço IP externo estático de uma VM, selecione uma VM na lista Anexada a para anexar o endereço IP.

  8. Clique em Reservar para reservar o IP.

gcloud

Para reservar um endereço IP externo estático, use o comando gcloud compute addresses create.

Use as instruções a seguir para reservar um endereço IPv4 ou IPv6 estático externo:

  • Para reservar um endereço IP global, use os campos --global e --ip-version. No campo --ip-version, especifique IPv4 ou IPv6. Os endereços IP globais só podem ser usados com balanceadores de carga globais.

    gcloud compute addresses create ADDRESS_NAME \
      --global \
      --ip-version [IPV4 | IPV6]
    

    Substitua ADDRESS_NAME pelo nome que você quer associar a esse endereço.

  • Para reservar um endereço IPv4 externo regional, use o campo --region.

    gcloud compute addresses create ADDRESS_NAME \
       --region=REGION
    

    Substitua:

    • ADDRESS_NAME: o nome que você quer associar a esse endereço.
    • REGION: a região em que você quer reservar o endereço. Ela precisa ser a mesma região do recurso ao qual o endereço IP será anexado.
  • Para reservar um endereço IPv6 externo regional, use os campos --region, --subnet, --ip-version e --endpoint-type. Um intervalo IPv6 /96 é atribuído a partir da sub-rede especificada.

    gcloud compute addresses create IPV6_ADDRESS_NAME \
       --region=REGION \
       --subnet=SUBNET_NAME \
       --ip-version=IPV6 \
       --endpoint-type=[VM | NETLB]
    

    Substitua:

    • IPV6_ADDRESS_NAME: um nome para o endereço.
    • REGION: a região do endereço.
    • SUBNET_NAME: a sub-rede da qual o endereço IPv6 regional será atribuído. A sub-rede precisa ter um intervalo de endereços IPv6 externo atribuído.
    • VM | NETLB: o tipo de endpoint. Seja uma VM ou um balanceador de carga de rede.

Para ver o resultado, use o comando gcloud compute addresses describe:

gcloud compute addresses describe ADDRESS_NAME

Terraform

You can use the google_compute_address resource to create a regional external IP address.

resource "google_compute_address" "default" {
  name   = "my-test-static-ip-address"
  region = "us-central1"
}

Veja na amostra a seguir como usar o recurso google_compute_global_address para criar um endereço IPv6 externo global:

resource "google_compute_global_address" "default" {
  project      = var.project_id # Replace this with your service project ID in quotes
  name         = "ipv6-address"
  address_type = "EXTERNAL"
  ip_version   = "IPV6"
}

REST

  • Para criar um endereço IPv4 regional, chame o método addresses.insert regional:

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

    O corpo da sua solicitação precisa ter:

    {
      "name": "ADDRESS_NAME"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto desta solicitação
    • REGION: o nome da região para essa solicitação.
    • ADDRESS_NAME: o nome que você quer associar ao endereço.
  • Para endereços IPv4 estáticos globais, chame o método globalAddresses.insert:

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

    O corpo da sua solicitação precisa ter:

    {
      "name": "ADDRESS_NAME"
    }
    
  • Para endereços IPv6 estáticos globais, chame o método globalAddresses.insert:

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

    O corpo da sua solicitação precisa ter:

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6"
    }
    

    Para ver o resultado, use o método addresses.get.

  • Para endereços IPv6 estáticos regionais, chame o método addresses.insert:

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

    O corpo da sua solicitação precisa ter:

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6",
      "ipv6EndpointType": "VM|LB",
      "networkTier": "PREMIUM",
      "subnetwork": "SUBNET"
    }
    

    Substitua SUBNET pela sub-rede do projeto.

    Para ver o resultado, use o método addresses.get.

Atribuir um endereço IP externo estático a uma nova instância de VM

Depois de reservar um endereço IP externo estático, ele pode ser atribuído a uma VM.

Console

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

    Acesse "Criar uma instância"

  2. Especifique os detalhes da VM.

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

  4. Expanda a seção Rede.

  5. Na seção Interfaces de rede, expanda uma interface de rede para editá-la.

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

    1. Selecione uma rede.
    2. Selecione o endereço IP na lista Endereço IPv4 externo.
  7. Para atribuir um endereço IPv6, 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.
    3. Em Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
    4. Selecione o endereço IPv6 externo recém-reservado na lista Endereço IPv6 externo. Como alternativa, selecione CRIAR ENDEREÇO IP e reserve um novo endereço IPv6 externo estático.
    5. Em Nível de serviço de rede, selecione Premium.
  8. Para concluir a modificação da interface de rede padrão, clique em Concluído.

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

gcloud

Crie uma VM e atribua um endereço IP externo regional estático já reservado.

  • Para atribuir um endereço IPv4 externo estático, faça o seguinte:

    gcloud compute instances create VM_NAME --address=IP_ADDRESS
    

    Substitua:

    • VM_NAME: o nome da VM.
    • IP_ADDRESS: o endereço IP a ser atribuído à instância. Use o endereço IP externo estático reservado, não o nome do endereço.
  • Para atribuir um endereço IPv6 externo estático, faça o seguinte:

    gcloud compute instances create VM_NAME \
        --subnet=SUBNET \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier=PREMIUM \
        --zone=ZONE
    

Terraform

Use o recurso google_compute_instance para atribuir um endereço IP externo.

resource "google_compute_instance" "default" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = google_compute_address.default.address
    }
  }
}

REST

Para atribuir um endereço IPv4 externo estático a uma nova VM, faça o seguinte:

Na solicitação para criar uma VM nova, informe explicitamente a propriedade networkInterfaces[].accessConfigs[].natIP e o endereço IPv4 externo que pretende usar. Exemplo:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
      "natIP": "IPV4_ADDRESS"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "SOURCE_IMAGE"
      }
}]
}

Para atribuir um endereço IPv6 externo estático a uma nova VM, faça o seguinte:

Na solicitação para criar uma VM nova, informe explicitamente a propriedade networkInterfaces[].ipv6AccessConfigs[].externalIpv6 e o endereço IPv6 externo que pretende usar. Exemplo:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
          "accessConfigs": [{
              "name": "external-nat",
              "type": "ONE_TO_ONE_NAT"
          }],
          "ipv6AccessConfigs": [{
        "externalIpv6": "IOV6_ADDRESS",
        "externalIpv6PrefixLength": 96,
        "name": "external-ipv6-access-config",
        "networkTier": "PREMIUM",
        "type": "DIRECT_IPV6"
          }],
      "stackType": "IPV4_IPV6",
      "subnetwork":"SUBNETWORK
  }],
  "disks": [{
    "autoDelete": "true",
    "boot": "true",
    "mode": "READ_WRITE",
    "type": "PERSISTENT",
    "initializeParams": {
        "sourceImage": "SOURCE_IMAGE"
    },
  }],
 }

Alterar ou atribuir um endereço IP externo a uma VM

É possível alterar ou atribuir um endereço IP externo, temporário ou estático, a uma VM atual.

Uma VM pode ter várias interfaces e cada interface pode ter um endereço IP externo. Se a VM já tiver um endereço IP externo, será necessário remover esse endereço primeiro. Em seguida, atribua um novo endereço IP externo à VM.

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 VM a que você quer atribuir um IP externo. A página de detalhes da instância é aberta.
  3. Na página "Detalhes da instância", siga estas etapas:

    1. Clique em Editar.
    2. Abra Interfaces de rede.
    3. Selecione o endereço IP externo necessário para atribuir à VM:
      1. Em Endereço IPv4 externo, selecione Temporário ou um endereço IPv4 externo estático.
      2. Em Endereço IPv6 externo, selecione Temporário ou um endereço IPv6 externo estático.
    4. Clique em Concluído.
  4. Clique em Salvar.

gcloud

  1. Opcional: reserve um endereço IP externo estático.

    Para atribuir um endereço IP externo estático, reserve um endereço e verifique se ele não está em uso. Se necessário, siga as instruções para reservar um novo endereço IP externo estático ou para cancelar a atribuição de um endereço desse tipo.

    Se você pretende usar um endereço IP externo temporário, pule esta etapa e um endereço IP externo temporário será atribuído aleatoriamente pelo Compute Engine.

  2. Remova a atribuição do endereço IP.

    • Para remover um endereço IPv4 de uma VM, exclua as configurações de acesso atuais.

      É possível definir uma configuração de acesso para cada VM. Antes de tentar atribuir uma nova configuração de acesso a uma VM, verifique se ela tem uma configuração de acesso fazendo uma solicitação usando o comando gcloud compute instances describe:

      gcloud compute instances describe VM_NAME
      

      Se já houver uma configuração de acesso, ela aparecerá no formato a seguir:

      networkInterfaces:
      - accessConfigs:
        - kind: compute#accessConfig
          name: external-nat
          natIP: 203.0.113.1
          type: ONE_TO_ONE_NAT
      

      Antes de adicionar uma nova configuração de acesso, use o subcomando instances delete-access-config para excluir a configuração atual:

      gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
      

      Substitua:

      • VM_NAME: o nome da VM.
      • ACCESS_CONFIG_NAME: a configuração de acesso a ser excluída. Inclua o nome completo entre aspas.
    • Para remover um endereço IPv6 de uma VM, altere o tipo de pilha.

      Verifique se a VM tem uma configuração IPv6 fazendo uma solicitação usando o comando gcloud compute instances describe:

      gcloud compute instances describe VM_NAME \
          --zone=ZONE
      

      Substitua:

      • VM_NAME: o nome da VM.
      • ZONE: a zona da VM.

      Se um endereço IPv6 externo já tiver sido atribuído a nic0, a configuração será exibida no seguinte formato:

      networkInterfaces:
        ...
        ipv6AccessConfigs:
        - externalIpv6: 2001:db8:4000:15:0:0:0:0
          externalIpv6PrefixLength: 96
          kind: compute#accessConfig
          name: external-ipv6
          networkTier: PREMIUM
          type: DIRECT_IPV6
        ipv6AccessType: EXTERNAL
        kind: compute#networkInterface
        name: nic0
      

      Remova a configuração do endereço IPv6 usando o subcomando instance network-interfaces update:

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

      Substitua:

      • NIC: o nome da interface de rede
      • VM_NAME: o nome da VM.
      • ZONE: a zona da VM.
  3. Atribua o novo endereço IP externo.

    • Para atribuir um endereço IPv4, use o subcomando instances add-access-config:

      Observação: não substitua IP_ADDRESS pelo nome do IP estático. É necessário usar o endereço IP real.
      gcloud compute instances add-access-config VM_NAME \
      --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
      

      Substitua:

      • VM_NAME: o nome da VM.
      • ACCESS_CONFIG_NAME: o nome a ser atribuído a essa configuração de acesso. Inclua o nome completo entre aspas.
      • IP_ADDRESS: o endereço IP a ser adicionado.

      Se você quiser que o Compute Engine atribua um endereço IP externo temporário em vez de usar um endereço IP externo estático, omita a propriedade --address IP_ADDRESS:

      gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"
      
    • Para atribuir um intervalo de endereços IPv6, use o subcomando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface==NIC \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --zone=ZONE
      

      Substitua:

      • VM_NAME: o nome da VM.
      • NIC: o nome da interface de rede
      • IPV6_ADDRESS: o endereço IPv6 que será atribuído à VM. Especifique o primeiro endereço IPv6 no intervalo /96.
      • ZONE: a zona da VM.

REST

É possível alterar o endereço IPv4 ou IPv6 externo de uma VM adicionando uma nova configuração de acesso a ela.

  1. Verifique se a VM tem uma configuração de acesso atual. Para verificar os detalhes da VM, faça uma solicitação GET para o GET métodoinstances.get .

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

    Substitua:

    • PROJECT_ID: o ID do projeto desta solicitação
    • ZONE: é a zona em que a VM está localizada
    • VM_NAME: o nome da VM

    Se já houver uma configuração de acesso IPv4, a resposta será semelhante a esta:

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External NAT",
            "natIP": "IPV4_ADDRESS",
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    O campo networkInterfaces[].accessConfigs[].natIP retorna o endereço IPv4 externo estático da instância de VM.

    Se já houver uma configuração de acesso IPv6, a resposta será semelhante a esta:

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "ipv6AccessConfigs": [
          {
            type: "DIRECT_IPV6",
            "name": "external-ipv6",
            "externalIpv6": "IPV6_ADDRESS",
            "externalIpv6PrefixLength": 96,
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    O campo networkInterfaces[].ipv6AccessConfigs[].externalIpv6 retorna o endereço IPv6 externo estático da instância de VM.

  2. Exclua a configuração de acesso atual fazendo uma solicitação POST ao métodoinstances.deleteAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
    
  3. Adicione uma nova configuração de acesso à interface de rede da instância de VM fazendo uma solicitação POST ao métodoinstances.addAccessConfig.

Alterar o endereço IP de uma regra de encaminhamento

Se você precisar atualizar o endereço IP em uma regra de encaminhamento, faça o seguinte:

  1. Cancele a atribuição do endereço IP.

  2. Exclua a regra de encaminhamento usando o comando gcloud compute forwarding-rules delete ou o método forwardingRules.delete.

  3. Crie novamente a regra de encaminhamento usando o comando gcloud compute forwarding-rules create ou o método forwardingRules.insert.

Promover um endereço IP externo temporário

Se a VM tiver um endereço IP externo temporário e você quiser atribuir o endereço IP permanentemente ao projeto, promova o endereço IP externo temporário a um endereço IP externo estático. Promover um endereço IP externo temporário a reservado não faz com que o Google Cloud ignore pacotes enviados para a VM. Isso inclui pacotes enviados para a VM diretamente ou por meio de um balanceador de carga.

Console

  1. Acesse a página Endereços IP.

    Acessar endereços IP

  2. Clique em Endereços IP externos.
  3. Opcional: no campo Filtro, procure o endereço IP temporário que você quer promover.
  4. No menu Mais ações () do endereço IP que você quer promover, selecione Promover a endereço IP estático.
  5. Insira um nome para o novo endereço IP estático e clique em Reservar.

gcloud

Use as seguintes instruções para promover um endereço IPv4 ou IPv6 externo estático:

  • Para promover um endereço IPv4 externo temporário a um endereço IPv4 externo estático, forneça o endereço IP externo temporário usando a sinalização --addresses com o comando compute addresses create. Use a flag region para promover um endereço IP regional temporário ou a sinalização global para promover um endereço IP global temporário.

    gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \
        [--region=REGION | --global]
    

    Substitua:

    • ADDRESS_NAME: o nome que você quer associar a esse endereço.
    • IP_ADDRESS: o endereço IP que você quer promover.
    • REGION: a região a que o endereço IP regional pertence.

    • Para promover um endereço IPv6 externo regional temporário a um endereço IPv6 externo estático, forneça o endereço IP externo temporário usando a sinalização --addresses com o comando compute addresses create.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --addresses=IPV6_ADDRESS \
        --prefix-length=96
    

    Substitua:

    • ADDRESS_NAME: um nome para o recurso de endereço IP.
    • REGION: a região do recurso de endereço IPv6.
    • IPV6_ADDRESS: o endereço IPv6 que você está promovendo.

REST

Para promover um endereço IP regional temporário, chame o método addresses.insert:

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

Para promover um endereço IP global temporário, faça uma solicitação POST para o URI a seguir:

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

Especifique os valores dos campos obrigatórios do corpo da solicitação:

  • Para endereços IPv4, o corpo da solicitação deve conter os seguintes campos:

    {
      "name": "ADDRESS_NAME",
      "address": "IPV4_ADDRESS"
      "addressType": "EXTERNAL"
    }
    
  • Para endereços IPv6, o corpo da solicitação precisa conter os seguintes campos:

    {
      "name": "ADDRESS_NAME",
      "address": "IPV6_ADDRESS"
      "prefixLength": 96
      "addressType": "EXTERNAL"
    }
    

    Substitua:

    • ADDRESS_NAME: o nome que você quer associar a esse endereço.
    • IPV4_ADDRESS|IPV6_ADDRESS: o endereço IPv4 ou IPv6 que você quer promover.
    • REGION: a região a que o endereço IPv4 ou IPv6 pertence.
    • PROJECT_ID: o ID do projeto desta solicitação

O endereço IP externo permanece anexado à VM, mesmo depois de ser sido promovido para um endereço IP externo estático. Se você precisar atribuir o endereço estático recém-promovido a outro recurso, cancele a atribuição do endereço IP externo estático da VM.

Listar endereços IP externos estáticos

Para listar endereços IP externos estáticos que você reservou para o projeto, siga estas etapas.

Console

Para ver uma lista de endereços IP do seu projeto, no console do Google Cloud, acesse a página Endereços IP externos.

Acessar Endereços IP externos

gcloud

Use o comando gcloud compute addresses list:

  • Para listar todos os endereços IP, use o seguinte comando:

    gcloud compute addresses list
  • Para listar todos os endereços IP globais, use o seguinte comando:

    gcloud compute addresses list --global
  • Para listar todos os endereços IP regionais em uma determinada região, use o seguinte comando:

    gcloud compute addresses list \
      --regions=REGION
    

    Substitua REGION pela região em que você quer listar os endereços. É possível listar endereços de várias regiões especificando nomes de regiões separados por vírgulas:

    gcloud compute addresses list \
      --regions=REGION1,REGION2,..REGION_n_
    

REST

  • Para listar endereços IPv4 ou IPv6 regionais, 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
    
  • Para listar endereços IPv4 ou IPv6 globais, chame o método globalAddresses.list:

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

    Substitua:

    PROJECT_ID: o ID do projeto desta solicitação

Descrever um endereço IP externo estático

Para informações sobre um endereço IP externo estático, siga estas etapas.

Console

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

    Acessar Endereços IP externos

  2. Clique em um endereço IP para ver mais informações sobre ele.

gcloud

Use o comando addresses describe. Substitua ADDRESS_NAME pelo nome do endereço IP externo que você quer descrever.

  • Para um endereço IPv4 ou IPv6 global, use o seguinte comando:

    gcloud compute addresses describe ADDRESS_NAME --global
  • Para um endereço IPv4 ou IPv6 regional, use o seguinte comando:

    gcloud compute addresses describe ADDRESS_NAME --region=REGION

REST

  • Para descrever um endereço IPv4 ou IPv6 regional, chame o método addresses.get:

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

    Substitua:

    • ADDRESS_NAME: o nome do endereço IP
    • REGION: o nome da região para essa solicitação
    • PROJECT_ID: o ID do projeto para a solicitação.
  • Para descrever um endereço IPv4 ou IPv6 global, chame o método globalAddresses.get:

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

    Substitua:

    • ADDRESS_NAME: o nome do endereço IP
    • PROJECT_ID: o ID do projeto para a solicitação.

Cancelar a atribuição de um endereço IP externo estático

O cancelamento da atribuição de um endereço IP o remove do recurso, mas mantém o endereço reservado. Depois de cancelar a atribuição do endereço IP, você poderá reatribuir o endereço IP a outro recurso.

Também é possível cancelar a atribuição do endereço IPv4 ou IPv6 excluindo a VM.

Console

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

    Acessar Endereços IP externos

  2. Selecione o endereço IP estático para o qual você quer cancelar a atribuição.
  3. Clique em Alterar para abrir a caixa de diálogo Anexar endereço IP.
  4. Na lista suspensa Anexar a, selecione Nenhuma.
  5. Clique em OK.

gcloud

  1. Verifique se um endereço IP estático está em uso usando o comando gcloud compute addresses list:

    gcloud compute addresses list
    

    O resultado será assim:

    NAME                      REGION    ADDRESS                  STATUS
    example-address-ipv4      REGION    198.51.100.1             RESERVED
    example-address-new-ipv4  REGION    203.0.113.1              IN_USE
    example-address-ipv6      REGION    2001:db8:1:1:1:1:1:1     RESERVED
    example-address-new-ipv6  REGION    2001:db8:4:4:4:4:4:4     IN_USE
    
    • Se o endereço IP não estiver em uso, o status será RESERVED.
    • Se o endereço IP estiver em uso, o status será IN_USE.
  2. Recupere o nome da VM que está usando o endereço IP:

    gcloud compute addresses describe ADDRESS_NAME \
      --region=REGION
    

    Substitua:

    • ADDRESS_NAME: o nome do recurso de endereço IPv6.
    • REGION: a região do recurso de endereço IPv6.

    O resultado será assim:

    address: IP_ADDRESS
    addressType: EXTERNAL
    ...
    region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME
    status: IN_USE
    subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET
    users:
    - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    O campo users exibe o nome da VM que está usando o endereço IP.

  3. Cancele a atribuição do endereço IP da VM.

    • Para cancelar a atribuição de um endereço IPv4, exclua o arquivo de configuração de acesso da VM:

      1. Encontre o nome da configuração de acesso a ser excluída. Para encontrar o nome, use o comando gcloud compute instances describe. Substitua VM_NAME pelo nome da VM.

        gcloud compute instances describe VM_NAME
        

        A configuração de acesso aparece no formato a seguir:

        networkInterfaces:
          - accessConfigs:
            - kind: compute#accessConfig
              name: external-nat
              natIP: 203.0.113.1
              type: ONE_TO_ONE_NAT
        
      2. Exclua a configuração de acesso usando o comando gcloud compute instances delete-access-config:

        gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
        

        Substitua:

        • VM_NAME: o nome da VM.
        • ACCESS_CONFIG_NAME: o nome da configuração de acesso a ser excluída. Inclua o nome completo entre aspas.
    • Para cancelar a atribuição de um intervalo de endereços IPv6, use o comando instance network-interfaces update:

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

      Substitua:

      • VM_NAME: o nome da VM que está usando o endereço IP.
      • ZONE: a zona da VM.
  4. Verifique se o endereço IP externo estático está disponível e marcado como RESERVED vez de IN_USE.

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

    Substitua:

    • ADDRESS_NAME: o nome do recurso de endereço IP.
    • REGION: a região do recurso de endereço IP.

Agora que o endereço IP externo estático está disponível, atribua-o a outra VM.

REST

Para cancelar a atribuição de um endereço IPv4 ou IPv6 estático, siga estas etapas:

  • Para endereços IPv4, exclua a configuração de acesso anexada à VM que está usando o endereço.

    1. Para verificar os detalhes de configuração de acesso de uma VM, faça uma solicitação GET ao método instances.get.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
      
    2. Exclua a configuração de acesso atual fazendo uma solicitação POST ao método instances.deleteAccessConfig.

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

      Substitua:

      • PROJECT_ID: o ID do projeto para essa solicitação.
      • ZONE: é a zona em que a VM está localizada
      • VM_NAME: o nome da VM
  • Para endereços IPv6, atualize o tipo de pilha da interface de rede da VM em que o endereço IPv6 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.

      Exemplo:

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

Liberar um endereço IP externo 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.

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 REST, 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 externos disponíveis.

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

Console

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

    Acessar Endereços IP externos

  2. Selecione o endereço IP a ser liberado.
  3. Clique em Liberar endereço IP.

gcloud

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

gcloud compute addresses delete ADDRESS_NAME

Substitua ADDRESS_NAME pelo nome do endereço IPv4 ou IPv6 a ser liberado.

REST

  • Para liberar um endereço IPv4 ou IPv6 regional, chame o método addresses.delete:

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

    Substitua:

    • ADDRESS_NAME: o nome do endereço IP
    • REGION: o nome da região para essa solicitação;
    • PROJECT_ID: o ID do projeto desta solicitação
  • Para liberar um endereço IPv4 ou IPv6 global, chame o método globalAddresses.delete:

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

    Substitua:

    • ADDRESS_NAME: o nome do endereço IP
    • PROJECT_ID: o ID do projeto desta solicitação

Restringir endereços IP externos a VMs específicas

Determinadas cargas de trabalho podem exigir requisitos essenciais que incluam restrições de segurança e rede. Por exemplo, é possível restringir os endereços IP externos para que somente VMs específicas possam usá-los. Essa opção pode ajudar a evitar a exfiltração de dados ou a manter o isolamento da rede. É possível usar uma política da organização para restringir endereços IP externos a instâncias de VM específicas com limitações para controlar o uso de endereços IP externos para suas VMs dentro de uma organização ou um projeto.

A restrição para controlar o endereço IP externo nas VMs é:

constraints/compute.vmExternalIpAccess

Para usar a restrição, especifique uma política com uma allowedList de VMs que podem ter endereços IP externos. Se você não especificar uma política, todos os endereços IP externos serão permitidos para todas as VMs. Quando a política estiver em vigor, somente as instâncias de VM relacionadas na lista allowedValues poderão ser atribuídas a um endereço IP externo, instável ou estático. As instâncias de VM do Compute Engine que não forem definidas explicitamente na política não poderão usar endereços IP externos.

As VMs são identificadas nas listas de permissão e negação usando o URI da instância:

projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Especificações para restringir endereços IP externos

  • É possível aplicar essa restrição de lista apenas às VMs.
  • Não é possível aplicar a restrição retroativamente. Todas as VMs que têm endereços IP externos antes da ativação da política mantêm os endereços IP externos.
  • Essa restrição aceita uma allowedList ou uma deniedList, mas não ambas na mesma política.
  • Cabe a você ou a um administrador com as permissões solicitadas gerenciar e manter o ciclo de vida e a integridade da VM. A restrição apenas verifica o URI da VM e não impede que as VMs na lista de permissões sejam alteradas, excluídas ou recriadas.

Permissões necessárias para restringir endereços IP externos

Para definir uma restrição no nível do projeto ou da organização, você precisa ter recebido o papel orgpolicy.policyAdmin na organização.

Definir a restrição de política no nível da organização

Console

  1. Acesse a página Políticas da organização.

    Acessar as políticas organizacionais

  2. Se necessário, selecione a organização no menu suspenso do projeto.
  3. Clique em Definir os IPs externos para instâncias de VM permitidas.
  4. Clique em Editar para editar a política de IP externo. Se não for possível acessar a ferramenta Editar, você não tem as permissões corretas.
  5. Selecione Personalizar para definir a política da organização para VMs específicas.

    Opção personalizada na página "Editar política da organização".

  6. Selecione as opções Aplicação da política e Tipo de política.

  7. Em Valores da política, selecione Personalizada.

  8. Insira um URI para uma instância de VM e pressione enter. O URI precisa estar no seguinte formato:

    projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    
  9. Clique em Novo valor de política e digite URIs para as VMs, conforme necessário.

  10. Clique em Salvar para aplicar a restrição.

gcloud

Para definir uma restrição de acesso de IP externo, você precisa saber o código da organização. Encontre o ID da organização executando o comando organizations list e procurando pelo ID numérico na resposta:

gcloud organizations list

A CLI gcloud retorna uma lista de organizações no seguinte formato:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Use o comando gcloud resource-manager org-policies set-policy para definir a política. Será preciso fornecer a política como um arquivo JSON. Crie um arquivo JSON no seguinte formato:

{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
  "allowedValues": [
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Substitua:

  • PROJECT_ID: o ID do projeto para esta solicitação, como example-project. Observe que isso é diferente de configurar políticas da organização, que exigem o ID numérico da organização.
  • ZONE: a zona da VM
  • VM_NAME: o nome da VM

Como alternativa, é possível especificar uma lista de deniedValues para expressar VMs proibidas explicitamente de ter um endereço IP externo. Qualquer VM que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues ou deniedValues, mas não ambos.

Depois, passe o arquivo com sua solicitação :

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID

Substitua ORGANIZATION_ID pelo ID numérico da organização.

Se você não quiser que nenhuma VM tenha acesso de IP externo, defina uma política com allValues definido como DENY:

{
  "constraint": "constraints/compute.vmExternalIpAccess",
  "listPolicy": {
    "allValues": "DENY"
  }
}

REST

Use a API setOrgPolicy() para definir a restrição. As VMs na lista allowedValue especificada podem ter endereços IP externos. Como alternativa, é possível especificar uma lista de deniedValues para expressar instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer VM que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues ou deniedValues, mas não ambos.

Por exemplo, a seguir há uma solicitação para aplicar a restrição compute.vmExternalIpAccess em uma organização em que as VMs de determinados projetos dentro da organização têm permissão para ter endereços IP externos:

POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy

ORGANIZATION_ID é o ID numérico da organização.

No corpo da solicitação, forneça a política para essa restrição:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
        ]
      }
    }
 }

Se você não quiser que nenhuma VM tenha acesso de IP externo, defina uma política com allValues definido como DENY:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allValues": "DENY"
      }
    }
 }

Definir a política para envolvidos no projeto

A definição de uma política no nível do projeto substitui a política no nível da organização. Por exemplo, se o nível da organização tiver example-vm-1 na lista allowedValues, mas a política no projeto tiver a mesma VM na lista deniedValues, a VM não será pode ter um endereço IP externo.

Console

Siga o mesmo processo documentado em Definir a restrição de política no nível da organização, mas escolha o projeto no seletor de projetos, em vez da organização.

Seletor de projetos.

gcloud

Use o comando gcloud resource-manager org-policies set-policy para definir a política. Será preciso fornecer a política como um arquivo JSON. Crie um arquivo JSON no seguinte formato:

{
 "constraint": "constraints/compute.vmExternalIpAccess",
 "listPolicy": {
  "allowedValues": [
   "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Substitua:

  • PROJECT_ID: o ID do projeto para esta solicitação, como example-project. Observe que isso é diferente de configurar políticas da organização, que exigem o ID numérico da organização.
  • ZONE: a zona da VM.
  • VM_NAME: o nome da VM.

Como alternativa, é possível especificar uma deniedValues de instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer VM que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues ou deniedValues, mas não ambos.

Depois, passe o arquivo com sua solicitação :

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project

REST

Use a API setOrgPolicy para definir a restrição. As VMs na lista allowedValue especificada podem ter endereços IP externos. Como alternativa, é possível especificar uma lista de deniedValues para expressar instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer VM que não esteja na lista está implicitamente autorizada a ter um endereço IP externo. É possível especificar allowedValues ou deniedValues, mas não ambos.

Por exemplo, a seguir há uma solicitação para definir a restrição compute.vmExternalIpAccess em um projeto para permitir que instâncias de VM específicas tenham endereços IP externos:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy

Substitua PROJECT_ID pelo ID do projeto para esta solicitação.

O corpo da solicitação contém a política para esta restrição:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
      ]
    }
  }
}

Práticas recomendadas para restringir endereços IP externos

  • Evite usar a lista deniedValues com essa restrição. Se você definir valores na lista deniedValues, significa que apenas as VM na lista deniedValues estarão restritas de usar endereços IP externos. Essa pode ser uma preocupação de segurança se você quer controlar exatamente quais VMs podem ter endereços IP externos. Se você quiser remover determinadas VMs da lista allowedValues, atualize a política atual para remover as VMs da allowedList em vez de colocar as VMs na lista deniedValues em uma hierarquia inferior.

  • Se você quiser definir uma política em grande parte da hierarquia de recursos, mas excluir determinados projetos, restaure a política padrão usando a setOrgPolicy , especificando o restoreDefault para permitir que todas as VMs nos projetos sejam associadas a endereços IP externos. As políticas atuais para projetos não são afetadas pela configuração padrão.

  • Use esta política organizacional com os papéis do IAM para controlar melhor o ambiente. Essa política se aplica apenas a VMs, mas se você quiser controlar e restringir melhor os endereços IP externos em dispositivos de rede, conceda o papel compute.networkAdmin às partes apropriadas.

  • Todos os serviços e produtos em execução no Compute Engine na organização ou no projeto com a política ativada estão sujeitos a essa política organizacional. Especificamente, serviços como o Google Kubernetes Engine, Dataflow, Dataproc e Cloud SQL são afetados por essa política. Se isso for um problema, recomendamos configurar outros serviços e produtos em um projeto diferente sem a aplicação da política da organização. Se necessário, use a Rede de projetos cruzados.

A seguir