Configure o encaminhamento para uma interface de rede adicional

Este tutorial descreve como criar uma instância de máquina virtual (VM) com várias interfaces de rede, cada uma das quais está associada a diferentes redes da nuvem virtual privada (VPC). Além disso, o tutorial fornece um exemplo de como configurar o encaminhamento numa VM do Linux para que possa enviar um ping com êxito para a interface nic1.

A configuração de encaminhamento neste tutorial aplica-se a ambos os tipos de interfaces de rede: vNICs e interfaces de rede dinâmicas (NICs). Embora o exemplo neste tutorial use uma instância com várias vNICs, pode configurar o mesmo exemplo para uma instância que tenha NICs dinâmicas.

As instâncias com várias interfaces de rede são denominadas instâncias com várias NICs.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Exemplo de configuração

O diagrama seguinte mostra as redes VPC, as sub-redes e as instâncias que cria neste tutorial, juntamente com valores de exemplo que pode usar para nomes de recursos e intervalos de endereços IP de sub-redes:

Figura 1. Neste tutorial, cria duas redes de VPC que têm duas sub-redes cada. Todas as sub-redes estão na mesma região. Além disso, cria três instâncias: uma instância com várias NICs que se anexa às duas primeiras sub-redes e uma instância em cada uma das duas sub-redes restantes (clique para ampliar).

Crie duas redes VPC

Para criar uma instância com várias NICs, as redes VPC às quais a está a ligar têm de existir. Crie duas redes de VPC. Neste tutorial, cada rede da VPC tem duas sub-redes.

Para criar a configuração apresentada na configuração de exemplo, crie as suas redes e sub-redes com os seguintes valores:

  • Uma rede denominada network-1 que contém o seguinte:
    • Uma sub-rede denominada subnet-1 que tem um intervalo de endereços IPv4 principal de 10.10.1.0/24.
    • Uma sub-rede denominada subnet-3 que tem um intervalo de endereços IPv4 principal de 10.10.3.0/24.
  • Uma rede denominada network-2 que contém o seguinte:

    • Uma sub-rede denominada subnet-2 que tem um intervalo de endereços IPv4 principal de 10.10.2.0/24.
    • Uma sub-rede denominada subnet-4 que tem um intervalo de endereços IPv4 principal de 10.10.4.0/24.

Consola

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

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

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

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

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

    1. Indique um Nome para a sub-rede.
    2. Selecione uma região. Certifique-se de que ambas as redes VPC que criar usam a mesma região para, pelo menos, uma das respetivas sub-redes. Use esta mesma região quando criar a instância com várias NICs na secção seguinte. A configuração de exemplo usa a mesma região para todas as sub-redes.
    3. Introduza um intervalo de endereços IP. Este é o intervalo IPv4 principal para a sub-rede.

      Se selecionar um intervalo que não seja um endereço RFC 1918, confirme que o intervalo não entra em conflito com uma configuração existente. Para mais informações, consulte os intervalos de sub-redes IPv4.

    4. Clique em Concluído.

  6. Clique em Adicionar sub-rede para criar uma segunda sub-rede. Use esta segunda sub-rede para testar ping a partir do exterior do intervalo de sub-redes principal da interface de rede da sua instância.

  7. Na secção Regras da firewall, selecione a regra allow-custom e, de seguida, clique em EDITAR. Configure a regra da seguinte forma para garantir que pode testar a conetividade das instâncias de teste para multi-nic-vm:

    1. Em Intervalos IPv4, mantenha as caixas de verificação selecionadas para os intervalos de endereços IPv4 das sub-redes.
    2. Em Outros intervalos IPv4, introduza 35.235.240.0/20 para poder ligar-se às instâncias de teste através de SSH. A inclusão deste intervalo permite ligações SSH através do encaminhamento TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte o artigo Permita ligações SSH de entrada a VMs.
    3. Em Protocolos e portas, selecione protocolos e portas especificados.
      1. Selecione TCP e, de seguida, introduza 22, 3389 para permitir RDP e SSH.
      2. Selecione Outro e, de seguida, introduza icmp para permitir o ICMP.
  8. Clique em Criar.

  9. Repita estes passos para criar uma segunda rede VPC. Certifique-se de que os intervalos de endereços IP de sub-redes não se sobrepõem às sub-redes da sua 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 de VPC.

    gcloud compute networks create NETWORK --subnet-mode=custom
    

    Substitua o seguinte:

    • NETWORK: um nome para a rede da VPC.
  2. Use o comando networks subnets create para criar uma sub-rede para a sua rede VPC.

    gcloud compute networks subnets create NAME \
      --network=NETWORK \
      --range=RANGE \
      --region=REGION
    

    Substitua o seguinte:

    • NAME: um nome para a sub-rede.
    • NETWORK: o nome da rede VPC.
    • RANGE: um intervalo de endereços IP. Este é o intervalo IPv4 principal para a sub-rede.

      Se introduzir um intervalo que não seja um endereço RFC 1918, confirme que o intervalo não entra em conflito com uma configuração existente. Para mais informações, consulte o artigo Intervalos de sub-redes IPv4.

    • REGION: uma região. Certifique-se de que ambas as redes VPC que criar usam a mesma região para, pelo menos, uma das respetivas sub-redes. Use esta mesma região quando criar a instância com várias NICs na secção seguinte. A configuração de exemplo usa a mesma região para todas as sub-redes.

  3. Repita o passo anterior para criar outra sub-rede. Use esta segunda sub-rede para testar ping a partir do exterior do intervalo de sub-redes principal da interface de rede da sua instância.

  4. Crie uma regra de firewall para permitir 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 o seguinte:

    • NETWORK: introduza o valor que corresponde à rede que está a criar:
      • Para a primeira rede, introduza network-1.
      • Quando repetir os passos desta secção para a segunda rede, introduza network-2.
    • SOURCE_RANGE: introduza o valor que corresponde à rede que está a criar:
      • Para a primeira rede, introduza 10.10.3.0/24, 35.235.240.0/20. A inclusão de 10.10.3.0/24 garante que pode testar a conetividade de test-vm-1 para a interface nic0 do multi-nic-vm. A inclusão de 35.235.240.0/20 permite ligações SSH através do encaminhamento TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte o artigo Permitir ligações SSH de entrada a VMs.
      • Quando repetir os passos desta secção para a segunda rede, introduza 10.10.4.0/24, 35.235.240.0/20. A inclusão de 10.10.4.0/24 garante que pode testar a conetividade de test-vm-2 para a interface nic0 do multi-nic-vm. A inclusão de 35.235.240.0/20 permite ligações SSH através do encaminhamento TCP do Identity-Aware Proxy (IAP). Para mais informações, consulte o artigo Permita ligações SSH de entrada a VMs.
  5. Repita estes passos para criar uma segunda rede VPC. Certifique-se de que os intervalos de endereços IP de sub-redes não se sobrepõem às sub-redes da sua primeira rede, como os intervalos de endereços IP usados na configuração de exemplo.

Crie uma instância com várias NICs

Crie uma instância que tenha uma interface para cada rede VPC que criou na secção anterior.

Para criar uma instância com várias NICs:

Consola

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

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

  3. No campo Região, selecione a mesma região em que criou uma sub-rede em cada uma das suas redes de VPC. A instância tem de estar na mesma região que as sub-redes às quais as respetivas interfaces se ligam. A configuração de exemplo usa a mesma região para todas as sub-redes.

  4. No campo Zona, selecione uma zona.

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

    1. Reveja a secção Interfaces de rede. Google Cloud preenche automaticamente a primeira interface de rede com uma rede e uma sub-rede. Isto corresponde a network-1 e subnet-1 na configuração de exemplo.
    2. Para Endereço IPv4 interno principal, selecione uma das seguintes opções:
      • Efémero para atribuir um novo endereço IPv4 efémero
      • 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 estiver a usar a configuração de exemplo, reserve 10.10.1.3.
    3. Para Endereço IPv4 externo, selecione um None.

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

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

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

    7. Para Endereço IPv4 interno principal, selecione uma das seguintes opções:

      • Efémero para atribuir um novo endereço IPv4 efémero
      • 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 estiver a usar a configuração de exemplo, reserve 10.10.2.3.
    8. Para Endereço IPv4 externo, selecione um None.

    9. Para terminar de adicionar a interface de rede, clique em Concluído.

  6. Clique em Criar.

gcloud

Para criar interfaces de rede numa nova instância, use o comando instances create.

Inclua a flag --network-interface para cada interface, seguida de quaisquer chaves de rede adequadas, como network, subnet e private-network-ip. Para o endereço IP externo, o comando seguinte 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 o seguinte:

  • INSTANCE_NAME: o nome da instância a criar. Isto corresponde a multi-nic-vm na configuração de exemplo.
  • ZONE: a zona onde a instância é criada. Introduza uma zona na mesma região em que criou uma sub-rede em cada uma das suas redes VPC. A instância tem de estar na mesma região que as sub-redes às quais as respetivas interfaces se ligam. A configuração de exemplo usa a mesma região para todas as sub-redes.
  • Valores para a primeira interface:
    • NIC0_NETWORK: a rede à qual a interface está associada. Isto corresponde a network-1 na configuração de exemplo.
    • NIC0_SUBNET: a sub-rede à qual a interface está anexada. Isto corresponde a subnet-1 na configuração de exemplo.
    • NIC0_INTERNAL_IPV4_ADDRESS: o endereço IPv4 interno que quer que a interface tenha na sub-rede de destino. Se estiver a usar a configuração de exemplo, introduza 10.10.1.3. Omita se quiser apenas qualquer endereço válido atribuído.
  • Valores para a segunda interface
    • NIC1_NETWORK: a rede à qual a interface está associada. Isto corresponde a network-2 na configuração de exemplo.
    • NIC1_SUBNET: a sub-rede à qual a interface está anexada. Isto corresponde a subnet-2 na configuração de exemplo.
    • NIC1_INTERNAL_IPV4_ADDRESS: o endereço IPv4 interno que quer que a interface tenha na sub-rede de destino. Se estiver a usar a configuração de exemplo, introduza 10.10.2.3. Omita se quiser apenas qualquer endereço válido atribuído.

Crie duas instâncias de teste

Crie duas instâncias adicionais:

  • Uma na mesma rede, mas numa sub-rede diferente, como a interface nic0 da instância com várias NICs que criou. Isto corresponde a test-vm-1 em subnet-3 na configuração de exemplo.
  • Uma na mesma rede, mas numa sub-rede diferente, como a interface nic1 da instância com várias NICs que criou. Isto corresponde a test-vm-2 em subnet-4 na configuração de exemplo.

Usa estas instâncias para testes ping das sub-redes que estão fora do intervalo de sub-redes principal da sua instância que tem várias interfaces de rede.

Para criar as instâncias:

Consola

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

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

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

  4. No campo Zona, selecione uma zona.

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

    1. Reveja a secção Interfaces de rede. Certifique-se de que a sub-rede é diferente da usada pela interface nic0 da sua instância com várias NICs.
  6. Clique em Criar.

  7. Repita estes passos para criar uma instância na segunda rede VPC e numa sub-rede diferente da da interface nic1 da instância com várias NICs.

gcloud

  1. Execute o comando instances create e inclua a marca --network-interface para cada interface, seguida de quaisquer chaves de rede adequadas, como network, 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 o seguinte:

    • INSTANCE_NAME: o nome da instância a criar.
    • ZONE: a zona onde a instância é criada. Introduza a região na qual colocou a sub-rede adicional na sua primeira rede VPC, ou seja, a sub-rede que não é usada pela instância com várias NICs.
    • NIC0_NETWORK: a rede à qual a interface está associada.
    • NIC0_SUBNET: a sub-rede à qual a interface está anexada.
    • NIC0_INTERNAL_IPV4_ADDRESS: o endereço IPv4 interno que quer que a interface tenha na sub-rede de destino. Omita se quiser apenas que seja atribuída uma morada válida.
  2. Repita o passo anterior para criar uma instância na segunda rede VPC e numa sub-rede diferente da da interface nic1 da instância com várias NICs.

Teste a conetividade à instância com várias NICs

Siga os passos nesta secção para testar o ping a partir das instâncias adicionais que criou para cada interface da sua instância com várias interfaces de rede.

A tabela seguinte mostra os cenários em que pode enviar um ping com êxito neste ponto do tutorial usando os valores do endereço IP da configuração de exemplo.

De Para ping successful
Instância (test-vm-1) na mesma rede, mas numa sub-rede diferente, que a interface nic0 do multi-nic-vm. Endereço IP interno (10.10.1.3) da interface nic0 de multi-nic-vm
Instância (test-vm-2) na mesma rede, mas numa 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

Obtenha os endereços IP da instância com várias NICs

Se necessário, obtenha os endereços IP da interface da sua instância com várias NICs para que possa enviar-lhes um ping nas secções seguintes.

Consola

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

    Aceder às instâncias de VM

  2. Na lista de instâncias, encontre a instância com várias NICs que criou e registe estes valores para que possa enviar-lhes um ping nos passos seguintes:

    • Os endereços IP interno das respetivas interfaces nic0 e nic1

gcloud

  1. Execute o comando instances list:

    gcloud compute instances list
    
  2. Localize a instância com várias NICs e registe o seguinte a partir do resultado:

    • INTERNAL_IP: o primeiro e o segundo endereços correspondem às interfaces de rede nic0 e nic1.

Envie um ping para a interface nic0 da sua instância

  1. Na lista de instâncias, localize a instância que criou na mesma rede, mas numa sub-rede diferente, que a interface nic0 da instância com várias NICs.

    1. Na linha da instância, clique em SSH.
  2. Execute o seguinte comando para enviar um ping para o endereço IP interno da interface nic0 da sua instância com várias NICs:

    ping INTERNAL_IP_NIC0
    

    Substitua INTERNAL_IP_NIC0 pelo endereço correspondente que gravou anteriormente. Se estiver a usar a configuração de exemplo, introduza 10.10.1.3.

    Repare que o ping é bem-sucedido.

  3. Execute exit para fechar a janela do terminal.

Envie um ping para a interface nic1 da sua instância

  1. Na lista de instâncias, localize a instância que criou na mesma rede, mas numa sub-rede diferente, que a interface nic1 da instância com várias NICs.

    1. Na linha da instância, clique em SSH.
  2. Execute o seguinte comando para enviar um ping para o endereço IP interno da segunda interface da sua instância com várias NICs:

    ping INTERNAL_IP_NIC1
    

    Substitua INTERNAL_IP_NIC1 pelo endereço correspondente que gravou anteriormente. Se estiver a usar a configuração de exemplo, introduza 10.10.2.3.

    Repare que o ping não tem êxito.

  3. Execute exit para fechar a janela do terminal.

Configure o encaminhamento de políticas

O teste de ping na secção anterior falhou devido ao encaminhamento assimétrico. O tráfego é enviado para a interface nic1 de multi-nic-vm, mas a rota predefinida para a instância faz com que as respostas sejam enviadas a partir de nic0. Para mais informações, consulte as Especificações na vista geral das várias interfaces de rede.

Siga os passos nesta secção para configurar o encaminhamento de políticas e certificar-se de que os pacotes de saída saem através da interface correta.

Este tutorial usa VMs do Linux. O encaminhamento de políticas baseado na origem não é suportado pelos sistemas operativos Windows.

Encontre o gateway predefinido para a interface nic1 da instância

Pode encontrar o gateway predefinido da interface de uma instância consultando o servidor de metadados. Se estiver a usar a configuração de exemplo, o valor é 10.10.2.1.

Para encontrar o gateway predefinido do endereço IPv4 da interface nic1, faça o seguinte pedido a partir da instância com várias NICs:

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google"

Para encontrar o gateway predefinido para uma interface de rede diferente, especifique o número da interface adequado. Para encontrar o nome que foi Google Cloud atribuído à interface, consulte o artigo Obtenha os endereços IP da instância com várias NICs. É diferente do nome da interface atribuído pelo sistema operativo. A interface tem o formato nicNUMBER. No seu pedido ao servidor de metadados, introduza apenas o número. Por exemplo, para nic2, especifique 2.

Configure uma nova tabela de encaminhamento na instância com várias NICs

Esta secção descreve como configurar uma nova tabela de encaminhamento na instância com várias NICs.

  1. Ative a consola série seguindo os passos em Ativar o acesso para uma instância de VM.

  2. Para evitar perder a conetividade com a instância enquanto altera a rota predefinida, ligue-se à consola série.

  3. Execute ip link list para listar as interfaces de rede da sua instância e, em seguida, registe o nome da interface nic1, como ens5.

  4. Execute o seguinte comando para garantir que a interface nic1 está configurada com um endereço IP.

    ip addr show NIC
    

    Substitua NIC pelo nome da interface nic1 do passo anterior.

    Se não tiver sido atribuído automaticamente um endereço IP à interface nic1, pode atribuir manualmente um endereço IP executando o seguinte comando:

    sudo ip addr add IP_ADDRESS dev NIC
    

    Substitua o seguinte:

    • IP_ADDRESS: o endereço IP interno a configurar na interface. Isto corresponde a 10.10.2.3 na configuração de exemplo.
    • NIC: o nome da interface nic1 do passo 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 predefinida na tabela de rotas personalizada destinada à interface de rede nic1 e uma rota com uma sugestão de origem para pacotes enviados para o 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 o seguinte:

    • GATEWAY: o endereço IP do gateway predefinido da interface. Isto corresponde a 10.10.2.1 na configuração de exemplo.
    • NIC: a interface para a qual 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. Isto corresponde a 10.10.2.3 na configuração de exemplo.
  7. Crie regras de encaminhamento que indiquem à instância para usar a tabela de rotas personalizada 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 o seguinte:

    • IP_ADDRESS: o endereço IP interno configurado na interface. Isto corresponde a 10.10.2.3 na configuração de exemplo.
    • PREFIX_LENGTH: o comprimento do prefixo para o endereço IP configurado.
    • ROUTE_TABLE_NAME: o nome da sua tabela de rotas.
  8. Execute o seguinte comando para remover todas as entradas da tabela de rotas da cache. Isto pode ser necessário se estiver a usar uma instância existente com tabelas de rotas configuradas anteriormente.

    sudo ip route flush cache
    

Teste novamente a conetividade à instância com várias NICs

A tabela seguinte mostra os cenários em que pode enviar um ping com êxito agora que configurou o encaminhamento de políticas. Repita os passos para enviar um ping para a interface nic1 da sua instância para confirmar que agora pode enviar um ping para ambos os endereços IP com êxito.

De Para ping successful
Instância (test-vm-1) na mesma rede, mas numa 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
Instância (test-vm-2) na mesma rede, mas numa 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