Configurar o roteamento para uma interface de rede adicional


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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the 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:

Figura 1. Neste tutorial, você criará duas redes VPC, e cada uma terá duas sub-redes. Todas as sub-redes estão na mesma região. Além disso, você cria três VMs: uma VM com várias NICs que é anexada às duas primeiras sub-redes e uma VM em cada uma das duas sub-redes restantes (clique para ampliar).

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 de 10.10.1.0/24.
    • Uma sub-rede chamada subnet-3 que tem um intervalo de endereços IPv4 principal de 10.10.3.0/24.
  • 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 de 10.10.2.0/24.
    • Uma sub-rede chamada subnet-4 que tem um intervalo de endereços IPv4 principal de 10.10.4.0/24.

Console

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. No campo Nome, insira um nome para a rede VPC.

  4. Escolha Personalizado para o Modo de criação da sub-rede.

  5. Na seção Nova sub-rede, especifique o seguinte:

    1. Forneça um Nome para a sub-rede.
    2. 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.
    3. 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.

    4. Clique em Concluído.

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

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

    1. Em Intervalos IPv4, mantenha as caixas de seleção marcadas para os intervalos de endereços IPv4 das sub-redes.
    2. 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.
    3. Em Protocolos e portas, selecione Portas e protocolos especificados.
      1. Selecione TCP e insira 22, 3389 para permitir RDP e SSH.
      2. Selecione Outro e insira icmp para permitir o ICMP.
  8. Clique em Criar.

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

  1. 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.
  2. 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.

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

  4. 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.
    • 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. Incluir 10.10.3.0/24 garante que você possa testar a conectividade de test-vm-1 para a interface nic0 do multi-nic-vm. Incluir 35.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. Incluir 10.10.4.0/24 garante que você possa testar a conectividade de test-vm-2 com a interface nic0 do multi-nic-vm. Incluir 35.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.
  5. 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

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. No campo Nome, insira um nome para a instância. Isso corresponde a multi-nic-vm na configuração de exemplo.

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

  4. No campo Zona, selecione uma zona.

  5. Na seção Opções avançadas, expanda Rede e faça o seguinte:

    1. 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 e subnet-1 na configuração de exemplo.
    2. 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.
    3. Em Endereço IPv4 externo, selecione um None.

    4. Para adicionar outra interface, clique em Adicionar interface de rede.

    5. Em Rede e Sub-rede, selecione a segunda rede e sub-rede que você criou. Isso corresponde a network-2 e subnet-2 na configuração de exemplo.

    6. Em Tipo de pilha de IP, selecione IPv4 (pilha única).

    7. 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.
    8. Em Endereço IPv4 externo, selecione um None.

    9. Para concluir a adição da interface de rede, clique em Concluído.

  6. 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 a multi-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 a network-1 na configuração de exemplo.
    • NIC0_SUBNET: a sub-rede em que a interface é anexada. Isso corresponde a subnet-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, insira 10.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 a network-2 na configuração de exemplo.
    • NIC1_SUBNET: a sub-rede em que a interface é anexada. Isso corresponde a subnet-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, insira 10.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 a test-vm-1 em subnet-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 a test-vm-2 em subnet-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

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. No campo Nome, insira um nome para a instância.

  3. No campo Região, selecione a região em que você colocou a sub-rede adicional na sua primeira rede VPC.

  4. No campo Zona, selecione uma zona.

  5. Na seção Opções avançadas, expanda Rede e faça o seguinte:

    1. Consulte a seção Interfaces de rede. Verifique se a sub-rede é diferente da usada pela interface nic0 da VM multi-NIC.
  6. Clique em Criar.

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

  1. Execute o comando instances create e inclua a sinalização --network-interface para cada interface, seguida por qualquer chave de rede adequada, como network e subnet. , private-network-ip ou address.

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

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. 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 e nic1.

gcloud

  1. Execute o comando instances list:

    gcloud compute instances list
    
  2. 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 rede nic0 e nic1.

Dê um ping na interface nic0 da VM

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

    1. Na linha da instância, clique em SSH.
  2. 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, insira 10.10.1.3.

    O ping foi concluído.

  3. Execute exit para fechar a janela do terminal.

Dê um ping na interface nic1 da VM

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

    1. Na linha da instância, clique em SSH.
  2. 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, insira 10.10.2.3.

    O ping falhou.

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

  1. Ative o console serial seguindo as etapas em Como ativar o acesso para uma instância de VM.

  2. Para evitar perder a conectividade com a VM enquanto você altera a rota padrão, conecte-se ao console serial.

  3. Execute ip link list para listar as interfaces de rede da VM e registre o nome da interface nic1, como ens5.

  4. 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 interface nic1 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 a 10.10.2.3 na configuração de exemplo.
    • NIC: o nome da interface nic1 da etapa anterior.
  5. 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, como route-nic1.

  6. 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 a 10.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 a 10.10.2.3 na configuração de exemplo.
  7. 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 a 10.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.
  8. 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. 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

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Marque as instâncias que você quer excluir.

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

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique no nome de uma rede VPC para mostrar a página Detalhes da rede VPC.

  3. Clique em Excluir rede VPC.

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