Configurar intervalos de IP do alias

Este documento contém instruções para configurar endereços IP de alias e intervalos de IP de alias usando o console do Google Cloud e a Google Cloud CLI. Antes de executar esses comandos, revise os intervalos de IP do alias.

Limitações

Sub-rede

  • Os limites por rede descrevem o número máximo de intervalos secundários que podem ser definidos para cada sub-rede.
  • Não é possível adicionar e remover intervalos secundários simultaneamente. Essas ações precisam ser feitas em etapas separadas.
  • A expansão CIDR não é compatível com intervalos secundários.

Instância de VM

  • Os intervalos de IP de alias são compatíveis com todas as interfaces de rede de máquinas virtuais (VMs). O roteamento é configurado automaticamente para intervalos de IP do alias na interface de rede principal, mas não nas interfaces secundárias. Se você tiver várias interfaces de rede, será necessário configurar o roteamento de políticas para as outras interfaces. Para um exemplo de como fazer isso, consulte o seguinte tutorial: Configurar o roteamento para uma interface de rede adicional.
  • Os intervalos de IP do alias podem ser adicionados ou excluídos, mas não atualizados.
  • Se você remover um intervalo de IP do alias de uma VM e atribuí-lo a outra, a transferência pode levar até um minuto para ser concluída.
  • As tags de origem do firewall não são compatíveis com endereços IP do alias. Isso significa que, ao configurar tags de origem nas regras de firewall, elas correspondem ao endereço IP principal da VM, mas não aos endereços IP do alias. Use intervalos de origem para permitir ou negar o tráfego de entrada proveniente de endereços IP do alias.
  • O DNS interno resolve um nome de VM para o IP principal dela. Os outros nomes para IPs do alias não são configurados automaticamente, mas podem ser adicionados manualmente.

Rede VPC

  • Adicionar ou remover simultaneamente um grande número de intervalos de IP do alias pode demorar. Por exemplo, adicionar ou excluir 7.000 intervalos de IP do alias pode levar até 10 minutos.
  • As redes de nuvem privada virtual (VPC) de modo automático não podem ser excluídas quando há intervalos de sub-redes secundários.
  • Em uma rota estática, o endereço IP do próximo salto precisa ser o endereço IP principal da VM. Os endereços IP de alias não são aceitos como endereços IP do próximo salto.
  • Não há suporte para endereços IPv6.
  • Os intervalos de IP do alias são compatíveis apenas com as redes VPC, não com as legadas. Liste suas redes para determinar qual é o tipo da sua. As redes VPC têm um modo de custom ou auto. As redes legadas têm um modo de legacy.

Comandos de sub-rede

Os intervalos de IP do alias da VM precisam ser atribuídos por meio de um intervalo pertencente à sub-rede em que a VM está inserida. Toda as sub-redes têm um intervalo primário, que é o intervalo padrão dos endereços IP que define a sub-rede. Uma sub-rede também pode ter um ou mais intervalos de IP secundários com endereços IP internos. Os intervalos de IP do alias podem ser atribuídos a partir dos intervalos primário ou secundário da sub-rede.

Dê a cada intervalo secundário um nome exclusivo na sub-rede. Ao atribuir um intervalo de IP do alias a uma VM, o nome do intervalo secundário informa Google Cloud qual intervalo de sub-rede ele deve usar para atribuir os IPs do alias.

Todos os intervalos, primários e secundários, precisam ser exclusivos em todas as sub-redes da rede VPC e de qualquer rede anexada usando peering de rede VPC, Cloud VPN ou Cloud Interconnect.

Esta seção mostra como criar sub-redes com intervalos secundários e adicioná-los ou removê-los de uma sub-rede existente. Depois que a sub-rede tiver o intervalo que você quer usar, consulte a seção Trabalhar com instâncias de VM para saber como atribuir um intervalo a uma VM.

Criar uma sub-rede com um ou mais intervalos CIDR secundários

Esse comando pressupõe que você já tenha uma rede VPC. Se você não, crie uma.

Esse comando não mudará, mesmo se você estiver criando uma sub-rede para a interface principal da VM ou uma das interfaces secundárias.

O uso de um intervalo secundário para a alocação de IP do alias permite que você separe o espaço de IP para serviços hospedados na VM. Isso facilita a criação de regras de firewall que permitem acesso somente aos serviços em execução na VM e bloqueiam o acesso ao endereço IP principal da VM.

Console

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique no nome de uma rede existente.

  3. Clique em Add subnet.

  4. Insira um nome para a nova sub-rede.

  5. Especifique a região.

  6. Insira um intervalo de endereços IP na notação CIDR, por exemplo, 10.65.61.0/24.

  7. Clique em Criar um intervalo de IP secundário.

  8. Insira um nome de intervalo de sub-rede.

  9. Insira um intervalo de IP secundário na notação CIDR, por exemplo, 10.9.0.0/24.

  10. Para adicionar intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP e forneça um nome e um intervalo.

  11. Clique em Adicionar.

gcloud

gcloud compute networks subnets create s1 \
    --network NETWORK_NAME \
    --region REGION \
    --range 10.65.61.0/24 \
    --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

Substitua:

  • NETWORK_NAME: o nome da rede em que você quer criar a sub-rede.
  • REGION: a região em que você está criando a sub-rede.
  • RANGE_NAME_1=RANGE_CIDR_1 e RANGE_NAME_2=RANGE_CIDR_2: os nomes dos intervalos secundários de onde os intervalos de IP do alias serão extraídos: por exemplo, range1=10.9.0.0/24.

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Crie uma sub-rede com um ou mais intervalos secundários.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "PRIMARY_IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET_NAME",
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...]
}

Substitua:

  • PROJECT_ID: o ID do projeto que contém a rede VPC em que a sub-rede será criada.
  • REGION: a região em que a sub-rede será localizada.
  • PRIMARY_IP_RANGE: o intervalo de endereços IP principal da sub-rede.
  • NETWORK_URL: o URL ou a rede VPC em que a sub-rede será criada.
  • SUBNET_NAME: um nome para a sub-rede.
  • SECONDARY_RANGE_NAME_1 e SECONDARY_RANGE_NAME_2: os nomes a serem usados para os intervalos secundários.
  • SECONDARY_IP_RANGE_1 e SECONDARY_IP_RANGE_2: os intervalos de endereços IP a serem usados para os intervalos secundários.

Para mais informações, consulte o método subnetworks.insert.

Terraform

Use o recurso Terraform para criar uma sub-rede com um ou mais intervalos secundários.

Os argumentos do Terraform têm exemplos de valores que podem ser alterados.

resource "google_compute_subnetwork" "network-with-private-secondary-ip-ranges" {
  project       = var.project_id # Replace this with your project ID in quotes
  name          = "test-subnetwork"
  ip_cidr_range = "10.2.0.0/16"
  region        = "us-central1"
  network       = "test-vpc-network"
  secondary_ip_range {
    range_name    = "tf-test-secondary-range-update1"
    ip_cidr_range = "192.168.10.0/24"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicionar intervalos CIDR secundários a uma sub-rede atual

Para este procedimento, presumimos que você tenha uma sub-rede que quer usar, mas primeiro precisa adicionar um ou mais intervalos secundários a ela.

Recomendamos usar um intervalo secundário para a alocação de IP do alias para criar regras de firewall que permitam o acesso aos serviços em execução em uma VM, mas não ao endereço IP principal da VM.

Console

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique no nome de uma sub-rede para modificar a visualização da página de detalhes dela.

  3. Clique em Editar.

  4. Na seção Intervalos de IP secundários, clique em Adicionar intervalo de IP.

  5. Digite um nome para Nome do intervalo de sub-rede.

  6. Digite um intervalo para Intervalo de IP secundário na notação CIDR, por exemplo, 10.9.0.0/24.

  7. Para adicionar intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP e forneça um nome e um intervalo.

  8. Clique em Salvar.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

Substitua:

  • SUBNET_NAME: o nome da sub-rede em que você quer adicionar os intervalos secundários.
  • REGION: a região em que você está criando a sub-rede.
  • RANGE_NAME_1=RANGE_CIDR_1 e RANGE_NAME_2=RANGE_CIDR_2: os nomes dos intervalos secundários de onde os intervalos de IP do alias serão extraídos e o próprio intervalo de IP do alias, por exemplo, range1=10.9.0.0/24.

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Adicione um intervalo secundário a uma sub-rede existente.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...],
  "fingerprint": "SUBNET_FINGERPRINT"
}

Substitua:

  • PROJECT_ID: o ID do projeto que contém a sub-rede a ser modificada.
  • REGION: a região em que a sub-rede está localizada.
  • SUBNET_NAME: o nome da sub-rede a ser modificada.
  • SECONDARY_RANGE_NAME_1 e SECONDARY_RANGE_NAME_2: os nomes a serem usados para os intervalos secundários.
  • SECONDARY_IP_RANGE_1 e SECONDARY_IP_RANGE_2: os intervalos de endereços IP a serem usados para os intervalos secundários.
  • SUBNET_FINGERPRINT: o ID de impressão digital da sub-rede atual, que é fornecido quando você descreve uma sub-rede.

Para mais informações, consulte o método subnetworks.patch.

Remover um intervalo CIDR secundário de uma sub-rede

É possível remover intervalos secundários existentes de uma sub-rede. Para ver os intervalos associados a uma sub-rede, consulte Descrever uma sub-rede.

Console

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique no nome de uma sub-rede para modificar a visualização da página de detalhes dela.

  3. Clique em Editar.

  4. Na seção Intervalos de IP secundários, clique em X ao lado do intervalo secundário a ser removido.

  5. Clique em Salvar.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

Substitua:

  • SUBNET_NAME: o nome da sub-rede de onde você quer remover os intervalos secundários.
  • REGION: a região em que você está criando a sub-rede.
  • RANGE_NAME_1 e RANGE_NAME_2: os nomes dos intervalos secundários que serão removidos da sub-rede de destino SUBNET_NAME (por exemplo, range1=10.9.0.0/24).

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Exclua os intervalos secundários para removê-los. O exemplo a seguir remove todos os intervalos secundários de uma sub-rede existente:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "fingerprint": "SUBNET_FINGERPRINT",
  "secondaryIpRanges": [
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto que contém a sub-rede a ser modificada.
  • REGION: a região em que a sub-rede está localizada.
  • SUBNET_NAME: o nome da sub-rede a ser modificada.
  • SUBNET_FINGERPRINT: o ID de impressão digital da sub-rede atual, que é fornecido quando você descreve uma sub-rede.

Para mais informações, consulte o método subnetworks.patch.

Trabalhar com instâncias de VM

Estes comandos mostram como criar instâncias com intervalos de IP de alias e adicionar/remover um ou mais intervalos de IP do alias de uma instância de VM existente.

Criar uma VM com um intervalo de IP do alias no intervalo CIDR primário

Use este procedimento se quiser atribuir um intervalo de IP do alias por meio do intervalo primário da sub-rede. O intervalo escolhido não pode estar em uso, mesmo parcialmente, em outro recurso da rede VPC.

Use este procedimento se quiser que a interface primária da instância e os endereços IP do alias fiquem no mesmo intervalo.

Console

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

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Insira um nome para a nova instância.

  4. Especifique uma zona.

  5. Clique em Rede.

  6. Na seção Interfaces de rede, abra a interface de rede padrão.

  7. Em Intervalos de IP do alias, clique em Adicionar intervalo de IP.

  8. Deixe o Intervalo da sub-rede 1 definido como Primário.

  9. Em Intervalo de IP do alias, insira um intervalo de IP na notação CIDR. Esse intervalo precisa ser um subintervalo não utilizado do intervalo principal.

  10. Clique em Criar.

gcloud

gcloud compute instances create vm1 \
    --zone ZONE \
    --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."

Substitua:

  • ZONE: a zona que contém a instância.
  • SUBNET_NAME: o nome da sub-rede que conterá a instância.
  • RANGE_CIDR_1 e RANGE_CIDR_2: os intervalos de IP da sub-rede principal a ser atribuída à interface. Os intervalos podem ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se o intervalo de IP for especificado apenas pela máscara de rede, o alocador de IP vai escolher um intervalo disponível com a máscara de rede especificada e o alocar à interface de rede. Para especificar mais de um intervalo, separe-os com ponto e vírgula (;).

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Crie uma instância com um endereço IP do alias a partir do intervalo de endereços IP principal da sub-rede da instância.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "CIDR_RANGE"
        }
      ]
    },
    ...
  ],
  ...
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você cria a instância.
  • ZONE: a zona Google Cloud em que a instância será criada.
  • CIDR_RANGE: o intervalo de IP da sub-rede principal a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se você especificar o intervalo de IP apenas pela máscara de rede, o alocador de endereços IP vai escolher um intervalo disponível com a máscara de rede especificada e o atribuir à interface de rede.

Para mais informações, consulte o método instances.insert.

Criar uma VM com um intervalo de IP do alias em um intervalo CIDR secundário

Use este procedimento se quiser atribuir um intervalo de IP do alias coletado em um intervalo secundário da sub-rede. Recomendamos manter os intervalos de IP do alias separados do intervalo principal da sub-rede para criar regras de firewall que permitam o acesso aos serviços em execução em uma VM, mas não ao endereço IP principal da VM.

Console

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

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Insira um nome para a nova instância.

  4. Especifique uma zona.

  5. Clique em Rede.

  6. Na seção Interfaces de rede, abra a interface de rede padrão.

  7. Em Intervalos de IP do alias, clique em Adicionar intervalo de IP.

  8. Em Intervalo da sub-rede, selecione o intervalo de IP secundário a ser usado.

  9. Em Intervalo de IP do alias, insira um intervalo de IP na notação CIDR. Esse intervalo precisa ser um intervalo não utilizado do intervalo de IP secundário.

  10. Clique em Criar.

gcloud

gcloud compute instances create vm3 \
    --zone ZONE \
    --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
 

Substitua:

  • ZONE: a zona que contém a instância.
  • SUBNET_NAME: o nome da sub-rede que conterá a instância.
  • RANGE_NAME: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado.
  • RANGE_CIDR: o intervalo de IP a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se o intervalo de IP for especificado somente pela máscara de rede, o alocador de IP escolherá um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.

Para conferir a sintaxe completa , consulte a documentação do gcloud.

API

Crie uma instância com um endereço IP de alias a partir do intervalo de endereços IP secundário da sub-rede da instância.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "SECONDARY_CIDR_RANGE",
          "subnetworkRangeName": "SECONDARY_RANGE_NAME"
        }
      ]
    },
    ...
  ],
  ...
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você cria a instância.
  • ZONE: a zona Google Cloud em que você cria a instância.
  • SECONDARY_CIDR_RANGE: the IP range to assign to the interface. The range can be a specific range (192.168.100.0/24), a single IP address (192.168.100.1), or a netmask in CIDR format (/24``. Se você especificar o intervalo de IP apenas pela máscara de rede, o alocador de endereços IP vai escolher um intervalo disponível com a máscara de rede especificada e o atribuirá à interface de rede.
  • SECONDARY_RANGE_NAME: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado.

Para mais informações, consulte o método instances.insert.

Crie uma VM com várias interfaces e endereços IP do alias

Este exemplo cria duas redes, cada uma com uma sub-rede e uma VM com interfaces nas duas redes. Se você já tiver duas redes VPC, pule para a etapa "Criar uma VM com interfaces nas duas redes".

Console

Crie a primeira rede e sub-rede:

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira my-network1.

  4. Defina o Modo de criação da sub-rede como Custom e especifique um nome de sub-rede de my-subnet1.

  5. Especifique uma região.

  6. Defina o Intervalo de endereços IP como 172.16.1.0/24.

  7. Clique em Criar um intervalo de IP secundário.

  8. Defina o Nome do intervalo de sub-rede como range1.

  9. Defina Intervalo de IP secundário como 10.1.0.0/16.

  10. Clique em Concluído.

  11. Clique em Criar.

Crie a segunda rede e sub-rede:

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira my-network2.

  4. Defina o Modo de criação da sub-rede como Custom e especifique um nome de sub-rede de my-subnet2.

  5. Em Região, especifique a mesma região usada para a primeira rede e sub-rede.

  6. Defina o Intervalo de endereços IP como 172.16.2.0/24.

  7. Clique em Criar um intervalo de IP secundário.

  8. Defina o Nome do intervalo de sub-rede como range2.

  9. Defina Intervalo de IP secundário como 10.2.0.0/16.

  10. Clique em Concluído.

  11. Clique em Criar.

Crie uma VM com interfaces nas duas redes:

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

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Defina a zona como a região em que você criou as sub-redes.

  4. Clique em Rede.

  5. Clique na primeira interface de rede.

    1. Defina Rede como my-network1.
    2. Defina Sub-rede como my-subnet1.
    3. Clique em Intervalos de IP do alias.
    4. Clique em Adicionar intervalo de IP.
    5. Defina o Intervalo de sub-rede como Primary.
    6. Defina o Intervalo de IP do alias como /32.
    7. Clique em Adicionar intervalo de IP.
    8. Defina o Intervalo de sub-rede como range1.
    9. Defina o Intervalo de IP do alias como /24.
    10. Clique em Concluído.
  6. Clique em Adicionar interface de rede.

    1. Selecione my-network2.
    2. Defina Sub-rede como my-subnet2.
    3. Clique em Intervalos de IP do alias.
    4. Clique em Adicionar intervalo de IP.
    5. Defina o Intervalo de sub-rede como Primary.
    6. Defina o Intervalo de IP do alias como /32.
    7. Clique em Adicionar intervalo de IP.
    8. Defina o Intervalo de sub-rede como range2.
    9. Defina o Intervalo de IP do alias como /24.
    10. Clique em Concluído.
  7. Clique em Criar.

gcloud

  1. Crie a primeira rede:

    gcloud compute networks create my-network1 --subnet-mode CUSTOM
    
  2. Adicione uma sub-rede:

    gcloud compute networks subnets create my-subnet1 \
        --network my-network1 \
        --range 172.16.1.0/24 \
        --secondary-range range1=10.1.0.0/16
    
  3. Crie uma segunda rede:

    gcloud compute networks create my-network2 --subnet-mode CUSTOM
    
  4. Adicione uma sub-rede:

    gcloud compute networks subnets create my-subnet2 \
        --network my-network2 \
        --range 172.16.2.0/24 \
        --secondary-range range2=10.2.0.0/16
    
  5. Crie uma VM com interfaces nas duas redes. A primeira interface de rede listada, a primeira em my-subnet1, é a principal:

    gcloud compute instances create multi-nic-alias-vm \
        --machine-type f1-micro \
        --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \
        --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
    
  6. Use o comando exibir para ver as interfaces e os respectivos endereços:

    gcloud compute instances describe multi-nic-alias-vm
    
    ...
    networkInterfaces:
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.1.2/32
      - ipCidrRange: 10.1.0.0/24
        subnetworkRangeName: range1
      name: nic0
      network: .../networks/my-network1
      networkIP: 172.16.1.3
      subnetwork: .../subnetworks/my-subnet1
      ...
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.2.2/32
      - ipCidrRange: 10.2.0.0/24
        subnetworkRangeName: range2
      name: nic1
      network: .../networks/my-network2
      networkIP: 172.16.2.3
      subnetwork: .../subnetworks/my-subnet2
      

API

  1. Crie duas redes VPC de modo personalizado chamadas my-network1 e my-network2. Para mais informações, consulte Criar uma rede VPC de modo personalizado apenas com sub-redes IPv4.

  2. Adicione sub-redes às redes VPC. Para mais informações, consulte Adicionar uma sub-rede somente IPv4.

    1. Adicione uma sub-rede denominada my-subnet1 a my-network1. Especifique 172.16.1.0/24 para o intervalo primário e 10.1.0.0/16 para o intervalo secundário com o nome range1.

    2. Adicione uma sub-rede denominada my-subnet2 a my-network2. Especifique 172.16.2.0/24 para o intervalo primário e 10.2.0.0/16 para o intervalo secundário com o nome range2.

  3. Crie uma instância de VM com interfaces nas duas redes.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
      "networkInterfaces": [
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range1",
              "ipCidrRange": "/24"
            }
          ]
        },
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range2",
              "ipCidrRange": "/24"
            }
          ]
        }
      ],
      ...
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que você cria a instância.
    • ZONE: a zona Google Cloud em que a instância será criada.
    • REGION: a Google Cloud região em que a sub-rede está localizada. As sub-redes precisam estar na mesma região que a instância.

    Para mais informações, consulte o método instances.insert.

Adicionar intervalos de IP de alias a uma instância existente

Você pode adicionar um intervalo de IP do alias a uma instância em execução.

Os novos endereços podem não estar disponíveis imediatamente, mesmo após a conclusão da chamada de API. Os novos endereços só ficam disponíveis depois que o SO convidado adiciona os endereços e rotas.

Console

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

    Acessar instâncias de VM

  2. Clique no nome de uma instância.

  3. Clique em Editar.

  4. Em Interfaces de rede, clique na interface de rede em que você quer adicionar um intervalo de IP do alias (nic0 neste exemplo).

  5. Clique em Intervalos de IP do alias.

  6. Clique em Adicionar intervalo de IP.

  7. Selecione um Intervalo de sub-rede.

  8. Digite um intervalo de IP de alias.

  9. Clique em Concluído.

  10. Clique em Salvar.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"] \
    --aliases "RANGE_NAME_1:RANGE_CIDR_1; \
    RANGE_NAME_2:RANGE_CIDR_2;..."

Substitua:

  • INSTANCE_NAME: o nome da instância a ser modificada.
  • ZONE: é a zona que contém a instância.
  • NETWORK_INTERFACE: o nome da interface de rede para adicionar um intervalo de endereços IP de alias.
  • RANGE_NAME_1 e RANGE_NAME_2: os nomes dos intervalos secundários da sub-rede de onde o intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos por meio do intervalo principal da sub-rede, oculte esse valor.
  • RANGE_CIDR_1 e RANGE_CIDR_2: os intervalos de IP a serem atribuídos à interface. Os intervalos podem ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se o intervalo de IP for especificado apenas pela máscara de rede, o alocador de IP escolherá um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Adicione intervalos de IP do alias a uma instância existente.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    {
      "ipCidrRange": "SECONDARY_IP_RANGE",
      "subnetworkRangeName": "SECONDARY_RANGE_NAME"
    },
    existing ranges...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

Substitua:

  • PROJECT_ID: o ID do projeto que contém a instância a ser modificada.
  • ZONE: a Google Cloud zona em que a instância será criada.
  • INSTANCE_NAME: o nome da instância a ser modificada.
  • NETWORK_INTERFACE_NAME: o nome da interface de rede da instância a ser modificada.
  • SECONDARY_IP_RANGE: o intervalo de IP a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se você especificar o intervalo de IP apenas por máscara de rede, o alocador de endereços IP escolherá um intervalo disponível com a máscara de rede especificada e o atribuirá à interface de rede.
  • SECONDARY_RANGE_NAME: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos do intervalo principal da sub-rede, omita esse campo.
  • INTERFACE_FINGERPRINT: o ID de impressão digital da interface de rede atual, que é fornecido quando você descreve uma instância.

Para mais informações, consulte o método instances.updateNetworkInterface.

Modificar intervalos de IP de alias para uma instância existente

É possível adicionar mais intervalos de IP de alias a uma instância atual ou remover um ou mais deles.

As alterações de endereço podem não ser exibidas imediatamente. A chamada de API precisa terminar, e o SO convidado precisa modificar os endereços e as rotas.

Console

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

    Acessar instâncias de VM

  2. Clique no nome de uma instância.

  3. Clique em Editar.

  4. Em Interfaces de rede, clique na interface de rede em que você quer adicionar um intervalo de IP do alias (nic0 neste exemplo).

  5. Clique em Intervalos de IP do alias.

  6. Para adicionar um intervalo de IP do alias, clique em Adicionar intervalo de IP do alias.

  7. Para remover um intervalo de IP do alias, clique no X ao lado do intervalo de IP do alias.

  8. Clique em Concluído.

  9. Clique em Salvar.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"] \
    --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."

Substitua:

  • INSTANCE_NAME: o nome da instância a ser modificada.
  • ZONE: é a zona que contém a instância.
  • NETWORK_INTERFACE: o nome da interface de rede a ser modificado.
  • RANGES_TO_RETAIN: os intervalos atuais no formato CURRENT_RANGE_NAME: CURRENT_RANGE_CIDR que você quer manter. Se você estiver adicionando intervalos a uma instância em que não há nenhum, esses valores ficarão em branco. Se você estiver removendo todos os intervalos da instância, todo o campo --aliases ficará em branco.
  • NEW_RANGE_NAME: o nome do intervalo secundário da sub-rede de onde qualquer novo intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos por meio do intervalo principal da sub-rede, oculte esse valor.
  • NEW_RANGE_CIDR: o intervalo de endereços IP a ser atribuído à interface. Esse intervalo pode ser um intervalo específico (192.168.100.0/24), um único endereço IP (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se o intervalo de endereços IP for especificado somente pela máscara de rede, o alocador de IP vai escolher um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.

Para adicionar intervalos, execute o comando e especifique todos os intervalos de IP do alias atuais e novos. Os pares são separados por ponto e vírgula, por exemplo: --aliases "CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR".

Para remover intervalos, execute o comando e especifique apenas os intervalos de IP do alias que você quer manter. Se você for manter os intervalos coletados de um intervalo secundário, será preciso especificar o nome dele. Um intervalo CIDR pode ser um intervalo específico (192.168.100.0/24) ou um único endereço IP (192.168.100.1), por exemplo: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR".

Para remover todos os intervalos, execute o comando e especifique a flag --aliases, mas use aspas para fornecer uma entrada em branco. Por exemplo: --aliases "".

Não é possível adicionar e remover intervalos no mesmo comando gcloud. Para remover alguns intervalos e adicionar outros com a CLI gcloud, execute primeiro o comando para remover os intervalos desnecessários e, em seguida, execute-o novamente para adicionar os intervalos necessários.

Para ver a sintaxe completa, consulte a documentação do gcloud.

API

Para interfaces de rede de instâncias existentes, adicione ou remova intervalos de endereços IP do alias.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    include new and existing ranges to add them...
    exclude existing ranges to remove them...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

Substitua:

  • PROJECT_ID: o ID do projeto que contém a instância a ser modificada.
  • ZONE: é a zona que contém a instância.
  • INSTANCE_NAME: o nome da instância a ser modificada.
  • NETWORK_INTERFACE_NAME: o nome da interface de rede da instância a ser modificada.
  • INTERFACE_FINGERPRINT: o ID de impressão digital da interface de rede atual, que é fornecido quando você descreve uma instância.

Para mais informações, consulte o método instances.updateNetworkInterface.

Solução de problemas

Esta seção lista vários problemas que podem ser encontrados ao configurar intervalos de IP de alias.

Não é possível criar uma instância de VM com IP do alias

  1. Verifique se a rede é uma rede VPC. Os IPs de alias não são compatíveis com redes legadas.

    gcloud compute networks list --filter="name=NETWORK_NAME"
    

    O MODE da rede precisa ser auto ou custom.

  2. Se o nome de um intervalo de sub-rede for especificado, verifique os seguintes itens:

    gcloud compute networks subnets describe SUBNET_NAME --region=REGION
    
    • A sub-rede tem um intervalo secundário com o nome correspondente.
    • O intervalo de IP do alias solicitado está dentro desse intervalo secundário ou, se estiver usando uma máscara de rede, é menor que o intervalo principal.
  3. Se o nome do intervalo da sub-rede não estiver especificado, verifique se o intervalo de IP do alias solicitado está dentro do intervalo da sub-rede principal ou, se estiver usando uma máscara de rede, se é menor que o intervalo principal.

Não é possível conectar ao IP do alias

  1. Verifique as regras de firewall.

    1. Liste todas as regras de firewall:

      gcloud compute firewall-rules list --format=json
      
    2. Verifique se o tráfego de entrada e saída de um intervalo de IP de alias é permitido.

    3. Se necessário, adicione regras de firewall para permitir o ping em um intervalo de IP de alias:

      gcloud compute firewall-rules create FIREWALL_NAME1 \
          --network NETWORK_NAME \
          --priority 0 \
          --source-ranges ALIAS_IP \
          --allow icmp
      
      gcloud compute firewall-rules create FIREWALL_NAME2 \
          --network NETWORK_NAME \
          --priority 0 \
          --direction out \
          --destination-ranges ALIAS_IP \
          --allow icmp
      
  2. A VM precisa reconhecer os intervalos de IP do alias como locais. Em distribuições do Linux, como o Debian, normalmente isso pode ser feito da seguinte maneira:

    1. Conecte-se à instância e execute este comando:

      ip route show table local
      

      O resultado será assim:

      local ALIAS_IP_RANGE dev eth0  proto 66  scope host
      
    2. Em /etc/default/instance_configs.cfg, verifique se a configuração ip_aliases está definida como true. Se você precisar mudar isso, também precisará reiniciar o agente convidado:

      systemctl restart google-guest-agent
      
    3. Se a rota local não estiver presente, configure-a usando este comando:

      ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
      

O serviço de inicialização automática não está vinculado ao endereço IP do alias

Em distribuições compatíveis do Linux, os endereços IP do alias são definidos automaticamente como endereços locais pelo agente convidado pré-instalado. Isso significa que nenhuma configuração no nível do SO é necessária.

No entanto, isso também significa que o SO não reconhece os endereços IP do alias como endereços locais antes da execução do agente convidado. Se você tiver serviços de inicialização automática na VM e eles forem iniciados antes do agente convidado, eles não poderão se vincular aos endereços IP do alias.

Por exemplo, um servidor HTTP Apache pode sair com o seguinte erro:

could not bind to address ALIAS_IP:80

Para resolver esse problema, configure o serviço para iniciar após o agente convidado. Em distribuições que usam systemctl, siga as etapas a seguir.

  1. Como usuário privilegiado, execute o comando a seguir para adicionar um snippet de drop-in ao serviço que não está funcionando corretamente. Por exemplo, um servidor HTTP Apache no Debian seria apache2:

    systemctl edit YOUR_SERVICE
    
  2. No editor de texto, adicione as linhas a seguir. Adicione as linhas acima da linha que dizem Lines below this comment will be discarded.

    [Unit]
    After=google-guest-agent.service
    

Meu intervalo de IP secundário não está listado

Os intervalos de IP secundários não são listados como sub-redes normais. Para verificar se o intervalo de IP secundário da sub-rede foi criado, use o comando gcloud compute networks subnets describe.

  1. Crie uma sub-rede.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    

    O resultado será assim:

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. Liste as sub-redes.

    gcloud compute networks subnets list
    

    O resultado será assim:

    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  3. Colete detalhes em uma sub-rede para ver os intervalos secundários.

    gcloud compute networks subnets describe my-subnet --region us-central1
    

    O resultado será assim:

    ...
    ipCidrRange: 10.9.0.0/16
    ...
    secondaryIpRanges:
    - ipCidrRange: 172.16.0.0/12
      rangeName: secondaryrange1
    ...
    

O intervalo secundário da sub-rede especificado não existe

Ao criar uma VM, se você receber um erro dizendo que o intervalo secundário não existe, verifique:

  • A sub-rede tem um intervalo secundário com o nome especificado.
  • Você está criando sua VM dentro da sub-rede que contém o intervalo secundário.

É possível executar os comandos a seguir para ver esse erro:

  1. Crie uma sub-rede com um intervalo secundário.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    

    O resultado será assim:

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. Crie uma instância em outra rede, como na rede padrão, em vez de fazer isso na sub-rede recém-criada.

    gcloud compute instances create instance-1 \
        --zone us-central1-a \
        --network default
    

    O resultado será assim:

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-1  us-central1-a  n1-standard-1               10.128.0.2     47.82.96.9  RUNNING
    
  3. Tente atribuir um intervalo de IP do alias por meio da sub-rede criada na etapa 1. O comando falha porque o intervalo secundário está em uma sub-rede diferente da instância.

    gcloud compute instances network-interfaces update instance-1 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    

    O resultado será assim:

    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
    
  4. Crie outra instância. Desta vez, com a interface na sub-rede criada na etapa 1.

    gcloud compute instances create instance-2 \
        --zone us-central1-a \
        --network-interface subnet=my-subnet
    

    O resultado será assim:

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-2  us-central1-a  n1-standard-1               10.9.0.2     38.74.204.89  RUNNING
    
  5. Adicione um intervalo de IP do alias à interface. Desta vez, o comando será concluído com êxito porque a interface e o intervalo secundário estão na mesma sub-rede.

    gcloud compute instances network-interfaces update instance-2 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    

    O resultado será assim:

    Updating network interface [nic0] of instance [instance-2]...done.
    

Não é possível adicionar e remover intervalos de IP secundários na mesma solicitação

Não é possível adicionar e remover intervalos de IP secundários de sub-redes no mesmo comando. Os comandos da CLI gcloud para adicionar e remover intervalos secundários preservam os intervalos existentes que não são modificados.

Para adicionar e remover intervalos, execute os dois comandos separadamente.

gcloud compute networks subnets update SUBNET_NAME \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update  SUBNET_NAME \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

Para mais informações sobre esse comando, use gcloud compute networks subnets update --help.

Não é possível adicionar e remover intervalos de IP do alias simultaneamente

Não é possível adicionar e remover intervalos de IP do alias da VM na mesma solicitação. Antes de adicionar o novo intervalo, remova explicitamente o intervalo existente.

O comando da CLI do gcloud para atualizar intervalos de IP do alias não preserva os intervalos existentes. Portanto, a omissão de um intervalo é tratada como uma solicitação para excluir esse intervalo.

Por exemplo, se a VM atual tiver um intervalo de alias 10.9.27.0/24 e o novo intervalo solicitado for /24, o comando para solicitar /24 será rejeitado porque será interpretado como a remoção de 10.9.27.0/24 e a adição de /24.

Exemplo:

  1. Crie um intervalo de IP de alias.

    gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
    
  2. Tente adicionar /24 sem especificar o intervalo existente. Isso resultará em um erro.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.
    aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
    
  3. Atualize a VM para que não haja um intervalo de IP do alias.

    gcloud compute instances network-interfaces update vm --aliases ""
    Updating network interface [nic0] of instance [vm]...done.
    
  4. Adicione o novo intervalo de IP de alias.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    Updating network interface [nic0] of instance [vm]...done.
    

Para mais informações sobre esse comando, use gcloud compute instances network-interfaces update --help.

Tags de origem da regra de firewall e conta de serviço de origem

A conta de serviço e as tags de origem do firewall só se expandem para os IPs da rede primária das instâncias correspondentes e não se aplicam a IPs do alias das instâncias correspondentes. Portanto, uma regra de firewall baseada em tags de origem não afeta o tráfego de um endereço IP do alias da instância. Os endereços IP do alias podem ser adicionados às regras de firewall como intervalos de origem ou de destino.

Problemas relacionados a VMs com várias interfaces e intervalos de IP de alias

Consulte Resolver problemas de VMs com várias interfaces de rede.

Ativar o alias de IP em imagens do Google Cloud desativa a ponte cbr0 em clusters autogerenciados do Kubernetes

Em imagens fornecidas pelo Google, o agente convidado do Google cria rotas locais para intervalos de endereços IP de alias. Para clusters autogerenciados do Kubernetes, configure o agente convidado do Google para que ele não crie rotas locais para intervalos de IP de alias. Essa etapa não é necessária para clusters do GKE porque o GKE desativa a criação de rotas locais para intervalos de IP de alias nas imagens de nó.

Sintomas:

  • Os pods do Kubernetes perderão o acesso à rede se a rota local criada pelo agente convidado remover o intervalo de IP do alias da interface cbr0.

  • Uma captura de pacote no dispositivo ponte do Linux (tcpdump -ni cbr arp) mostra a falta de respostas ARP da interface cbr0, mesmo que essa interface esteja ativa.

  • Inspecionar a tabela de rota local (ip route show table local) revela que o intervalo de endereços IP do alias está atribuído à interface de rede principal (por exemplo, eth0 ou ens4) em vez da ponte do contêiner. interface (cbr0).

Correção:

  1. Execute o comando apropriado listado em Pacotes instalados para o ambiente de convidado para determinar se a VM do nó está executando o agente de convidado do Google ou um pacote anterior do Compute Engine.

  2. Se a VM do nó não estiver executando o agente convidado do Google, instale o agente convidado ou use uma imagem mais recente fornecida pelo Google.

  3. Configure o agente convidado do Google para pular a criação de rotas locais para intervalos de IP de alias e regras de encaminhamento.

    1. Edite /etc/default/instance_configs.cfg, definindo ip_forwarding=false na seção [NetworkInterfaces]. É possível criar a seção [NetworkInterfaces], se ela ainda não estiver presente no arquivo instance_configs.cfg.

    2. Realize uma das seguintes tarefas:

      • Reinicie a VM do nó.

      • Reinicie o serviço google-guest-agent.service e edite a tabela de rota local.

        Para reiniciar o serviço google-guest-agent.service, execute sudo systemctl restart google-guest-agent.service. Em seguida, edite a tabela de rotas local para remover todas as entradas dos intervalos de endereços IP do alias. Por exemplo:

        sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
        

        Substitua:

        • ALIAS_IP_RANGE: o intervalo de endereços IP do alias.
        • DEVICE_IDENTIFIER: o identificador da interface de rede. Por exemplo, ens4 ou eth0.

    Para mais informações, consulte Configuração na documentação do agente convidado do Google.

A seguir