Configure intervalos de IP de alias

Este documento contém instruções para configurar endereços IP de alias e intervalos de IP de alias através da Google Cloud consola e da CLI gcloud. Antes de executar estes comandos, reveja os intervalos de IPs de alias.

Limitações

Sub-rede

  • Os limites por rede descrevem o número máximo de intervalos secundários que pode definir para cada sub-rede.
  • Não pode adicionar e remover intervalos secundários em simultâneo. A adição e a remoção têm de ser feitas como passos separados.
  • A expansão de CIDR não é suportada para intervalos secundários.

Instância de VM

  • Os intervalos de IPs de alias são suportados em todas as interfaces de rede de máquinas virtuais (VMs). O encaminhamento é configurado automaticamente para intervalos de IP de alias na interface de rede principal, mas não nas interfaces secundárias. Se tiver várias interfaces de rede, tem de configurar o encaminhamento de políticas para as interfaces adicionais. Para ver um exemplo de como o fazer, consulte o seguinte tutorial: Configure o encaminhamento para uma interface de rede adicional.
  • É possível adicionar ou eliminar intervalos de IPs de alias, mas não é possível atualizá-los.
  • Se remover um intervalo de IPs de alias de uma VM e o atribuir a outra VM, a transferência pode demorar até um minuto a ser concluída.
  • As etiquetas de origem da firewall não são suportadas para endereços IP de alias. Isto significa que, quando configura etiquetas de origem nas regras de firewall, as etiquetas de origem correspondem ao endereço IP principal da VM, mas não aos endereços IP de alias. Use intervalos de origem para permitir ou negar tráfego de entrada de endereços IP de alias.
  • O DNS interno resolve um nome de VM para o respetivo IP principal. Os nomes adicionais para IPs de alias não são configurados automaticamente, mas podem ser adicionados manualmente.

Rede da VPC

  • Adicionar ou remover um grande número de intervalos de IPs de alias ao mesmo tempo pode demorar muito tempo. Por exemplo, pode demorar até 10 minutos a adicionar ou eliminar 7000 intervalos de IPs de alias.
  • Não é possível eliminar redes da nuvem virtual privada (VPC) no modo automático se existirem intervalos de sub-redes secundárias.
  • Numa rota estática, o endereço IP do próximo salto tem de ser o endereço IP principal da VM. Os endereços IP de alias não são suportados como endereços IP de salto seguinte.
  • Os endereços IPv6 não são suportados.
  • Os intervalos de IPs de alias só são suportados em redes VPC e não em redes antigas. Para determinar o tipo de rede, liste as suas redes. As redes VPC têm um modo custom ou auto. As redes antigas têm um modo de legacy.

Comandos de sub-rede

Os intervalos de IPs de alias de VMs têm de ser atribuídos a partir de um intervalo pertencente à sub-rede na qual a VM se encontra. Todas as sub-redes têm um intervalo principal, que é o intervalo padrão de endereços IP internos que define a sub-rede. Uma sub-rede também pode ter um ou mais intervalos de IP secundários de endereços IP internos. Pode atribuir intervalos de IP de alias a partir dos intervalos principais ou secundários da sub-rede.

Tem de atribuir a cada intervalo secundário um nome exclusivo para a sub-rede. Quando atribui um intervalo de IPs de alias a uma VM, o nome do intervalo secundário indica Google Cloud a partir de que intervalo de sub-rede atribuir os IPs de alias.

Todos os intervalos, principais e secundários, têm de ser únicos em todas as sub-redes na rede VPC e em quaisquer redes anexadas através da interligação de redes VPC, do Cloud VPN ou do Cloud Interconnect.

Esta secção mostra como criar uma sub-rede com um intervalo secundário, adicionar um intervalo secundário a uma sub-rede existente ou remover um intervalo secundário de uma sub-rede. Depois de a sub-rede ter o intervalo que quer usar, consulte a secção Trabalhar com instâncias de VMs para obter informações sobre como atribuir um intervalo a uma VM.

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

Este comando pressupõe que já tem uma rede VPC. Se não tiver, crie uma.

Este comando é o mesmo, quer esteja a criar uma sub-rede para a interface principal da VM ou uma das interfaces secundárias.

A utilização de um intervalo secundário para a atribuição de IPs de alias permite-lhe separar o espaço de IPs para serviços alojados na VM, o que ajuda a criar regras de firewall que permitem o acesso apenas aos serviços em execução na VM e bloqueiam o acesso ao endereço IP principal da VM.

Consola

  1. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique no nome de uma rede existente.

  3. Clique em Adicionar sub-rede.

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

  5. Especifique a região.

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

  7. Clique em Criar intervalo de IPs secundário.

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

  9. Introduza 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, clique em Adicionar intervalo de IP para cada intervalo e, de seguida, indique 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 o seguinte:

  • NETWORK_NAME: o nome da rede onde quer criar a sub-rede.
  • REGION: a região onde está a criar a sub-rede.
  • RANGE_NAME_1=RANGE_CIDR_1 e RANGE_NAME_2=RANGE_CIDR_2: os nomes dos intervalos secundários a partir dos quais extrair os intervalos de IP de alias e o próprio intervalo de IP de alias, por exemplo, range1=10.9.0.0/24.

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

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 o seguinte:

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

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

Terraform

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

Os argumentos do Terraform têm valores de exemplo que pode alterar.

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 os comandos básicos do Terraform.

Adicione intervalos CIDR secundários a uma sub-rede existente

Este procedimento pressupõe que tem uma sub-rede que quer usar, mas precisa de adicionar um ou mais intervalos secundários.

Recomendamos que use um intervalo secundário para a atribuição de IP de alias para criar regras de firewall que permitam o acesso aos serviços executados numa VM, mas não ao endereço IP principal da VM.

Consola

  1. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique no nome de uma sub-rede a modificar para ver a respetiva página de detalhes.

  3. Clique em Edit.

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

  5. Introduza um nome para o nome do intervalo da sub-rede.

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

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

  8. Clique em Guardar.

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 o seguinte:

  • SUBNET_NAME: o nome da sub-rede à qual quer adicionar os intervalos secundários.
  • REGION: a região onde está a criar a sub-rede.
  • RANGE_NAME_1=RANGE_CIDR_1 e RANGE_NAME_2=RANGE_CIDR_2: os nomes dos intervalos secundários a partir dos quais extrair os intervalos de IP de alias e o próprio intervalo de IP de alias, por exemplo, range1=10.9.0.0/24.

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

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 o seguinte:

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

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

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

Pode remover intervalos secundários existentes de uma sub-rede. Para ver os intervalos associados a uma sub-rede, consulte o artigo Descreva uma sub-rede.

Consola

  1. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique no nome de uma sub-rede a modificar para ver a respetiva página de detalhes.

  3. Clique em Edit.

  4. Na secção Intervalos de IP secundários, clique em X junto ao intervalo secundário que quer remover.

  5. Clique em Guardar.

gcloud

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

Substitua o seguinte:

  • SUBNET_NAME: o nome da sub-rede da qual quer remover os intervalos secundários.
  • REGION: a região onde está a criar a sub-rede.
  • RANGE_NAME_1 e RANGE_NAME_2: os nomes dos intervalos secundários a remover da sub-rede de destino SUBNET_NAME, por exemplo, range1=10.9.0.0/24.

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

API

Exclua intervalos secundários para os remover. O exemplo seguinte 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 o seguinte:

  • PROJECT_ID: o ID do projeto que contém a sub-rede a modificar.
  • REGION: a região onde a sub-rede está localizada.
  • SUBNET_NAME: o nome da sub-rede a modificar.
  • SUBNET_FINGERPRINT: o ID da impressão digital da sub-rede existente, que é fornecido quando descreve uma sub-rede.

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

Trabalhe com instâncias de VM

Estes comandos mostram como criar uma instância com um intervalo de IPs de alias, adicionar um ou mais intervalos de IPs de alias a uma instância da VM existente ou remover um ou mais intervalos de uma instância da VM existente.

Crie uma VM com um intervalo de IP de alias no intervalo CIDR principal

Use este procedimento se quiser atribuir um intervalo de IPs de alias do intervalo principal da sub-rede. O intervalo que escolher não pode estar já a ser usado, mesmo que parcialmente, por outro recurso na rede VPC.

Use este procedimento se quiser que a interface principal e os endereços IP de alias da instância estejam no mesmo intervalo.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique em Criar instância.

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

  4. Especifique uma zona.

  5. Clique em Rede.

  6. Na secção Interfaces de rede, expanda a interface de rede predefinida.

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

  8. Deixe a opção Intervalo da sub-rede 1 definida como Principal.

  9. Em Intervalo de IPs de alias, introduza um intervalo de IPs na notação CIDR. Este intervalo tem de ser um subintervalo não usado 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 o seguinte:

  • ZONE: a zona que contém a instância.
  • SUBNET_NAME: o nome da sub-rede que vai conter a instância.
  • RANGE_CIDR_1 e RANGE_CIDR_2: os intervalos de IP da sub-rede principal a atribuir à 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 IPs for especificado apenas pela máscara de rede, o alocador de IPs escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede. Para especificar mais do que um intervalo, separe os intervalos com pontos e vírgulas (;).

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

API

Crie uma instância com um endereço IP 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 o seguinte:

  • PROJECT_ID: o ID do projeto onde cria a instância.
  • ZONE: a zona onde a instância vai ser criada. Google Cloud
  • CIDR_RANGE: o intervalo de IP da sub-rede principal a atribuir à 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 especificar o intervalo de IPs apenas pela máscara de rede, o alocador de endereços IP escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.

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

Crie uma VM com um intervalo de IP de alias num intervalo CIDR secundário

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

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique em Criar instância.

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

  4. Especifique uma zona.

  5. Clique em Rede.

  6. Na secção Interfaces de rede, expanda a interface de rede predefinida.

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

  8. Em Intervalo de sub-redes, selecione o intervalo de IP secundário a usar.

  9. Para o Intervalo de IPs de alias, introduza um intervalo de IPs na notação CIDR. Este intervalo tem de ser um intervalo não usado 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 o seguinte:

  • ZONE: a zona que contém a instância.
  • SUBNET_NAME: o nome da sub-rede que vai conter a instância.
  • RANGE_NAME: o nome do intervalo secundário da sub-rede a partir do qual extrair o intervalo de IP de alias.
  • RANGE_CIDR: o intervalo de IP a atribuir à 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 IPs for especificado apenas pela máscara de rede, o alocador de IPs escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.

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

API

Crie uma instância com um endereço IP de alias do intervalo de endereços IP secundários 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 o seguinte:

  • PROJECT_ID: o ID do projeto onde cria a instância.
  • ZONE: a zona onde cria a instância. Google Cloud
  • 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 especificar o intervalo de IP apenas pela máscara de rede, o alocador de endereços IP escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.
  • SECONDARY_RANGE_NAME: o nome do intervalo secundário da sub-rede a partir do qual extrair o intervalo de IP de alias.

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

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

Este exemplo cria duas redes, cada uma com uma sub-rede, e uma VM com interfaces em ambas as redes. Se já tiver duas redes VPC, pode passar ao passo "Crie uma VM com interfaces em ambas as redes".

Consola

Crie a primeira rede e sub-rede:

  1. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. Em Nome, introduza my-network1.

  4. Defina o Modo de criação de sub-rede como Custom e, em seguida, 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 intervalo de IPs secundário.

  8. Defina o nome do intervalo de sub-redes como range1.

  9. Defina o 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. Na Google Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. Em Nome, introduza my-network2.

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

  5. Para Região, especifique a mesma região que especificou 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 intervalo de IPs secundário.

  8. Defina o nome do intervalo de sub-redes pararange2.

  9. Defina o 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 em ambas as redes:

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique em Criar instância.

  3. Defina a zona para a região onde criou as sub-redes.

  4. Clique em Rede.

  5. Clique na primeira interface de rede.

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

    1. Selecione my-network2.
    2. Defina Subnetwork como my-subnet2.
    3. Clique em Intervalos de IP de alias.
    4. Clique em Adicionar intervalo de IP.
    5. Defina o Intervalo de sub-rede como Primary.
    6. Defina o intervalo de IPs de alias como /32.
    7. Clique em Adicionar intervalo de IP.
    8. Defina o Intervalo de sub-rede como range2.
    9. Defina o intervalo de IPs de 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 em ambas as redes. A primeira interface de rede apresentada, a que está 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 display para ver as interfaces e os respetivos 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 no modo personalizado com os nomes my-network1 e my-network2. Para mais informações, consulte o artigo Crie uma rede VPC no modo personalizado com apenas sub-redes IPv4.

  2. Adicione sub-redes às redes de VPC. Para mais informações, consulte o artigo Adicione uma sub-rede apenas IPv4.

    1. Adicione uma sub-rede denominada my-subnet1 a my-network1. Especifique 172.16.1.0/24 para o intervalo principal 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 principal e 10.2.0.0/16 para o intervalo secundário com o nome range2.

  3. Crie uma instância de VM com interfaces em ambas as 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 o seguinte:

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

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

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

Pode adicionar um intervalo de IPs de alias a uma instância em execução.

As novas moradas podem não estar disponíveis imediatamente, mesmo após a conclusão da chamada API. Os novos endereços só estão disponíveis depois de o SO convidado ter adicionado os endereços e os trajetos.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no nome de uma instância existente.

  3. Clique em Edit.

  4. Em Interfaces de rede, clique na interface de rede à qual quer adicionar um intervalo de IPs de alias (nic0 para este exemplo).

  5. Clique em Intervalos de IP de alias.

  6. Clique em Adicionar intervalo de IP.

  7. Selecione um intervalo de sub-rede.

  8. Introduza um intervalo de IPs de alias.

  9. Clique em Concluído.

  10. Clique em Guardar.

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 o seguinte:

  • INSTANCE_NAME: o nome da instância a modificar.
  • ZONE: a zona que contém a instância.
  • NETWORK_INTERFACE: o nome da interface de rede à qual 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 a partir dos quais extrair o intervalo de IP de alias. Se estiver a atribuir intervalos do intervalo principal da sub-rede, omita este valor.
  • RANGE_CIDR_1 e RANGE_CIDR_2: os intervalos de IP a atribuir à interface. Os intervalos podem ser um intervalo específico (192.168.100.0/24), um endereço IP único (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se o intervalo de IPs for especificado apenas pela máscara de rede, o alocador de IPs escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.

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

API

Adicione intervalos de IPs de 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 o seguinte:

  • PROJECT_ID: o ID do projeto que contém a instância a modificar.
  • ZONE: a Google Cloud zona na qual criar a instância.
  • INSTANCE_NAME: o nome da instância a modificar.
  • NETWORK_INTERFACE_NAME: o nome da interface de rede da instância a modificar.
  • SECONDARY_IP_RANGE: o intervalo de IP a atribuir à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24), um endereço IP único (192.168.100.1) ou uma máscara de rede no formato CIDR (/24). Se especificar o intervalo de IPs apenas pela máscara de rede, o alocador de endereços IP escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.
  • SECONDARY_RANGE_NAME: o nome do intervalo secundário da sub-rede a partir do qual extrair o intervalo de IP de alias. Se estiver a atribuir intervalos do intervalo principal da sub-rede, omita este campo.
  • INTERFACE_FINGERPRINT: o ID da impressão digital da interface de rede existente, que é fornecido quando descreve uma instância.

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

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

Pode adicionar mais intervalos de IPs de alias a uma instância existente ou remover um ou mais intervalos.

As alterações de morada podem não ser visíveis imediatamente. A chamada API tem de terminar e o SO convidado tem de modificar as moradas e as rotas.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no nome de uma instância existente.

  3. Clique em Edit.

  4. Em Interfaces de rede, clique na interface de rede à qual quer adicionar um intervalo de IPs de alias (nic0 para este exemplo).

  5. Clique em Intervalos de IP de alias.

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

  7. Para remover um intervalo de IPs de alias, clique no X junto ao intervalo de IPs de alias.

  8. Clique em Concluído.

  9. Clique em Guardar.

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 o seguinte:

  • INSTANCE_NAME: o nome da instância a modificar.
  • ZONE: a zona que contém a instância.
  • NETWORK_INTERFACE: o nome da interface de rede a modificar.
  • RANGES_TO_RETAIN: os intervalos existentes no formato CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR que quer manter. Se estiver a adicionar intervalos a uma instância que não tenha nenhum, estes valores estão em branco. Se estiver a remover todos os intervalos da instância, o campo --aliases fica completamente em branco.
  • NEW_RANGE_NAME: o nome do intervalo secundário da sub-rede a partir do qual extrair quaisquer novos intervalos de IPs de alias. Se estiver a atribuir intervalos do intervalo principal da sub-rede, omita este valor.
  • NEW_RANGE_CIDR: o intervalo de endereços IP a atribuir à interface. Este 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 apenas pela máscara de rede, o alocador de IP escolhe um intervalo disponível com a máscara de rede especificada e atribui-o à interface de rede.

Para adicionar intervalos, execute o comando e especifique todos os intervalos de IP de alias existentes e novos. Os pares são separados por pontos e vírgulas, 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 de alias que quer manter. Se estiver a manter intervalos de um intervalo secundário, tem de especificar o nome do intervalo secundário. 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 pode 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 gcloud documentação.

API

Para uma interface de rede de uma instância existente, adicione ou remova intervalos de endereços IP de 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 o seguinte:

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

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

Resolução de problemas

Esta secção apresenta uma lista de vários problemas que pode encontrar ao configurar intervalos de IPs de alias.

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

  1. Verifique se a rede é uma rede de VPC. Os IPs de alias não são suportados em redes antigas.

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

    A rede MODE tem de ser auto ou custom.

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

    gcloud compute networks subnets describe SUBNET_NAME --region=REGION
    
    • A sub-rede tem um intervalo secundário com o nome correspondente.
    • O intervalo de IPs de alias pedido está dentro deste intervalo secundário ou, se estiver a usar a máscara de rede, é inferior ao intervalo principal.
  3. Se o nome do intervalo de sub-rede não for especificado, verifique se o intervalo de IPs alias pedido está dentro do intervalo de sub-rede principal ou, se estiver a usar a máscara de rede, é inferior ao intervalo principal.

Não é possível estabelecer ligação ao IP do alias

  1. Valide as regras de firewall.

    1. Apresentar todas as regras de firewall:

      gcloud compute firewall-rules list --format=json
      
    2. Verifique se o tráfego de e para um intervalo de IPs de alias é permitido.

    3. Se necessário, adicione regras de firewall para permitir o envio de ping a um intervalo de IPs 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. Certifique-se de que a VM reconhece os intervalos de alias de IP como locais. Em distribuições Linux, como o Debian, normalmente, pode fazê-lo da seguinte forma.

    1. Estabeleça ligação à instância e execute este comando:

      ip route show table local
      

      O resultado é semelhante ao seguinte:

      local ALIAS_IP_RANGE dev eth0  proto 66  scope host
      
    2. Em /etc/default/instance_configs.cfg, certifique-se de que a ip_aliasesdefinição está definida como true. Se precisar de alterar esta definição, também tem de reiniciar o agente convidado:

      systemctl restart google-guest-agent
      
    3. Se a rota local não estiver presente, configure-a através deste comando:

      ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
      

O serviço de início automático não é associado ao endereço IP do alias

Nas distribuições Linux suportadas, os endereços IP de alias são definidos automaticamente como endereços locais pelo agente de convidado pré-instalado. Isto significa que não é necessária nenhuma configuração ao nível do SO.

No entanto, isto também significa que o SO não reconhece os endereços IP de alias como endereços locais antes de o agente convidado estar em execução. Se tiver serviços de início automático na VM e estes forem iniciados antes do agente convidado, não podem ser associados aos endereços IP de alias.

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

could not bind to address ALIAS_IP:80

Para resolver este problema, configure o seu serviço para ser iniciado após o agente convidado. Nas distribuições que usam o systemctl, siga os passos abaixo.

  1. Como utilizador privilegiado, execute o seguinte comando para adicionar um fragmento de código inserível para o serviço que não está a funcionar corretamente. Por exemplo, um servidor HTTP Apache no Debian seria apache2:

    systemctl edit YOUR_SERVICE
    
  2. No editor de texto, adicione as seguintes linhas. Certifique-se de que adiciona as linhas acima da linha com a leitura Lines below this comment will be discarded.

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

O meu intervalo de IP secundário não está listado

Os intervalos de IP secundários não estã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 é semelhante ao seguinte:

    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. Apresente uma lista das suas sub-redes.

    gcloud compute networks subnets list
    

    O resultado é semelhante ao seguinte:

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

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

    O resultado é semelhante ao seguinte:

    ...
    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 receber um erro a indicar que o intervalo secundário não existe, certifique-se do seguinte:

  • A sub-rede tem um intervalo secundário com o nome especificado.
  • Está a criar a VM na sub-rede que tem o intervalo secundário.

Pode ver este erro executando os seguintes comandos:

  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 é semelhante ao seguinte:

    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 noutra rede, como a rede predefinida, em vez de na sub-rede criada recentemente.

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

    O resultado é semelhante ao seguinte:

    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 de alias da sub-rede criada no passo 1. O comando falha porque o intervalo secundário está numa 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 é semelhante ao seguinte:

    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 respetiva interface na sub-rede criada no passo 1.

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

    O resultado é semelhante ao seguinte:

    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 de alias à interface. Desta vez, o comando é bem-sucedido 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 é semelhante ao seguinte:

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

Não é possível adicionar e remover intervalos de IP secundários no mesmo pedido

Não é suportado adicionar e remover intervalos de IPs 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 este comando, use gcloud compute networks subnets update --help.

Não é possível adicionar e remover intervalos de IP de alias em simultâneo

A adição e a remoção de intervalos de IPs de alias de VMs no mesmo pedido não são suportadas. Tem de remover explicitamente o intervalo existente antes de poder adicionar o novo intervalo.

O comando da CLI gcloud para atualizar os intervalos de IPs de alias não preserva os intervalos existentes, pelo que a omissão de um intervalo é tratada como um pedido para eliminar esse intervalo.

Por exemplo, se a VM atual tiver um intervalo de alias 10.9.27.0/24 e o novo intervalo pedido for /24, o comando para pedir o /24 é rejeitado porque é 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. Experimente adicionar /24 sem especificar o intervalo existente. Ocorreu 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 não ter um intervalo de IPs de alias.

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

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

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

Etiquetas de origem e contas de serviço de origem de regras de firewall

A conta de serviço de origem da firewall e as etiquetas de origem expandem-se apenas para os IPs da rede principal das instâncias correspondentes e não se aplicam aos IPs de alias das instâncias correspondentes. Assim, uma regra de firewall baseada em etiquetas de origem não afeta o tráfego de um endereço IP de alias de instância. Os endereços IP de alias podem ser adicionados às regras da firewall como intervalos de origem ou de destino.

Problemas com VMs com várias interfaces e intervalos de IPs de alias

Consulte o artigo Resolva problemas de VMs com várias interfaces de rede.

A ativação do alias de IP em imagens Google Cloud desativa a ponte cbr0 em clusters Kubernetes autogeridos

Nas imagens fornecidas pela Google, o agente convidado da Google cria rotas locais para intervalos de endereços IP de alias. Para clusters Kubernetes autogeridos, tem de configurar o agente convidado da Google para que não crie rotas locais para intervalos de IPs de alias. Este passo não é necessário para clusters do GKE, porque o GKE desativa a criação de rotas locais para intervalos de IPs de alias nas respetivas imagens de nós.

Sintomas:

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

  • Uma captura de pacotes no dispositivo de ponte Linux (tcpdump -ni cbr arp) mostra uma falta de respostas ARP da interface cbr0, apesar de essa interface estar ativa.

  • A inspeção da tabela de rotas local (ip route show table local) revela que o intervalo de endereços IP de alias está atribuído à interface de rede principal (por exemplo, eth0 ou ens4) em vez da interface de bridge do contentor (cbr0).

Corrija:

  1. Execute o comando adequado indicado em Pacotes instalados para o ambiente convidado para determinar se a VM do nó está a executar o agente convidado da Google ou um pacote do Compute Engine anterior.

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

  3. Configure o agente convidado da Google para ignorar 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 secção [NetworkInterfaces]. Pode criar a secção [NetworkInterfaces] se ainda não estiver presente no ficheiro 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 rotas local.

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

        sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
        

        Substitua o seguinte:

        • 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 secção Configuração na documentação do agente convidado da Google.

O que se segue?