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 do alias são compatíveis com todas as interfaces de rede da VM. O roteamento é configurado automaticamente para intervalos de IP do alias na interface de rede principal, mas não em interfaces secundárias. Se você tiver várias interfaces de rede, será necessário configurar o roteamento de políticas para as outras interfaces.
  • 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 de IP de alias.
  • O DNS interno resolve um nome de VM para o seu IP principal. 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 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 (hop) precisa ser o endereço IP principal da VM. Os endereços IP do alias não são aceitos como endereços IP do próximo salto (hop).
  • Os endereços IPv6 não são aceitos.
  • 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 contendo 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 ao 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 VPC e de qualquer rede anexada por meio de VPN, interconexão ou peering de rede VPC.

Esta seção mostra como criar sub-redes com intervalos secundários e adicioná-los ou removê-los de uma sub-rede existente. Quando sua sub-rede tiver o intervalo que você quer usar, consulte os comandos da instância da 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 tem, 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. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Clique no nome de uma rede existente.
  3. Clique em Adicionar sub-rede.
  4. Digite um Nome para a nova sub-rede.
  5. Especifique a Região.
  6. Digite um Intervalo de endereços IP na notação CIDR. Exemplo: 10.65.61.0/24.
  7. Clique em Criar um intervalo de IP secundário.
  8. Digite um Nome do intervalo de sub-rede.
  9. Digite um Intervalo de IP secundário na notação CIDR. Exemplo: 10.9.0.0/24.
  10. Para acrescentar mais intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP, e então 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 onde 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 da CLI 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:

  • NETWORK_URL: o URL ou a rede VPC em que a sub-rede será criada.
  • PRIMARY_IP_RANGE: o intervalo primário de endereços IP da sub-rede.
  • 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.
  • SECONDARY_IP_RANGE_1 e SECONDARY_IP_RANGE_2: os intervalos de endereços IP a serem usados para os intervalos secundários.
  • SECONDARY_RANGE_NAME_1 e SECONDARY_RANGE_NAME_2: os nomes a serem usados para os intervalos secundários.
  • SUBNET_NAME: um nome para a sub-rede.

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.

O uso de um intervalo secundário para a alocação de IP do alias facilita a criação de regras de firewall que permitem acesso aos serviços em execução em uma VM, mas não ao endereço IP primário da VM.

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "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. Exemplo: 10.9.0.0/24.
  7. Para acrescentar mais intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP, e então 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 onde 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 da CLI 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": "SUBNETWORK_FINGERPRINT"
}

Substitua os marcadores por valores válidos:

  • 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.
  • SECONDARY_IP_RANGE_1 e SECONDARY_IP_RANGE_2 são os intervalos de endereços IP a serem usados para os intervalos secundários.
  • SECONDARY_RANGE_NAME_1 e SECONDARY_RANGE_NAME_2 são os nomes 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.
  • SUBNET_NAME é o nome da sub-rede a ser modificada.

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. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "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,...

em que

  • SUBNET_NAME é o nome da sub-rede de onde você quer remover os intervalos secundários;
  • REGION é a região onde você está criando a sub-rede;
  • RANGE_NAME_1 e RANGE_NAME_2 são 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 da CLI 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 os marcadores por valores válidos:

  • 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_FINGERPRINT é o ID de impressão digital da sub-rede atual, que é fornecido quando você descreve uma sub-rede.
  • SUBNET_NAME é o nome da sub-rede a ser modificada.

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. Acesse a página Instâncias de VM no Console do Google Cloud.
    Acessar a página "Instâncias de VM"
  2. Clique em Criar instância.
  3. Digite um Nome para a nova instância.
  4. Especifique uma Zona.
  5. Clique em Gerenciamento, segurança, discos, rede, locatário único.
  6. Clique na guia Rede.
  7. Clique no botão de edição (ícone de lápis) ao lado da interface principal na seção Interfaces de rede.
  8. Clique em Mostrar intervalos de IP do alias.
  9. Deixe o Intervalo da sub-rede definido como Primário.
  10. Digite um Intervalo de IP do alias na notação CIDR. Esse intervalo precisa ser um subintervalo não utilizado do intervalo primário.
  11. Clique em Criar.

gcloud

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

em que

  • ZONE é a zona que contém a instância.
  • SUBNET_NAME é o nome da sub-rede que contém a instância.
  • RANGE_CIDR_1 e RANGE_CIDR_2 são 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 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 especificar mais de um intervalo, separe-os com ponto e vírgula (;).

Para ver a sintaxe completa, consulte a documentação da CLI 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 os marcadores por valores válidos:

  • PROJECT_ID é o ID do projeto em que você cria a instância.
  • CIDR_RANGE é o intervalo do 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 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.
  • ZONE é a zona do Google Cloud em que a instância será criada.

Para mais informações, consulte o método instance.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. Manter os intervalos de IP do alias separados do intervalo primário da sub-rede facilita a criação de regras de firewall que permitem o acesso aos serviços em execução em uma VM, mas não ao endereço IP primário da VM.

Console

  1. Acesse a página Instâncias de VM no Console do Google Cloud.
    Acessar a página "Instâncias de VM"
  2. Clique em Criar instância.
  3. Digite um Nome para a nova instância.
  4. Especifique uma Zona.
  5. Clique em Gerenciamento, segurança, discos, rede, locatário único.
  6. Clique na guia Rede.
  7. Clique no botão de edição (ícone de lápis) ao lado da interface principal na seção Interfaces de rede.
  8. Clique em Mostrar intervalos de IP do alias.
  9. Selecione a Sub-rede que tem o intervalo secundário.
  10. Em Intervalo da sub-rede, selecione o Intervalo de IP secundário que quer usar.
  11. Digite um Intervalo de IP do alias na notação CIDR. Esse intervalo precisa ser um intervalo não utilizado do intervalo de IP secundário.
  12. Clique em Criar.

gcloud

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

em que

  • ZONE é a zona que contém a instância.
  • SUBNET_NAME é o nome da sub-rede que contém 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 ver 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 os marcadores por valores válidos:

  • PROJECT_ID é o ID do projeto em que você cria a instância.
  • SECONDARY_CIDR_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.
  • ZONE é a zona do Google Cloud em que a instância será criada.

Para mais informações, consulte o método instance.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 já tiver duas redes VPC, pule para a etapa "Criar instância da VM".

Console

Crie a primeira rede e sub-rede:

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Clique em Criar rede VPC.
  3. Informe um Nome de my-network1.
  4. Com o Modo de criação da sub-rede definido como Custom, 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 o Intervalo de IP secundário como 10.1.0.0/16.
  10. Clique em Concluir.
  11. Clique em Criar.

Crie a segunda rede e sub-rede:

  1. Acesse a página "Redes VPC" no Console do Google Cloud.
    Acessar a página "Redes VPC"
  2. Clique em Criar rede VPC.
  3. Informe um Nome de my-network2.
  4. Com o Modo de criação da sub-rede definido como Custom, especifique um Nome de sub-rede de my-subnet2.
  5. Especifique a mesma Região que você usou 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 o Intervalo de IP secundário como 10.2.0.0/16.
  10. Clique em Concluir.
  11. Clique em Criar.

Crie uma VM com interfaces nas duas redes:

  1. Acesse a página "Instâncias de VMs" no Console do Google Cloud.
    Acessar a página "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 Gerenciamento, segurança, discos, rede, locatário único.
  5. Clique em Rede.
  6. Clique na primeira interface de rede.
  7. Defina Rede como my-network1.
  8. Defina Sub-rede como my-subnet1.
  9. Clique em Mostrar intervalos de IP do alias.
  10. Clique em Adicionar intervalo de IP do alias.
  11. Defina o Intervalo de sub-rede como Primary.
  12. Defina o Intervalo de IP do alias como /32.
  13. Clique em Adicionar intervalo de IP.
  14. Defina o Intervalo de sub-rede como range1.
  15. Defina o Intervalo de IP do alias como /24.
  16. Clique em Concluir.
  17. Clique em Adicionar interface de rede.
  18. Selecione my-network2.
  19. Defina Sub-rede como my-subnet2.
  20. Clique em Mostrar intervalos de IP do alias.
  21. Clique em Adicionar intervalo de IP do alias.
  22. Defina o Intervalo de sub-rede como Primary.
  23. Defina o Intervalo de IP do alias como /32.
  24. Clique em Adicionar intervalo de IP.
  25. Defina o Intervalo de sub-rede como range2.
  26. Digite um Intervalo de IP do alias de /24.
  27. Clique em Concluir.
  28. 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 interface 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 Como criar uma rede de modo personalizado.

  2. Adicione sub-redes às redes VPC. Para mais informações, consulte Como adicionar sub-redes.

    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 os marcadores por valores válidos:

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

    Para mais informações, consulte o método instance.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. Eles só estarão disponíveis depois que o SO convidado adicionar os endereços e rotas.

Console

  1. Acesse a página Instâncias de VM no Console do Google Cloud.
    Acessar a página "Instâncias de VM"
  2. Clique no nome de uma instância existente.
  3. Clique em Editar.
  4. Clique na interface de rede nic0 ou na interface de rede em que você adicionará um intervalo de IP do alias.
  5. Clique em Mostrar 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 Concluir.
  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:

  • ZONE é a zona que contém a instância de origem.
  • NETWORK_INTERFACE é o nome da interface de rede à qual você está adicionando um intervalo de endereços IP de alias.
  • RANGE_NAME_1 e RANGE_NAME_2 são 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 são 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 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 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/multinic/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    {
      "ipCidrRange": "SECONDARY_IP_RANGE",
      "subnetworkRangeName": "SECONDARY_RANGE_NAME"
    },
    existing ranges...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

Substitua os marcadores por valores válidos:

  • PROJECT_ID é o ID do projeto que contém a 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 existente, que é fornecido quando você descreve uma instância.
  • SECONDARY_CIDR_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 por meio do intervalo principal da sub-rede, oculte esse campo.
  • ZONE é a zona do Google Cloud em que a instância será criada.

Para mais informações, consulte o método instance.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. Acesse a página Instâncias de VM no Console do Google Cloud.
    Acessar a página "Instâncias de VM"
  2. Clique no nome de uma instância existente.
  3. Clique em Editar.
  4. Clique na interface de rede nic0 ou na interface de rede que você modificará.
  5. Clique em Mostrar 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 Concluir.
  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;..."
  • ZONE é a zona que contém a instância.
  • NETWORK_INTERFACE é o nome da interface de rede que você está modificando.
  • RANGES_TO_RETAIN os intervalos atuais no formato CURRENT_RANGE_NAME:CURRRENT_RANGE_CIDR que você quer reter. Se você estiver adicionando intervalos a uma instância em que não há nenhum, esses valores ficarão em branco. Se você remover 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 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 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. Exemplo: --aliases "CURRENT_RANGE_NAME:CURRRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"

Para remover intervalos, execute o comando e especifique apenas os intervalos de IP de 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). Exemplo: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR"

Para remover todos os intervalos, execute o comando e especifique a sinalização --aliases, mas use aspas para fornecer uma entrada em branco. Exemplo: --aliases "".

Não é possível adicionar e remover intervalos no mesmo comando gcloud. Para remover alguns intervalos e adicionar outros com a Google Cloud CLI, execute primeiro o comando para remover os intervalos desnecessários e 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/multinic/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    include new and existing ranges to add them...
    exclude existing ranges to remove them...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

Substitua os marcadores por valores válidos:

  • PROJECT_ID é o ID do projeto que contém a 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 existente, que é fornecido quando você descreve uma instância.

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

Solução de problemas

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 "automático" ou "personalizado".

  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 se 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 a entrada e a saída de tráfego no IP do alias são permitidas.

    3. Se necessário, adicione regras de firewall para permitir o ping no IP do 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
      

      A saída precisa conter o seguinte:

      local ALIAS_IP_RANGE dev eth0  proto 66  scope host
      
    2. Certifique-se de que ip_aliases = true em /etc/default/instance_configs.cfg. Se você tiver que alterar 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 simplifica a configuração porque 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 mostrar que o intervalo 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
    
    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
    
    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
    
    ...
    ipCidrRange: 10.9.0.0/16
    ...
    secondaryIpRanges:
    - ipCidrRange: 172.16.0.0/12
      rangeName: secondaryrange1
    ...
    

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

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

  • se a sub-rede tem um intervalo secundário com o nome especificado;
  • se 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
    
    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
    
    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. Ocorrerá uma falha no comando 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
    
    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
    
    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 estarão na mesma sub-rede.

    gcloud compute instances network-interfaces update instance-2 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    
    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

No momento, não há compatibilidade com a adição e remoção de intervalos de IP secundários de sub-redes no mesmo comando. Os comandos gcloud para adicionar e remover intervalos secundários preservarão os intervalos existentes que não tiverem sido 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 ver mais detalhes desse comando, use gcloud compute networks subnets update --help.

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

Atualmente, não há compatibilidade com a adição e remoção de intervalos de IP do alias da VM na mesma solicitação.

O comando 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 o intervalo de alias 10.9.27.0/24 e o novo intervalo solicitado for /24, a execução do comando para solicitar /24 será rejeitada, porque será interpretada como a remoção de 10.9.27.0/24 e a adição de /24. Antes de adicionar o novo intervalo, remova explicitamente o intervalo existente.

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 ver mais detalhes desse 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 de origem e as tags de origem do firewall só se expandem para os IPs da rede primária nas 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 afetará o tráfego proveniente 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 do alias

Consulte Solução de problemas de VMs com várias interfaces.

Ativar o alias de IP em imagens do Google Cloud desativa a ponte cbr0 nos 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 do Compute Engine mais antigo.

  2. Se a VM do nó não estiver executando o agente convidado do Google, instale-o 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 da rota local para remover todas as entradas dos intervalos de endereços IP do alias. 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 a seção "Configuração" na documentação do agente convidado do Google.

A seguir