Neste tutorial, descrevemos como criar uma instância de máquina virtual (VM) com várias interfaces de rede, cada uma anexada a diferentes redes de nuvem privada virtual (VPC). Além disso, o tutorial fornece um exemplo de como configurar o roteamento em uma VM do Linux para que seja possível dar um ping na interface nic1
.
As VMs com vários controladores de interface de rede são chamadas de VMs multi-NIC.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
Exemplo de configuração
O diagrama a seguir mostra as redes VPC, sub-redes e VMs criadas neste tutorial, além de valores de exemplo que podem ser usados para nomes de recursos e intervalos de endereços IP de sub-redes:
Criar duas redes VPC
Para criar uma VM multi-NIC, é necessário que as redes VPC a que você está conectando já existam. Criar duas redes VPC. Neste tutorial, cada rede VPC tem duas sub-redes.
Para criar a configuração mostrada no exemplo de configuração, crie suas redes e sub-redes com os seguintes valores:
- Uma rede chamada
network-1
que contém o seguinte:- Uma sub-rede chamada
subnet-1
que tem um intervalo de endereços IPv4 principal de10.10.1.0/24
. - Uma sub-rede chamada
subnet-3
que tem um intervalo de endereços IPv4 principal de10.10.3.0/24
.
- Uma sub-rede chamada
Uma rede chamada
network-2
que contém o seguinte:- Uma sub-rede chamada
subnet-2
que tem um intervalo de endereços IPv4 principal de10.10.2.0/24
. - Uma sub-rede chamada
subnet-4
que tem um intervalo de endereços IPv4 principal de10.10.4.0/24
.
- Uma sub-rede chamada
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
No campo Nome, insira um nome para a rede VPC.
Escolha Personalizado para o Modo de criação da sub-rede.
Na seção Nova sub-rede, especifique o seguinte:
- Forneça um Nome para a sub-rede.
- Selecione uma Região. Verifique se as duas redes VPC que você criou usam a mesma região para pelo menos uma de suas sub-redes. Use essa mesma região quando criar a VM com várias placas de rede (NIC, na sigla em inglês) na seção a seguir. A configuração de exemplo usa a mesma região para todas as sub-redes.
Digite um Intervalo de endereço IP. Esse é o intervalo IPv4 principal da sub-rede.
Se você selecionar um intervalo que não seja um endereço RFC 1918, confirme se não há incompatibilidade entre o intervalo e uma configuração existente. Para mais informações, consulte Intervalos de sub-rede IPv4.
Clique em Concluído.
Clique em Adicionar sub-rede para criar uma segunda sub-rede. Use essa segunda sub-rede para testar
ping
de fora do intervalo de sub-rede principal da interface de rede da instância de VM.Na seção Regras de firewall, selecione a regra allow-custom e clique em EDITAR. Configure a regra da seguinte maneira para garantir que é possível testar a conectividade das VMs de teste com
multi-nic-vm
:- Em Intervalos IPv4, mantenha as caixas de seleção marcadas para os intervalos de endereços IPv4 das sub-redes.
- Em Outros intervalos IPv4, insira
35.235.240.0/20
para se conectar às VMs de teste usando SSH. A inclusão desse intervalo permite conexões SSH usando o encaminhamento de TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte Permitir conexões SSH de entrada para VMs. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Selecione TCP e insira
22, 3389
para permitir RDP e SSH. - Selecione Outro e insira
icmp
para permitir o ICMP.
- Selecione TCP e insira
Clique em Criar.
Repita essas etapas para criar uma segunda rede VPC. Verifique se os intervalos de endereços IP da sub-rede não se sobrepõem às sub-redes da primeira rede, como os intervalos de endereços IP usados na configuração de exemplo.
gcloud
Use o comando
networks create
para criar uma rede VPC.gcloud compute networks create NETWORK --subnet-mode=custom
Substitua:
NETWORK
: um nome para a rede VPC.
Use o comando
networks subnets create
para criar uma sub-rede para a rede VPC.gcloud compute networks subnets create NAME \ --network=NETWORK \ --range=RANGE \ --region=REGION
Substitua:
NAME
: um nome para a sub-rede.NETWORK
: o nome da rede VPC.RANGE
: um intervalo de endereços IP. Esse é o intervalo IPv4 principal da sub-rede.Se você inserir um intervalo que não seja um endereço RFC 1918, confirme se não há incompatibilidade entre o intervalo e uma configuração existente. Para mais informações, consulte Intervalos de sub-rede IPv4.
REGION
: uma região. Verifique se as duas redes VPC que você criou usam a mesma região para pelo menos uma de suas sub-redes. Use essa mesma região quando criar a VM com várias placas de rede (NIC, na sigla em inglês) na seção a seguir. A configuração de exemplo usa a mesma região para todas as sub-redes.
Repita a etapa anterior para criar outra sub-rede. Use essa segunda sub-rede para testar
ping
de fora do intervalo de sub-rede principal da interface de rede da instância de VM.Crie uma regra de firewall que permita SSH, RDP e ICMP:
gcloud compute firewall-rules create allow-ssh-rdp-icmp \ --network NETWORK \ --action=ALLOW \ --direction=INGRESS \ --rules=tcp:22,tcp:3389,icmp \ --source-ranges=SOURCE_RANGE
Substitua:
NETWORK
: insira o valor que corresponde à rede que você está criando:- Para a primeira rede, insira
network-1
. - Quando você repetir as etapas desta seção para a segunda rede, insira
network-2
.
- Para a primeira rede, insira
SOURCE_RANGE
: insira o valor que corresponde à rede que você está criando:- Para a primeira rede, insira
10.10.3.0/24, 35.235.240.0/20
. Incluir10.10.3.0/24
garante que você possa testar a conectividade detest-vm-1
para a interfacenic0
domulti-nic-vm
. Incluir35.235.240.0/20
permite conexões SSH usando o encaminhamento de TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte Permitir conexões SSH de entrada para VMs. - Quando você repetir as etapas desta seção para a segunda rede,
insira
10.10.4.0/24, 35.235.240.0/20
. Incluir10.10.4.0/24
garante que você possa testar a conectividade detest-vm-2
com a interfacenic0
domulti-nic-vm
. Incluir35.235.240.0/20
permite conexões SSH que usam o encaminhamento de TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte Permitir conexões SSH de entrada para VMs.
- Para a primeira rede, insira
Repita essas etapas para criar uma segunda rede VPC. Verifique se os intervalos de endereços IP da sub-rede não se sobrepõem às sub-redes da primeira rede, como os intervalos de endereços IP usados na configuração de exemplo.
Criar uma VM multi-NIC
Crie uma instância de VM que tenha uma interface para cada rede VPC criada na seção anterior.
Para criar uma VM multi-NIC:
Console
No console do Google Cloud, acesse a página Criar uma instância.
No campo Nome, insira um nome para a instância. Isso corresponde a
multi-nic-vm
na configuração de exemplo.No campo Região, selecione a mesma região em que você criou uma sub-rede em cada uma das redes VPC. A instância de VM precisa estar na mesma região que as sub-redes a que as interfaces se conectam. A configuração de exemplo usa a mesma região para todas as sub-redes.
No campo Zona, selecione uma zona.
Na seção Opções avançadas, expanda Rede e faça o seguinte:
- Consulte a seção Interfaces de rede. O Google Cloud preenche automaticamente a primeira interface de rede com uma rede e uma sub-rede. Isso corresponde a
network-1
esubnet-1
na configuração de exemplo. - Em Endereço IPv4 interno principal, selecione uma das seguintes opções:
- Temporário para atribuir um novo endereço IPv4 temporário
- Um endereço IPv4 interno estático reservado da lista
- Reservar endereço IPv4 interno estático para reservar e atribuir um novo endereço IPv4 interno estático
Se você estiver usando a configuração de exemplo, reserve
10.10.1.3
.
Em Endereço IPv4 externo, selecione um
None
.Para adicionar outra interface, clique em Adicionar interface de rede.
Em Rede e Sub-rede, selecione a segunda rede e sub-rede que você criou. Isso corresponde a
network-2
esubnet-2
na configuração de exemplo.Em Tipo de pilha de IP, selecione IPv4 (pilha única).
Em Endereço IPv4 interno principal, selecione uma das seguintes opções:
- Temporário para atribuir um novo endereço IPv4 temporário
- Um endereço IPv4 interno estático reservado da lista
- Reservar endereço IPv4 interno estático para reservar e atribuir um novo endereço IPv4 interno estático
Se você estiver usando a configuração de exemplo, reserve
10.10.2.3
.
Em Endereço IPv4 externo, selecione um
None
.Para concluir a adição da interface de rede, clique em Concluído.
- Consulte a seção Interfaces de rede. O Google Cloud preenche automaticamente a primeira interface de rede com uma rede e uma sub-rede. Isso corresponde a
Clique em Criar.
gcloud
Para criar interfaces de rede em uma nova instância, use o
comando instances create
.
Inclua a sinalização --network-interface
para cada interface, seguida por qualquer chave de rede apropriada, como network
, subnet
e private-network-ip
. Para o endereço IP externo, o
comando a seguir especifica no-address
.
gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --network-interface \ network=NIC0_NETWORK,subnet=NIC0_SUBNET,private-network-ip=NIC0_INTERNAL_IPV4_ADDRESS,no-address \ --network-interface \ network=NIC1_NETWORK,subnet=NIC1_SUBNET,private-network-ip=NIC1_INTERNAL_IPV4_ADDRESS,no-address
Substitua:
INSTANCE_NAME
: o nome da instância de VM a ser criada. Isso corresponde amulti-nic-vm
na configuração de exemplo.ZONE
: a zona em que a instância é criada. Insira uma zona na mesma região em que você criou uma sub-rede em cada uma das redes VPC. A instância de VM precisa estar na mesma região que as sub-redes a que as interfaces se conectam. A configuração de exemplo usa a mesma região para todas as sub-redes.- Valores da primeira interface:
NIC0_NETWORK
: a rede em que a interface é anexada. Isso corresponde anetwork-1
na configuração de exemplo.NIC0_SUBNET
: a sub-rede em que a interface é anexada. Isso corresponde asubnet-1
na configuração de exemplo.NIC0_INTERNAL_IPV4_ADDRESS
: o endereço IPv4 interno que você quer que a interface tenha na sub-rede de destino. Se você estiver usando a configuração de exemplo, insira10.10.1.3
. Omita se você quiser apenas qualquer endereço válido atribuído.
- Valores da segunda interface
NIC1_NETWORK
: a rede em que a interface é anexada. Isso corresponde anetwork-2
na configuração de exemplo.NIC1_SUBNET
: a sub-rede em que a interface é anexada. Isso corresponde asubnet-2
na configuração de exemplo.NIC1_INTERNAL_IPV4_ADDRESS
: o endereço IPv4 interno que você quer que a interface tenha na sub-rede de destino. Se você estiver usando a configuração de exemplo, insira10.10.2.3
. Omita se você quiser apenas qualquer endereço válido atribuído.
Criar duas VMs de teste
Crie mais duas instâncias de VM:
- Uma na mesma rede, mas em uma sub-rede diferente, que é igual à interface
nic0
da VM multi-NIC que você criou. Isso corresponde atest-vm-1
emsubnet-3
na configuração de exemplo. - Uma na mesma rede, mas em uma sub-rede diferente, que é igual à interface
nic1
da VM multi-NIC que você criou. Isso corresponde atest-vm-2
emsubnet-4
na configuração de exemplo.
Use essas instâncias de VM para testar a ping
das sub-redes que estão fora do intervalo de sub-rede principal da instância de VM que tem várias interfaces de rede.
Para criar as instâncias de VM:
Console
No console do Google Cloud, acesse a página Criar uma instância.
No campo Nome, insira um nome para a instância.
No campo Região, selecione a região em que você colocou a sub-rede adicional na sua primeira rede VPC.
No campo Zona, selecione uma zona.
Na seção Opções avançadas, expanda Rede e faça o seguinte:
- Consulte a seção Interfaces de rede. Verifique se a sub-rede
é diferente da usada pela interface
nic0
da VM multi-NIC.
- Consulte a seção Interfaces de rede. Verifique se a sub-rede
é diferente da usada pela interface
Clique em Criar.
Repita essas etapas para criar uma instância na segunda rede VPC e em uma sub-rede diferente daquela da interface
nic1
da VM multi-NIC.
gcloud
Execute o comando
instances create
e inclua a sinalização--network-interface
para cada interface, seguida por qualquer chave de rede adequada, comonetwork
esubnet
. ,private-network-ip
ouaddress
.gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --network-interface \ network=NIC0_NETWORK,subnet=NIC0_SUBNET, private-network-ip=NIC0_INTERNAL_IPV4_ADDRESS
Substitua:
INSTANCE_NAME
: o nome da instância de VM a ser criada.ZONE
: a zona em que a instância é criada. Insira a região em que você colocou a sub-rede extra na primeira rede VPC, ou seja, a sub-rede que não é usada pela VM multi-NIC.NIC0_NETWORK
: a rede em que a interface é anexada.NIC0_SUBNET
: a sub-rede em que a interface é anexada.NIC0_INTERNAL_IPV4_ADDRESS
: o endereço IPv4 interno que você quer que a interface tenha na sub-rede de destino. Omita se você quiser apenas qualquer endereço válido atribuído.
Repita a etapa anterior para criar uma instância na segunda rede VPC e em uma sub-rede diferente daquela da interface
nic1
da VM multi-NIC.
Testar a conectividade com a VM multi-NIC
Siga as etapas desta seção para testar o ping
das outras instâncias de VM
que você criou para cada interface da sua instância de VM com várias interfaces
de rede.
A tabela a seguir mostra os cenários em que é possível dar um ping neste momento no tutorial usando os valores de endereço IP do exemplo de configuração.
De | Para | ping successful |
---|---|---|
VM (test-vm-1 ) na mesma rede, mas em uma sub-rede diferente, que a interface nic0 de multi-nic-vm . |
Endereço IP interno (10.10.1.3 ) da interface nic0 de multi-nic-vm |
|
VM (test-vm-2 ) na mesma rede, mas em uma sub-rede diferente, que a
interface nic1 de multi-nic-vm
|
Endereço IP interno (10.10.2.3 ) da interface nic1 de multi-nic-vm |
Receber os endereços IP da VM multi-NIC
Se necessário, receba os endereços IP da interface da sua VM multi-NIC para que você possa dar um ping nelas nas seções a seguir.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Na lista de instâncias de VM, encontre a VM multi-NIC criada e registre esses valores para dar um ping nas etapas a seguir:
- Os endereços IP internos das interfaces
nic0
enic1
.
- Os endereços IP internos das interfaces
gcloud
Execute o comando
instances list
:gcloud compute instances list
Localize a VM com várias NICs e registre o seguinte na saída:
INTERNAL_IP
: o primeiro e o segundo endereços correspondem às interfaces de redenic0
enic1
.
Dê um ping na interface nic0
da VM
Na lista de instâncias de VM, localize a VM criada na mesma rede, mas em uma sub-rede diferente, como a interface
nic0
da VM multi-NIC.- Na linha da instância, clique em SSH.
Execute o seguinte comando para dar um ping no endereço IP interno da interface
nic0
da VM com várias placas de rede (NIC):ping INTERNAL_IP_NIC0
Substitua
INTERNAL_IP_NIC0
pelo endereço correspondente registrado anteriormente. Se você estiver usando a configuração de exemplo, insira10.10.1.3
.O ping foi concluído.
Execute
exit
para fechar a janela do terminal.
Dê um ping na interface nic1
da VM
Na lista de instâncias de VM, localize a instância que você criou na mesma rede, mas em uma sub-rede diferente, como a interface
nic1
da VM multi-NIC.- Na linha da instância, clique em SSH.
Execute o seguinte comando para dar um ping no endereço IP interno da segunda interface da VM multi-NIC:
ping INTERNAL_IP_NIC1
Substitua
INTERNAL_IP_NIC1
pelo endereço correspondente registrado anteriormente. Se você estiver usando a configuração de exemplo, insira10.10.2.3
.O ping falhou.
Execute
exit
para fechar a janela do terminal.
Configurar roteamento de política
O teste de ping na seção anterior falhou devido ao roteamento assimétrico.
O tráfego é enviado para a interface nic1
de multi-nic-vm
, mas a rota padrão
da VM resulta no envio de respostas por nic0
. Para mais informações, consulte Comportamento do DHCP com várias interfaces de rede.
Siga as etapas desta seção para configurar o roteamento de políticas e garantir que os pacotes de saída saiam pela interface correta.
Neste tutorial, usamos VMs do Linux. O roteamento de políticas com base na origem não é compatível com os sistemas operacionais Windows.
Encontre o gateway padrão para a interface nic1
da VM
Para encontrar o gateway padrão da interface de uma instância de VM, consulte o servidor de metadados. Se você estiver usando a configuração de exemplo,
o valor será 10.10.2.1
.
Para encontrar o gateway padrão do endereço IPv4 de uma interface, faça a seguinte solicitação na VM com várias placas de rede:
curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google"
Substitua INTERFACE_NUMBER
pelo número da
interface. Por exemplo, para encontrar o gateway padrão de nic1
, use 1
.
Configurar uma nova tabela de roteamento na VM multi-NIC
Esta seção descreve como configurar uma nova tabela de roteamento na VM multi-NIC.
Ative o console serial seguindo as etapas em Como ativar o acesso para uma instância de VM.
Para evitar perder a conectividade com a VM enquanto você altera a rota padrão, conecte-se ao console serial.
Execute
ip link list
para listar as interfaces de rede da VM e registre o nome da interfacenic1
, comoens5
.Execute o comando a seguir para garantir que a interface
nic1
esteja configurada com um endereço IP.ip addr show NIC
Substitua
NIC
pelo nome da interfacenic1
da etapa anterior.Se a interface
nic1
não tiver um endereço IP atribuído automaticamente, será possível atribuir manualmente um endereço IP executando o seguinte comando:sudo ip addr add IP_ADDRESS dev NIC
Substitua:
IP_ADDRESS
: o endereço IP interno a ser configurado na interface. Isso corresponde a10.10.2.3
na configuração de exemplo.NIC
: o nome da interfacenic1
da etapa anterior.
Crie uma tabela de rotas personalizada para a interface de rede
nic1
.echo "1 ROUTE_TABLE_NAME" | sudo tee -a /etc/iproute2/rt_tables
Substitua
ROUTE_TABLE_NAME
por um nome para a tabela de rotas, comoroute-nic1
.Crie a rota padrão na tabela de rotas personalizada destinada à interface de rede
nic1
e uma rota com uma dica de origem para pacotes enviados ao gateway.sudo ip route add default via GATEWAY dev NIC table ROUTE_TABLE_NAME sudo ip route add GATEWAY src IP_ADDRESS dev NIC table ROUTE_TABLE_NAME
Substitua:
GATEWAY
: o endereço IP padrão do gateway da interface. Isso corresponde a10.10.2.1
na configuração de exemplo.NIC
: a interface em que você quer adicionar uma rota. Por exemplo,ens5
.ROUTE_TABLE_NAME
: o nome da sua tabela de rotas.IP_ADDRESS
: o endereço IP interno configurado na interface. Isso corresponde a10.10.2.3
na configuração de exemplo.
Crie regras de roteamento que instruam a VM a usar a tabela de rotas personalizadas para pacotes com origens ou destinos que correspondam ao endereço IPv4 interno principal atribuído à interface
nic1
:sudo ip rule add from IP_ADDRESS/PREFIX_LENGTH table ROUTE_TABLE_NAME sudo ip rule add to IP_ADDRESS/PREFIX_LENGTH table ROUTE_TABLE_NAME
Substitua:
IP_ADDRESS
: o endereço IP interno configurado na interface. Isso corresponde a10.10.2.3
na configuração de exemplo.PREFIX_LENGTH
: o tamanho do prefixo do endereço IP configurado.ROUTE_TABLE_NAME
: o nome da sua tabela de rotas.
Execute o comando a seguir para remover todas as entradas da tabela de rotas do cache. Isso pode ser necessário se você estiver usando uma VM atual com tabelas de rotas configuradas anteriormente.
sudo ip route flush cache
Testar novamente a conectividade com a VM multi-NIC
A tabela a seguir mostra os cenários em que é possível dar um ping agora que você configurou o roteamento de políticas. Repita as etapas para dar um ping na interface nic1 da VM para confirmar que agora é possível dar um ping nos dois endereços IP.
De | Para | ping successful |
---|---|---|
VM (test-vm-1 ) na mesma rede, mas em uma sub-rede diferente, que a interface nic0 de multi-nic-vm . |
Endereço IP interno (10.10.1.3 ) da interface nic0 de multi-nic-vm |
|
VM (test-vm-2 ) na mesma rede, mas em uma sub-rede diferente, que a
interface nic1 de multi-nic-vm
|
Endereços IP internos (10.10.2.3 ) da interface nic1 do multi-nic-vm . |
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Exclua o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir recursos individuais
Se você não quiser excluir todo o projeto, exclua as redes VPC e instâncias de VM criadas para o tutorial.
Antes de excluir uma rede, é preciso excluir todos os recursos em todas as sub-redes respectivas e todos os recursos que fazem referência à rede.
Excluir instâncias
Para excluir instâncias:
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Marque as instâncias que você quer excluir.
Clique no botão Excluir.
gcloud
Use o
comando gcloud compute instances delete
.
Quando você exclui uma instância dessa forma, ela é encerrada e removida da lista de instâncias e todos os recursos anexados a ela são liberados, como discos permanentes e quaisquer endereços IP estáticos.
Para excluir uma instância, use o seguinte comando:
gcloud compute instances delete example-instance [example-instance-2 example-instance-3..]
Excluir redes VPC
Para excluir uma rede VPC:
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique no nome de uma rede VPC para mostrar a página Detalhes da rede VPC.
Clique em Excluir rede VPC.
Na mensagem que aparece, clique em Excluir para confirmar.
gcloud
Use o
comando networks delete
.
gcloud compute networks delete NETWORK
Substitua NETWORK
pelo nome da rede a ser removida.
A seguir
- Leia a visão geral de várias interfaces de rede.
- Leia Criar VMs com várias interfaces de rede.