Configurar intervalos de IP do alias
Este documento contém instruções para configurar endereços IP de alias e intervalos de IP de alias usando o console do Google Cloud e a Google Cloud CLI. Antes de executar esses comandos, revise os intervalos de IP do alias.
Limitações
Sub-rede
- Os limites por rede descrevem o número máximo de intervalos secundários que podem ser definidos para cada sub-rede.
- Não é possível adicionar e remover intervalos secundários simultaneamente. Essas ações precisam ser feitas em etapas separadas.
- A expansão CIDR não é compatível com intervalos secundários.
Instância de VM
- Os intervalos de IP de alias são compatíveis com todas as interfaces de rede de máquinas virtuais (VMs). O roteamento é configurado automaticamente para intervalos de IP do alias na interface de rede principal, mas não nas interfaces secundárias. Se você tiver várias interfaces de rede, será necessário configurar o roteamento de políticas para as outras interfaces. Para um exemplo de como fazer isso, consulte o seguinte tutorial: Configurar o roteamento para uma interface de rede adicional.
- Os intervalos de IP do alias podem ser adicionados ou excluídos, mas não atualizados.
- Se você remover um intervalo de IP do alias de uma VM e atribuí-lo a outra, a transferência pode levar até um minuto para ser concluída.
- As tags de origem do firewall não são compatíveis com endereços IP do alias. Isso significa que, ao configurar tags de origem nas regras de firewall, elas correspondem ao endereço IP principal da VM, mas não aos endereços IP do alias. Use intervalos de origem para permitir ou negar o tráfego de entrada proveniente de endereços IP do alias.
- O DNS interno resolve um nome de VM para o IP principal dela. Os outros nomes para IPs do alias não são configurados automaticamente, mas podem ser adicionados manualmente.
Rede VPC
- Adicionar ou remover simultaneamente um grande número de intervalos de IP do alias pode demorar. Por exemplo, adicionar ou excluir 7.000 intervalos de IP do alias pode levar até 10 minutos.
- As redes de nuvem privada virtual (VPC) de modo automático não podem ser excluídas quando há intervalos de sub-redes secundários.
- Em uma rota estática, o endereço IP do próximo salto precisa ser o endereço IP principal da VM. Os endereços IP de alias não são aceitos como endereços IP do próximo salto.
- Não há suporte para endereços IPv6.
- Os intervalos de IP do alias são compatíveis apenas com as redes VPC, não com as
legadas. Liste suas redes para determinar qual é o tipo da sua. As redes VPC têm um modo
de
custom
ouauto
. As redes legadas têm um modo delegacy
.
Comandos de sub-rede
Os intervalos de IP do alias da VM precisam ser atribuídos por meio de um intervalo pertencente à sub-rede em que a VM está inserida. Toda as sub-redes têm um intervalo primário, que é o intervalo padrão dos endereços IP que define a sub-rede. Uma sub-rede também pode ter um ou mais intervalos de IP secundários com endereços IP internos. Os intervalos de IP do alias podem ser atribuídos a partir dos intervalos primário ou secundário da sub-rede.
Dê a cada intervalo secundário um nome exclusivo na sub-rede. Ao atribuir um intervalo de IP do alias a uma VM, o nome do intervalo secundário informa Google Cloud qual intervalo de sub-rede ele deve usar para atribuir os IPs do alias.
Todos os intervalos, primários e secundários, precisam ser exclusivos em todas as sub-redes da rede VPC e de qualquer rede anexada usando peering de rede VPC, Cloud VPN ou Cloud Interconnect.
Esta seção mostra como criar sub-redes com intervalos secundários e adicioná-los ou removê-los de uma sub-rede existente. Depois que a sub-rede tiver o intervalo que você quer usar, consulte a seção Trabalhar com instâncias de VM para saber como atribuir um intervalo a uma VM.
Criar uma sub-rede com um ou mais intervalos CIDR secundários
Esse comando pressupõe que você já tenha uma rede VPC. Se você não, crie uma.
Esse comando não mudará, mesmo se você estiver criando uma sub-rede para a interface principal da VM ou uma das interfaces secundárias.
O uso de um intervalo secundário para a alocação de IP do alias permite que você separe o espaço de IP para serviços hospedados na VM. Isso facilita a criação de regras de firewall que permitem acesso somente aos serviços em execução na VM e bloqueiam o acesso ao endereço IP principal da VM.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique no nome de uma rede existente.
Clique em Add subnet.
Insira um nome para a nova sub-rede.
Especifique a região.
Insira um intervalo de endereços IP na notação CIDR, por exemplo,
10.65.61.0/24
.Clique em Criar um intervalo de IP secundário.
Insira um nome de intervalo de sub-rede.
Insira um intervalo de IP secundário na notação CIDR, por exemplo,
10.9.0.0/24
.Para adicionar intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP e forneça um nome e um intervalo.
Clique em Adicionar.
gcloud
gcloud compute networks subnets create s1 \ --network NETWORK_NAME \ --region REGION \ --range 10.65.61.0/24 \ --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Substitua:
NETWORK_NAME
: o nome da rede em que você quer criar a sub-rede.REGION
: a região em que você está criando a sub-rede.RANGE_NAME_1
=RANGE_CIDR_1
eRANGE_NAME_2
=RANGE_CIDR_2
: os nomes dos intervalos secundários de onde os intervalos de IP do alias serão extraídos: por exemplo,range1=10.9.0.0/24
.
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Crie uma sub-rede com um ou mais intervalos secundários.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "PRIMARY_IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME", "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...] }
Substitua:
PROJECT_ID
: o ID do projeto que contém a rede VPC em que a sub-rede será criada.REGION
: a região em que a sub-rede será localizada.PRIMARY_IP_RANGE
: o intervalo de endereços IP principal da sub-rede.NETWORK_URL
: o URL ou a rede VPC em que a sub-rede será criada.SUBNET_NAME
: um nome para a sub-rede.SECONDARY_RANGE_NAME_1
eSECONDARY_RANGE_NAME_2
: os nomes a serem usados para os intervalos secundários.SECONDARY_IP_RANGE_1
eSECONDARY_IP_RANGE_2
: os intervalos de endereços IP a serem usados para os intervalos secundários.
Para mais informações, consulte o
método subnetworks.insert
.
Terraform
Use o recurso Terraform para criar uma sub-rede com um ou mais intervalos secundários.
Os argumentos do Terraform têm exemplos de valores que podem ser alterados.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicionar intervalos CIDR secundários a uma sub-rede atual
Para este procedimento, presumimos que você tenha uma sub-rede que quer usar, mas primeiro precisa adicionar um ou mais intervalos secundários a ela.
Recomendamos usar um intervalo secundário para a alocação de IP do alias para criar regras de firewall que permitam o acesso aos serviços em execução em uma VM, mas não ao endereço IP principal da VM.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique no nome de uma sub-rede para modificar a visualização da página de detalhes dela.
Clique em Editar.
Na seção Intervalos de IP secundários, clique em Adicionar intervalo de IP.
Digite um nome para Nome do intervalo de sub-rede.
Digite um intervalo para Intervalo de IP secundário na notação CIDR, por exemplo,
10.9.0.0/24
.Para adicionar intervalos de IP secundários, para cada intervalo, clique em Adicionar intervalo de IP e forneça um nome e um intervalo.
Clique em Salvar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Substitua:
SUBNET_NAME
: o nome da sub-rede em que você quer adicionar os intervalos secundários.REGION
: a região em que você está criando a sub-rede.RANGE_NAME_1
=RANGE_CIDR_1
eRANGE_NAME_2
=RANGE_CIDR_2
: os nomes dos intervalos secundários de onde os intervalos de IP do alias serão extraídos e o próprio intervalo de IP do alias, por exemplo,range1=10.9.0.0/24
.
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Adicione um intervalo secundário a uma sub-rede existente.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...], "fingerprint": "SUBNET_FINGERPRINT" }
Substitua:
PROJECT_ID
: o ID do projeto que contém a sub-rede a ser modificada.REGION
: a região em que a sub-rede está localizada.SUBNET_NAME
: o nome da sub-rede a ser modificada.SECONDARY_RANGE_NAME_1
eSECONDARY_RANGE_NAME_2
: os nomes a serem usados para os intervalos secundários.SECONDARY_IP_RANGE_1
eSECONDARY_IP_RANGE_2
: os intervalos de endereços IP a serem usados para os intervalos secundários.SUBNET_FINGERPRINT
: o ID de impressão digital da sub-rede atual, que é fornecido quando você descreve uma sub-rede.
Para mais informações, consulte o
método subnetworks.patch
.
Remover um intervalo CIDR secundário de uma sub-rede
É possível remover intervalos secundários existentes de uma sub-rede. Para ver os intervalos associados a uma sub-rede, consulte Descrever uma sub-rede.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique no nome de uma sub-rede para modificar a visualização da página de detalhes dela.
Clique em Editar.
Na seção Intervalos de IP secundários, clique em X ao lado do intervalo secundário a ser removido.
Clique em Salvar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
Substitua:
SUBNET_NAME
: o nome da sub-rede de onde você quer remover os intervalos secundários.REGION
: a região em que você está criando a sub-rede.RANGE_NAME_1
eRANGE_NAME_2
: os nomes dos intervalos secundários que serão removidos da sub-rede de destinoSUBNET_NAME
(por exemplo,range1=10.9.0.0/24
).
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Exclua os intervalos secundários para removê-los. O exemplo a seguir remove todos os intervalos secundários de uma sub-rede existente:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "fingerprint": "SUBNET_FINGERPRINT", "secondaryIpRanges": [ ] }
Substitua:
PROJECT_ID
: o ID do projeto que contém a sub-rede a ser modificada.REGION
: a região em que a sub-rede está localizada.SUBNET_NAME
: o nome da sub-rede a ser modificada.SUBNET_FINGERPRINT
: o ID de impressão digital da sub-rede atual, que é fornecido quando você descreve uma sub-rede.
Para mais informações, consulte o
método subnetworks.patch
.
Trabalhar com instâncias de VM
Estes comandos mostram como criar instâncias com intervalos de IP de alias e adicionar/remover um ou mais intervalos de IP do alias de uma instância de VM existente.
Criar uma VM com um intervalo de IP do alias no intervalo CIDR primário
Use este procedimento se quiser atribuir um intervalo de IP do alias por meio do intervalo primário da sub-rede. O intervalo escolhido não pode estar em uso, mesmo parcialmente, em outro recurso da rede VPC.
Use este procedimento se quiser que a interface primária da instância e os endereços IP do alias fiquem no mesmo intervalo.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em
Criar instância.Insira um nome para a nova instância.
Especifique uma zona.
Clique em Rede.
Na seção Interfaces de rede, abra a interface de rede padrão.
Em Intervalos de IP do alias, clique em
Adicionar intervalo de IP.Deixe o Intervalo da sub-rede 1 definido como Primário.
Em Intervalo de IP do alias, insira um intervalo de IP na notação CIDR. Esse intervalo precisa ser um subintervalo não utilizado do intervalo principal.
Clique em Criar.
gcloud
gcloud compute instances create vm1 \ --zone ZONE \ --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."
Substitua:
ZONE
: a zona que contém a instância.SUBNET_NAME
: o nome da sub-rede que conterá a instância.RANGE_CIDR_1
eRANGE_CIDR_2
: os intervalos de IP da sub-rede principal a ser atribuída à interface. Os intervalos podem ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se o intervalo de IP for especificado apenas pela máscara de rede, o alocador de IP vai escolher um intervalo disponível com a máscara de rede especificada e o alocar à interface de rede. Para especificar mais de um intervalo, separe-os com ponto e vírgula (;
).
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Crie uma instância com um endereço IP do alias a partir do intervalo de endereços IP principal da sub-rede da instância.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "CIDR_RANGE" } ] }, ... ], ... }
Substitua:
PROJECT_ID
: o ID do projeto em que você cria a instância.ZONE
: a zona Google Cloud em que a instância será criada.CIDR_RANGE
: o intervalo de IP da sub-rede principal a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se você especificar o intervalo de IP apenas pela máscara de rede, o alocador de endereços IP vai escolher um intervalo disponível com a máscara de rede especificada e o atribuir à interface de rede.
Para mais informações, consulte o
método instances.insert
.
Criar uma VM com um intervalo de IP do alias em um intervalo CIDR secundário
Use este procedimento se quiser atribuir um intervalo de IP do alias coletado em um intervalo secundário da sub-rede. Recomendamos manter os intervalos de IP do alias separados do intervalo principal da sub-rede para criar regras de firewall que permitam o acesso aos serviços em execução em uma VM, mas não ao endereço IP principal da VM.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em
Criar instância.Insira um nome para a nova instância.
Especifique uma zona.
Clique em Rede.
Na seção Interfaces de rede, abra a interface de rede padrão.
Em Intervalos de IP do alias, clique em
Adicionar intervalo de IP.Em Intervalo da sub-rede, selecione o intervalo de IP secundário a ser usado.
Em Intervalo de IP do alias, insira um intervalo de IP na notação CIDR. Esse intervalo precisa ser um intervalo não utilizado do intervalo de IP secundário.
Clique em Criar.
gcloud
gcloud compute instances create vm3 \ --zone ZONE \ --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
Substitua:
ZONE
: a zona que contém a instância.SUBNET_NAME
: o nome da sub-rede que conterá a instância.RANGE_NAME
: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado.RANGE_CIDR
: o intervalo de IP a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se o intervalo de IP for especificado somente pela máscara de rede, o alocador de IP escolherá um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.
Para conferir a sintaxe completa , consulte a
documentação do gcloud
.
API
Crie uma instância com um endereço IP de alias a partir do intervalo de endereços IP secundário da sub-rede da instância.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_CIDR_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" } ] }, ... ], ... }
Substitua:
PROJECT_ID
: o ID do projeto em que você cria a instância.ZONE
: a zona Google Cloud em que você cria a instância.SECONDARY_CIDR_RANGE: the IP range to assign to the interface. The range can be a specific range (
192.168.100.0/24), a single IP address (
192.168.100.1), or a netmask in CIDR format (
/24``. Se você especificar o intervalo de IP apenas pela máscara de rede, o alocador de endereços IP vai escolher um intervalo disponível com a máscara de rede especificada e o atribuirá à interface de rede.SECONDARY_RANGE_NAME
: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado.
Para mais informações, consulte o
método instances.insert
.
Crie uma VM com várias interfaces e endereços IP do alias
Este exemplo cria duas redes, cada uma com uma sub-rede e uma VM com interfaces nas duas redes. Se você já tiver duas redes VPC, pule para a etapa "Criar uma VM com interfaces nas duas redes".
Console
Crie a primeira rede e sub-rede:
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Em Nome, insira
my-network1
.Defina o Modo de criação da sub-rede como
Custom
e especifique um nome de sub-rede demy-subnet1
.Especifique uma região.
Defina o Intervalo de endereços IP como
172.16.1.0/24
.Clique em Criar um intervalo de IP secundário.
Defina o Nome do intervalo de sub-rede como
range1
.Defina Intervalo de IP secundário como
10.1.0.0/16
.Clique em Concluído.
Clique em Criar.
Crie a segunda rede e sub-rede:
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Em Nome, insira
my-network2
.Defina o Modo de criação da sub-rede como
Custom
e especifique um nome de sub-rede demy-subnet2
.Em Região, especifique a mesma região usada para a primeira rede e sub-rede.
Defina o Intervalo de endereços IP como
172.16.2.0/24
.Clique em Criar um intervalo de IP secundário.
Defina o Nome do intervalo de sub-rede como
range2
.Defina Intervalo de IP secundário como
10.2.0.0/16
.Clique em Concluído.
Clique em Criar.
Crie uma VM com interfaces nas duas redes:
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em
Criar instância.Defina a zona como a região em que você criou as sub-redes.
Clique em Rede.
Clique na primeira interface de rede.
- Defina Rede como
my-network1
. - Defina Sub-rede como
my-subnet1
. - Clique em Intervalos de IP do alias.
- Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
Primary
. - Defina o Intervalo de IP do alias como
/32
. - Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
range1
. - Defina o Intervalo de IP do alias como
/24
. - Clique em Concluído.
- Defina Rede como
Clique em Adicionar interface de rede.
- Selecione
my-network2
. - Defina Sub-rede como
my-subnet2
. - Clique em Intervalos de IP do alias.
- Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
Primary
. - Defina o Intervalo de IP do alias como
/32
. - Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
range2
. - Defina o Intervalo de IP do alias como
/24
. - Clique em Concluído.
- Selecione
Clique em Criar.
gcloud
Crie a primeira rede:
gcloud compute networks create my-network1 --subnet-mode CUSTOM
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
Crie uma segunda rede:
gcloud compute networks create my-network2 --subnet-mode CUSTOM
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
Crie uma VM com interfaces nas duas redes. A primeira interface de rede listada, a primeira em
my-subnet1
, é a principal:gcloud compute instances create multi-nic-alias-vm \ --machine-type f1-micro \ --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \ --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
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
Crie duas redes VPC de modo personalizado chamadas
my-network1
emy-network2
. Para mais informações, consulte Criar uma rede VPC de modo personalizado apenas com sub-redes IPv4.Adicione sub-redes às redes VPC. Para mais informações, consulte Adicionar uma sub-rede somente IPv4.
Adicione uma sub-rede denominada
my-subnet1
amy-network1
. Especifique172.16.1.0/24
para o intervalo primário e10.1.0.0/16
para o intervalo secundário com o nomerange1
.Adicione uma sub-rede denominada
my-subnet2
amy-network2
. Especifique172.16.2.0/24
para o intervalo primário e10.2.0.0/16
para o intervalo secundário com o nomerange2
.
Crie uma instância de VM com interfaces nas duas redes.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range1", "ipCidrRange": "/24" } ] }, { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range2", "ipCidrRange": "/24" } ] } ], ... }
Substitua:
PROJECT_ID
: o ID do projeto em que você cria a instância.ZONE
: a zona Google Cloud em que a instância será criada.REGION
: a Google Cloud região em que a sub-rede está localizada. As sub-redes precisam estar na mesma região que a instância.
Para mais informações, consulte o método
instances.insert
.
Adicionar intervalos de IP de alias a uma instância existente
Você pode adicionar um intervalo de IP do alias a uma instância em execução.
Os novos endereços podem não estar disponíveis imediatamente, mesmo após a conclusão da chamada de API. Os novos endereços só ficam disponíveis depois que o SO convidado adiciona os endereços e rotas.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique no nome de uma instância.
Clique em Editar.
Em Interfaces de rede, clique na interface de rede em que você quer adicionar um intervalo de IP do alias (
nic0
neste exemplo).Clique em Intervalos de IP do alias.
Clique em Adicionar intervalo de IP.
Selecione um Intervalo de sub-rede.
Digite um intervalo de IP de alias.
Clique em Concluído.
Clique em Salvar.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] \ --aliases "RANGE_NAME_1:RANGE_CIDR_1; \ RANGE_NAME_2:RANGE_CIDR_2;..."
Substitua:
INSTANCE_NAME
: o nome da instância a ser modificada.ZONE
: é a zona que contém a instância.NETWORK_INTERFACE
: o nome da interface de rede para adicionar um intervalo de endereços IP de alias.RANGE_NAME_1
eRANGE_NAME_2
: os nomes dos intervalos secundários da sub-rede de onde o intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos por meio do intervalo principal da sub-rede, oculte esse valor.RANGE_CIDR_1
eRANGE_CIDR_2
: os intervalos de IP a serem atribuídos à interface. Os intervalos podem ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se o intervalo de IP for especificado apenas pela máscara de rede, o alocador de IP escolherá um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Adicione intervalos de IP do alias a uma instância existente.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_IP_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" }, existing ranges... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Substitua:
PROJECT_ID
: o ID do projeto que contém a instância a ser modificada.ZONE
: a Google Cloud zona em que a instância será criada.INSTANCE_NAME
: o nome da instância a ser modificada.NETWORK_INTERFACE_NAME
: o nome da interface de rede da instância a ser modificada.SECONDARY_IP_RANGE
: o intervalo de IP a ser atribuído à interface. O intervalo pode ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se você especificar o intervalo de IP apenas por máscara de rede, o alocador de endereços IP escolherá um intervalo disponível com a máscara de rede especificada e o atribuirá à interface de rede.SECONDARY_RANGE_NAME
: o nome do intervalo secundário da sub-rede de onde o intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos do intervalo principal da sub-rede, omita esse campo.INTERFACE_FINGERPRINT
: o ID de impressão digital da interface de rede atual, que é fornecido quando você descreve uma instância.
Para mais informações, consulte o
método instances.updateNetworkInterface
.
Modificar intervalos de IP de alias para uma instância existente
É possível adicionar mais intervalos de IP de alias a uma instância atual ou remover um ou mais deles.
As alterações de endereço podem não ser exibidas imediatamente. A chamada de API precisa terminar, e o SO convidado precisa modificar os endereços e as rotas.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique no nome de uma instância.
Clique em Editar.
Em Interfaces de rede, clique na interface de rede em que você quer adicionar um intervalo de IP do alias (
nic0
neste exemplo).Clique em Intervalos de IP do alias.
Para adicionar um intervalo de IP do alias, clique em Adicionar intervalo de IP do alias.
Para remover um intervalo de IP do alias, clique no X ao lado do intervalo de IP do alias.
Clique em Concluído.
Clique em Salvar.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] \ --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."
Substitua:
INSTANCE_NAME
: o nome da instância a ser modificada.ZONE
: é a zona que contém a instância.NETWORK_INTERFACE
: o nome da interface de rede a ser modificado.RANGES_TO_RETAIN
: os intervalos atuais no formatoCURRENT_RANGE_NAME
:CURRENT_RANGE_CIDR
que você quer manter. Se você estiver adicionando intervalos a uma instância em que não há nenhum, esses valores ficarão em branco. Se você estiver removendo todos os intervalos da instância, todo o campo--aliases
ficará em branco.NEW_RANGE_NAME
: o nome do intervalo secundário da sub-rede de onde qualquer novo intervalo de IP do alias será coletado. Se você estiver atribuindo intervalos por meio do intervalo principal da sub-rede, oculte esse valor.NEW_RANGE_CIDR
: o intervalo de endereços IP a ser atribuído à interface. Esse intervalo pode ser um intervalo específico (192.168.100.0/24
), um único endereço IP (192.168.100.1
) ou uma máscara de rede no formato CIDR (/24
). Se o intervalo de endereços IP for especificado somente pela máscara de rede, o alocador de IP vai escolher um intervalo disponível com a máscara de rede especificada e o alocará à interface de rede.
Para adicionar intervalos, execute o comando e especifique todos os intervalos de IP do alias atuais e novos. Os pares são separados por ponto e vírgula, por exemplo:
--aliases
"CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"
.
Para remover intervalos, execute o comando e especifique apenas os intervalos de IP do alias que
você quer manter. Se você for manter os intervalos coletados de um intervalo secundário, será preciso especificar o nome dele. Um intervalo CIDR pode ser um intervalo
específico (192.168.100.0/24
) ou um único endereço IP
(192.168.100.1
), por exemplo:
--aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR"
.
Para remover todos os intervalos, execute o comando e especifique a flag --aliases
, mas
use aspas para fornecer uma entrada em branco. Por exemplo:
--aliases ""
.
Não é possível adicionar e remover intervalos no mesmo comando gcloud
. Para
remover alguns intervalos e adicionar outros com a CLI gcloud,
execute primeiro o comando para remover os intervalos desnecessários e, em seguida, execute-o novamente para
adicionar os intervalos necessários.
Para ver a sintaxe completa, consulte a documentação do gcloud
.
API
Para interfaces de rede de instâncias existentes, adicione ou remova intervalos de endereços IP do alias.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ include new and existing ranges to add them... exclude existing ranges to remove them... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Substitua:
PROJECT_ID
: o ID do projeto que contém a instância a ser modificada.ZONE
: é a zona que contém a instância.INSTANCE_NAME
: o nome da instância a ser modificada.NETWORK_INTERFACE_NAME
: o nome da interface de rede da instância a ser modificada.INTERFACE_FINGERPRINT
: o ID de impressão digital da interface de rede atual, que é fornecido quando você descreve uma instância.
Para mais informações, consulte o
método instances.updateNetworkInterface
.
Solução de problemas
Esta seção lista vários problemas que podem ser encontrados ao configurar intervalos de IP de alias.
Não é possível criar uma instância de VM com IP do alias
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 serauto
oucustom
.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.
Se o nome do intervalo da sub-rede não estiver especificado, verifique se o intervalo de IP do alias solicitado está dentro do intervalo da sub-rede principal ou, se estiver usando uma máscara de rede, se é menor que o intervalo principal.
Não é possível conectar ao IP do alias
Verifique as regras de firewall.
Liste todas as regras de firewall:
gcloud compute firewall-rules list --format=json
Verifique se o tráfego de entrada e saída de um intervalo de IP de alias é permitido.
Se necessário, adicione regras de firewall para permitir o ping em um intervalo de IP de alias:
gcloud compute firewall-rules create FIREWALL_NAME1 \ --network NETWORK_NAME \ --priority 0 \ --source-ranges ALIAS_IP \ --allow icmp
gcloud compute firewall-rules create FIREWALL_NAME2 \ --network NETWORK_NAME \ --priority 0 \ --direction out \ --destination-ranges ALIAS_IP \ --allow icmp
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:
Conecte-se à instância e execute este comando:
ip route show table local
O resultado será assim:
local ALIAS_IP_RANGE dev eth0 proto 66 scope host
Em
/etc/default/instance_configs.cfg
, verifique se a configuraçãoip_aliases
está definida comotrue
. Se você precisar mudar isso, também precisará reiniciar o agente convidado:systemctl restart google-guest-agent
Se a rota local não estiver presente, configure-a usando este comando:
ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
O serviço de inicialização automática não está vinculado ao endereço IP do alias
Em distribuições compatíveis do Linux, os endereços IP do alias são definidos automaticamente como endereços locais pelo agente convidado pré-instalado. Isso significa que nenhuma configuração no nível do SO é necessária.
No entanto, isso também significa que o SO não reconhece os endereços IP do alias como endereços locais antes da execução do agente convidado. Se você tiver serviços de inicialização automática na VM e eles forem iniciados antes do agente convidado, eles não poderão se vincular aos endereços IP do alias.
Por exemplo, um servidor HTTP Apache pode sair com o seguinte erro:
could not bind to address ALIAS_IP:80
Para resolver esse problema, configure o serviço para iniciar após o agente
convidado. Em distribuições que usam systemctl
, siga as etapas a seguir.
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
No editor de texto, adicione as linhas a seguir. Adicione as linhas acima da linha que dizem
Lines below this comment will be discarded
.[Unit] After=google-guest-agent.service
Meu intervalo de IP secundário não está listado
Os intervalos de IP secundários não são listados como sub-redes normais. Para
verificar se o intervalo de IP secundário da sub-rede foi criado, use o
comando gcloud compute networks subnets describe
.
Crie uma sub-rede.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
O resultado será assim:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Liste as sub-redes.
gcloud compute networks subnets list
O resultado será assim:
NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Colete detalhes em uma sub-rede para ver os intervalos secundários.
gcloud compute networks subnets describe my-subnet --region us-central1
O resultado será assim:
... ipCidrRange: 10.9.0.0/16 ... secondaryIpRanges: - ipCidrRange: 172.16.0.0/12 rangeName: secondaryrange1 ...
O intervalo secundário da sub-rede especificado não existe
Ao criar uma VM, se você receber um erro dizendo que o intervalo secundário não existe, verifique:
- A sub-rede tem um intervalo secundário com o nome especificado.
- Você está criando sua VM dentro da sub-rede que contém o intervalo secundário.
É possível executar os comandos a seguir para ver esse erro:
Crie uma sub-rede com um intervalo secundário.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
O resultado será assim:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Crie uma instância em outra rede, como na rede padrão, em vez de fazer isso na sub-rede recém-criada.
gcloud compute instances create instance-1 \ --zone us-central1-a \ --network default
O resultado será assim:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-1 us-central1-a n1-standard-1 10.128.0.2 47.82.96.9 RUNNING
Tente atribuir um intervalo de IP do alias por meio da sub-rede criada na etapa 1. O comando falha porque o intervalo secundário está em uma sub-rede diferente da instância.
gcloud compute instances network-interfaces update instance-1 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
O resultado será assim:
ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
Crie outra instância. Desta vez, com a interface na sub-rede criada na etapa 1.
gcloud compute instances create instance-2 \ --zone us-central1-a \ --network-interface subnet=my-subnet
O resultado será assim:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-2 us-central1-a n1-standard-1 10.9.0.2 38.74.204.89 RUNNING
Adicione um intervalo de IP do alias à interface. Desta vez, o comando será concluído com êxito porque a interface e o intervalo secundário estão na mesma sub-rede.
gcloud compute instances network-interfaces update instance-2 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
O resultado será assim:
Updating network interface [nic0] of instance [instance-2]...done.
Não é possível adicionar e remover intervalos de IP secundários na mesma solicitação
Não é possível adicionar e remover intervalos de IP secundários de sub-redes no mesmo comando. Os comandos da CLI gcloud para adicionar e remover intervalos secundários preservam os intervalos existentes que não são modificados.
Para adicionar e remover intervalos, execute os dois comandos separadamente.
gcloud compute networks subnets update SUBNET_NAME \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update SUBNET_NAME \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
Para mais informações sobre esse comando, use
gcloud compute networks subnets update --help
.
Não é possível adicionar e remover intervalos de IP do alias simultaneamente
Não é possível adicionar e remover intervalos de IP do alias da VM na mesma solicitação. Antes de adicionar o novo intervalo, remova explicitamente o intervalo existente.
O comando da CLI do gcloud para atualizar intervalos de IP do alias não preserva os intervalos existentes. Portanto, a omissão de um intervalo é tratada como uma solicitação para excluir esse intervalo.
Por exemplo, se a VM atual tiver um intervalo de alias 10.9.27.0/24
e o novo
intervalo solicitado for /24
, o comando para solicitar /24
será
rejeitado porque será interpretado como a remoção de 10.9.27.0/24
e a adição de /24
.
Exemplo:
Crie um intervalo de IP de alias.
gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
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.
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.
Adicione o novo intervalo de IP de alias.
gcloud compute instances network-interfaces update vm --aliases "/24" Updating network interface [nic0] of instance [vm]...done.
Para mais informações sobre esse comando, use
gcloud compute instances network-interfaces update --help
.
Tags de origem da regra de firewall e conta de serviço de origem
A conta de serviço e as tags de origem do firewall só se expandem para os IPs da rede primária das instâncias correspondentes e não se aplicam a IPs do alias das instâncias correspondentes. Portanto, uma regra de firewall baseada em tags de origem não afeta o tráfego de um endereço IP do alias da instância. Os endereços IP do alias podem ser adicionados às regras de firewall como intervalos de origem ou de destino.
Problemas relacionados a VMs com várias interfaces e intervalos de IP de alias
Consulte Resolver problemas de VMs com várias interfaces de rede.
Ativar o alias de IP em imagens do Google Cloud desativa a ponte cbr0
em clusters autogerenciados do Kubernetes
Em imagens fornecidas pelo Google, o agente convidado do Google cria rotas locais para intervalos de endereços IP de alias. Para clusters autogerenciados do Kubernetes, configure o agente convidado do Google para que ele não crie rotas locais para intervalos de IP de alias. Essa etapa não é necessária para clusters do GKE porque o GKE desativa a criação de rotas locais para intervalos de IP de alias nas imagens de nó.
Sintomas:
Os pods do Kubernetes perderão o acesso à rede se a rota local criada pelo agente convidado remover o intervalo de IP do alias da interface
cbr0
.Uma captura de pacote no dispositivo ponte do Linux (
tcpdump -ni cbr arp
) mostra a falta de respostas ARP da interfacecbr0
, 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
ouens4
) em vez da ponte do contêiner. interface (cbr0
).
Correção:
Execute o comando apropriado listado em Pacotes instalados para o ambiente de convidado para determinar se a VM do nó está executando o agente de convidado do Google ou um pacote anterior do Compute Engine.
Se a VM do nó não estiver executando o agente convidado do Google, instale o agente convidado ou use uma imagem mais recente fornecida pelo Google.
Configure o agente convidado do Google para pular a criação de rotas locais para intervalos de IP de alias e regras de encaminhamento.
Edite
/etc/default/instance_configs.cfg
, definindoip_forwarding=false
na seção[NetworkInterfaces]
. É possível criar a seção[NetworkInterfaces]
, se ela ainda não estiver presente no arquivoinstance_configs.cfg
.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
, executesudo systemctl restart google-guest-agent.service
. Em seguida, edite a tabela de rotas local para remover todas as entradas dos intervalos de endereços IP do alias. Por exemplo:sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
Substitua:
ALIAS_IP_RANGE
: o intervalo de endereços IP do alias.DEVICE_IDENTIFIER
: o identificador da interface de rede. Por exemplo,ens4
oueth0
.
Para mais informações, consulte Configuração na documentação do agente convidado do Google.
A seguir
- Saiba mais sobre instâncias.