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
ouauto
. As redes antigas têm um modo delegacy
.
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
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome de uma rede existente.
Clique em Adicionar sub-rede.
Introduza um nome para a nova sub-rede.
Especifique a região.
Introduza um intervalo de endereços IP na notação CIDR, por exemplo,
10.65.61.0/24
.Clique em Criar intervalo de IPs secundário.
Introduza um nome de intervalo de sub-rede.
Introduza um intervalo de IP secundário na notação CIDR, por exemplo,
10.9.0.0/24
.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.
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
eRANGE_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
eSECONDARY_RANGE_NAME_2
: os nomes a usar para os intervalos secundários.SECONDARY_IP_RANGE_1
eSECONDARY_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.
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
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome de uma sub-rede a modificar para ver a respetiva página de detalhes.
Clique em Edit.
Na secção Intervalos de IP secundários, clique em Adicionar intervalo de IP.
Introduza um nome para o nome do intervalo da sub-rede.
Introduza um intervalo para o Intervalo de IP secundário na notação CIDR, por exemplo,
10.9.0.0/24
.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.
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
eRANGE_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
eSECONDARY_RANGE_NAME_2
: os nomes a usar para os intervalos secundários.SECONDARY_IP_RANGE_1
eSECONDARY_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
Na Google Cloud consola, aceda à página Redes VPC.
Clique no nome de uma sub-rede a modificar para ver a respetiva página de detalhes.
Clique em Edit.
Na secção Intervalos de IP secundários, clique em X junto ao intervalo secundário que quer remover.
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
eRANGE_NAME_2
: os nomes dos intervalos secundários a remover da sub-rede de destinoSUBNET_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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em
Criar instância.Introduza um nome para a nova instância.
Especifique uma zona.
Clique em Rede.
Na secção Interfaces de rede, expanda a interface de rede predefinida.
Em Intervalos de IP de alias, clique em
Adicionar intervalo de IP.Deixe a opção Intervalo da sub-rede 1 definida como Principal.
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.
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
eRANGE_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 CloudCIDR_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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em
Criar instância.Introduza um nome para a nova instância.
Especifique uma zona.
Clique em Rede.
Na secção Interfaces de rede, expanda a interface de rede predefinida.
Em Intervalos de IP de alias, clique em
Adicionar intervalo de IP.Em Intervalo de sub-redes, selecione o intervalo de IP secundário a usar.
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.
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 CloudSECONDARY_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:
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Em Nome, introduza
my-network1
.Defina o Modo de criação de sub-rede como
Custom
e, em seguida, 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 intervalo de IPs secundário.
Defina o nome do intervalo de sub-redes como
range1
.Defina o 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:
Na Google Cloud consola, aceda à página Redes VPC.
Clique em Criar rede de VPC.
Em Nome, introduza
my-network2
.Defina o Modo de criação de sub-rede como
Custom
e, em seguida, especifique um nome de sub-rede demy-subnet2
.Para Região, especifique a mesma região que especificou para a primeira rede e sub-rede.
Defina o intervalo de endereços IP como
172.16.2.0/24
.Clique em Criar intervalo de IPs secundário.
Defina o nome do intervalo de sub-redes para
range2
.Defina o Intervalo de IP secundário como
10.2.0.0/16
.Clique em Concluído.
Clique em Criar.
Crie uma VM com interfaces em ambas as redes:
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique em
Criar instância.Defina a zona para a região onde criou as sub-redes.
Clique em Rede.
Clique na primeira interface de rede.
- Defina Rede como
my-network1
. - Defina Subnetwork como
my-subnet1
. - Clique em Intervalos de IP de alias.
- Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
Primary
. - Defina o intervalo de IPs de alias como
/32
. - Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
range1
. - Defina o intervalo de IPs de alias como
/24
. - Clique em Concluído.
- Defina Rede como
Clique em Adicionar interface de rede.
- Selecione
my-network2
. - Defina Subnetwork como
my-subnet2
. - Clique em Intervalos de IP de alias.
- Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
Primary
. - Defina o intervalo de IPs de alias como
/32
. - Clique em Adicionar intervalo de IP.
- Defina o Intervalo de sub-rede como
range2
. - Defina o intervalo de IPs de 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 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"
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
Crie duas redes VPC no modo personalizado com os nomes
my-network1
emy-network2
. Para mais informações, consulte o artigo Crie uma rede VPC no modo personalizado com apenas sub-redes IPv4.Adicione sub-redes às redes de VPC. Para mais informações, consulte o artigo Adicione uma sub-rede apenas IPv4.
Adicione uma sub-rede denominada
my-subnet1
amy-network1
. Especifique172.16.1.0/24
para o intervalo principal 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 principal e10.2.0.0/16
para o intervalo secundário com o nomerange2
.
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 CloudREGION
: 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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique no nome de uma instância existente.
Clique em Edit.
Em Interfaces de rede, clique na interface de rede à qual quer adicionar um intervalo de IPs de alias (
nic0
para este exemplo).Clique em Intervalos de IP de alias.
Clique em Adicionar intervalo de IP.
Selecione um intervalo de sub-rede.
Introduza um intervalo de IPs de alias.
Clique em Concluído.
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
eRANGE_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
eRANGE_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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique no nome de uma instância existente.
Clique em Edit.
Em Interfaces de rede, clique na interface de rede à qual quer adicionar um intervalo de IPs de alias (
nic0
para este exemplo).Clique em Intervalos de IP de alias.
Para adicionar um intervalo de IP de alias, clique em Adicionar intervalo de IP de alias.
Para remover um intervalo de IPs de alias, clique no X junto ao intervalo de IPs de alias.
Clique em Concluído.
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 formatoCURRENT_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
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 serauto
oucustom
.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.
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
Valide as regras de firewall.
Apresentar todas as regras de firewall:
gcloud compute firewall-rules list --format=json
Verifique se o tráfego de e para um intervalo de IPs de alias é permitido.
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
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.
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
Em
/etc/default/instance_configs.cfg
, certifique-se de que aip_aliases
definição está definida comotrue
. Se precisar de alterar esta definição, também tem de reiniciar o agente convidado:systemctl restart google-guest-agent
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.
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
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
.
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
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
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:
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
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
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.
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
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:
Crie um intervalo de IP de alias.
gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
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.
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.
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 interfacecbr0
, 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
ouens4
) em vez da interface de bridge do contentor (cbr0
).
Corrija:
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.
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.
Configure o agente convidado da Google para ignorar 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 secção[NetworkInterfaces]
. Pode criar a secção[NetworkInterfaces]
se ainda não estiver presente no ficheiroinstance_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 rotas local.Para reiniciar o serviço
google-guest-agent.service
, executesudo 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
oueth0
.
Para mais informações, consulte a secção Configuração na documentação do agente convidado da Google.
O que se segue?
- Leia mais acerca das instâncias.