Como configurar intervalos de IP de 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 ferramenta de linha de comando gcloud. Leia a página Visão geral de IP do alias antes de executar esses comandos.

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.

Como 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=RANGE_CIDR,RANGE_NAME=RANGE_CIDR,...

em que

  • 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=RANGE_CIDR é o nome do intervalo secundário de onde o intervalo de IP do alias será coletado. Por exemplo: range1=10.9.0.0/24.

Consulte a sintaxe completa na 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",
    "ipCidrRange": "SECONDARY_IP_RANGE"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "SECONDARY_IP_RANGE"
  },
  ...]
}

Substitua os marcadores por valores válidos:

  • 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 é um intervalo secundário de endereços IP da sub-rede.
  • SECONDARY_RANGE_NAME é um nome para o intervalo secundário de endereços IP.
  • SUBNET_NAME é um nome para a sub-rede.

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

Como adicionar intervalos CIDR secundários a uma sub-rede existente

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=RANGE_CIDR,RANGE_NAME=RANGE_CIDR,...

em que

  • 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=RANGE_CIDR é o nome do intervalo secundário de onde o intervalo de IP do alias será coletado. Por exemplo: range1=10.9.0.0/24.

Consulte a sintaxe completa na 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",
    "ipCidrRange": "SECONDARY_IP_RANGE"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "SECONDARY_IP_RANGE"
  },
  ...],
  "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 é um intervalo secundário de endereços IP da sub-rede.
  • SECONDARY_RANGE_NAME é um nome para o intervalo secundário de endereços IP.
  • 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.

Como 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 Como 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,RANGE_NAME,...

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 é o nome do intervalo secundário de onde o intervalo de IP do alias será coletado. Por exemplo, range1=10.9.0.0/24.

Consulte a sintaxe completa na 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 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.

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

Como 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;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_CIDR é 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 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 (;).

Consulte a sintaxe completa na 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 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.

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

Consulte a sintaxe completa na 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 de IP de 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 VM" 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.

Como 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:RANGE_CIDR,RANGE_NAME:RANGE_CIDR,..."
  • ZONE é a zona que contém a instância.
  • NETWORK_INTERFACE é o nome da interface de rede à qual você está adicionando um intervalo de endereços IP de alias.
  • 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 valor.
  • 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.

Consulte a sintaxe completa na 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.

Como 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 com o mesmo comando gcloud. Para remover alguns intervalos e adicionar outros com a interface de linha de comandogcloud, primeiro execute o comando para remover os intervalos desnecessários e execute-o novamente para adicionar os intervalos necessários.

Consulte a documentação do gcloud para ver a sintaxe completa.

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_alias = true em /etc/default/instance_configs.cfg. Se for necessário alterar isso, reinicie o daemon de roteamento:

      service google-ip-forwarding-daemon restart
      
    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
      

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=RANGE_CIDR,RANGE_NAME=RANGE_CIDR,...
gcloud compute networks subnets update  SUBNET_NAME \
    --remove-secondary-ranges RANGE_NAME,RANGE_NAME,...

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.

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

Nos clusters do Kubernetes, a rota local ALIAS_IP_RANGE entra em conflito com e desativa cbr0 fazendo com que os pods percam a conectividade de rede.

Assim, essa rota é desativada nas imagens do SO do GKE otimizadas pelo contêiner.

Os usuários que querem usar IPs de alias em clusters autogerenciados usando imagens fornecidas pelo Google Cloud podem precisar seguir etapas para excluir essa rota.

Sintomas:

  • Se esse conflito ocorrer, os Kubernetes Pods não terão acesso à rede.

  • Uma captura de pacote no dispositivo Linux Bridge (tcpdump -ni cbr arp) executada enquanto os pods tentam aumentar as conexões de saída mostrará os pods usando ARPing para o endereço MAC do gateway. O gateway, cbr0, não emite uma resposta ARP, embora ele esteja ativo.

  • ip route show table local mostra ALIAS_IP_RANGE em eth0.

Correção:

  • Defina ip_forwarding_daemon = false em /etc/default/instance_configs.cfg nos nós afetados. Isso impede que a rota seja reinstalada após a exclusão.

  • Reinicie o daemon de encaminhamento de IP: service google-ip-forwarding-daemon restart.

  • Exclua manualmente a rota existente: sudo ip route del local ALIAS_IP_RANGE dev eth0.

A seguir