Compartilhar via


Configurar vários adaptadores de rede em máquinas virtuais Linux do Azure

Aplica-se a: ✔️ VMs do Linux

Observação

O CentOS mencionado neste artigo é uma distribuição Linux e chegará ao fim da vida útil (EOL). Considere seu uso e planeje adequadamente. Para obter mais informações, consulte Diretrizes de fim da vida útil do CentOS.

Este artigo discute como configurar vários adaptadores de rede virtual em VMs (máquinas virtuais) Linux do Azure que executam as distribuições Linux mais comuns.

Resumo

Você pode criar uma VM do Azure que tenha vários adaptadores de rede anexados a ela. Um cenário comum é ter sub-redes diferentes para conectividade de front-end e back-end ou uma rede dedicada a uma solução de monitoramento ou backup.

Este artigo fornece a configuração necessária para que vários adaptadores de rede funcionem em uma VM Linux do Azure com base no seguinte cenário de exemplo:

  • A VM tem dois ou mais adaptadores de rede na mesma sub-rede.
  • A VM tem dois ou mais adaptadores de rede em sub-redes diferentes, mas na mesma VNET (Rede Virtual).

Para obter detalhes, consulte as seguintes capturas de tela:

Em cada cenário, a conectividade pode ser testada de qualquer VM na mesma VNET.

Importante

Esse mesmo processo também pode ser seguido em VMs com mais de duas NICs.

Configurar o sistema operacional convidado para várias interfaces de rede

Ao adicionar vários adaptadores de rede a uma VM do Linux, você precisa criar regras de roteamento. Essas regras permitem que a VM envie e receba tráfego que pertence a um adaptador de rede específico. Caso contrário, o tráfego não poderá ser processado corretamente. Por exemplo, o tráfego que pertence a eth1 não pode ser processado corretamente pela rota padrão definida.

As seções a seguir fornecem a configuração necessária para que dois adaptadores de rede funcionem em VMs do Linux que executam as distribuições Linux mais comuns.

Observação

Execute todos os comandos nas seções a seguir usando privilégios de root (alternando para a raiz ou usando o utilitário de sudo comando).

Em cada seção, suponha que a VM tenha dois adaptadores de rede que tenham qualquer uma das seguintes configurações:

  • Roteamento (a saída do sudo ip route show comando):

    • Duas NICs na mesma sub-rede:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
    • Duas NICs em sub-redes diferentes, mas na mesma VNET:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
  • Interfaces (a saída do sudo ip address show comando):

    • Duas NICs na mesma sub-rede:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.1.5/24 brd 10.0.1.255 scope global eth1
      
    • Duas NICs em sub-redes diferentes, mas na mesma VNET:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.2.5/24 brd 10.0.2.255 scope global eth1
      
  1. Adicione duas tabelas de roteamento ao arquivo /etc/iproute2/rt_tables executando os seguintes comandos (você precisa de uma entrada por NIC):

    sudo echo "200 eth0-rt" >> /etc/iproute2/rt_tables
    sudo echo "201 eth1-rt" >> /etc/iproute2/rt_tables
    

    Se mais interfaces de rede estiverem conectadas à VM, adicione tabelas de roteamento extras (por exemplo, 202 eth2-rt, 203 eth3-rt e assim por diante).

  2. Certifique-se de que exista um arquivo de configuração para cada interface de rede no diretório /etc/sysconfig/network-scripts/ . Você pode criar novos arquivos de configuração de interface de rede com base no arquivo de configuração ifcfg-eth0 (modifique a DEVICE linha e remova as DHCP_HOSTNAME linhas e HWADDR do novo arquivo). Para fazer isso, execute os seguintes comandos:

    sudo cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i 's/DEVICE=eth0/DEVICE=eth1/' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/DHCP_HOSTNAME/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    
  3. Para tornar a alteração persistente e aplicada durante a ativação da pilha de rede, edite os arquivos /etc/sysconfig/network-scripts/ifcfg-eth0 e /etc/sysconfig/network-scripts/ifcfg-eth1 (ifcfg-eth2, ifcfg-eth3 e assim por diante, se a VM tiver mais de dois adaptadores de rede) e altere o valor de NM_CONTROLLED de para yes no. Para fazer isso, execute os seguintes comandos:

    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bkp
    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ifcfg-eth1.bkp
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth0
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
    

    Observação

    Verifique se a NM_CONTROLLED=no linha foi adicionada aos arquivos /etc/sysconfig/network-scripts/ifcfg-eth0 e /etc/sysconfig/network-scripts/ifcfg-eth1 usando o cat /etc/sysconfig/network-scripts/ifcfg-eth* comando. Se a linha não estiver nos arquivos, adicione-a manualmente usando os sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0 comandos e sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1 .

  4. Depois de modificar essa configuração, reinicie os serviços de rede para aplicar as alterações executando o seguinte comando:

    sudo systemctl restart network
    
  5. Crie arquivos de regra e rota correspondentes usando qualquer editor de texto (nos exemplos a seguir, o editor vi é usado) e adicione regras e rotas apropriadas a cada arquivo. Use as etapas a seguir para criar um conjunto de arquivos rule-eth# e route-eth# por interface de rede. Substitua o endereço IP e as informações da sub-rede de acordo em cada etapa. Se você tiver mais interfaces de rede, crie o mesmo conjunto de arquivos rule-eth# e route-eth# para cada interface usando o endereço IP, a rede e os detalhes do gateway correspondentes.

    • Crie regras e rotas para eth0:

      1. Para criar o arquivo de regra para eth0, abra o arquivo /etc/sysconfig/network-scripts/rule-eth0.

        sudo vi /etc/sysconfig/network-scripts/rule-eth0
        
      2. Adicione o conteúdo a seguir ao arquivo de regras. Substitua o endereço IP de acordo, certifique-se de especificar o endereço IPv4 na configuração e preserve o valor de 32 bits:

        from 10.0.1.4/32 table eth0-rt
        to 10.0.1.4/32 table eth0-rt
        
      3. Para criar o arquivo de rota para eth0, abra o arquivo /etc/sysconfig/network-scripts/route-eth0.

        sudo vi /etc/sysconfig/network-scripts/route-eth0
        
      4. Adicione o conteúdo a seguir ao arquivo de rota. Substitua os valores de rede e gateway de acordo.

        10.0.1.0/24 dev eth0 table eth0-rt
        default via 10.0.1.1 dev eth0 table eth0-rt
        
    • Crie regras e rotas para eth1:

      1. Para criar o arquivo de regra para eth1, abra o arquivo /etc/sysconfig/network-scripts/rule-eth1.

        sudo vi /etc/sysconfig/network-scripts/rule-eth1
        
      2. Adicione o conteúdo a seguir ao arquivo de regras. Substitua o endereço IP de acordo, certifique-se de especificar o endereço IPv4 no comando e preserve o valor de 32 bits.

        • Duas NICs na mesma sub-rede:

          from 10.0.1.5/32 table eth1-rt
          to 10.0.1.5/32 table eth1-rt
          
        • Duas NICs em sub-redes diferentes, mas na mesma VNET:

          from 10.0.2.5/32 table eth1-rt
          to 10.0.2.5/32 table eth1-rt
          
      3. Para criar o arquivo de rota para eth1, abra o arquivo /etc/sysconfig/network-scripts/route-eth1.

        sudo vi /etc/sysconfig/network-scripts/route-eth1
        
      4. Adicione o conteúdo a seguir ao arquivo de rota. Substitua os valores de rede e gateway de acordo.

        • Duas NICs na mesma sub-rede:

          10.0.1.0/24 dev eth1 table eth1-rt
          default via 10.0.1.1 dev eth1 table eth1-rt
          
        • Duas NICs em sub-redes diferentes, mas na mesma VNET:

          10.0.2.0/24 dev eth1 table eth1-rt
          default via 10.0.2.1 dev eth1 table eth1-rt
          
  6. Para aplicar as alterações, execute o seguinte comando para reiniciar o serviço de rede:

    sudo systemctl restart network
    

    As regras de roteamento agora estão definidas corretamente e a conectividade deve funcionar em qualquer interface de rede. Você pode testar a conectividade usando o SSH (Secure Shell) ou executando ping em ambos os IPs de uma VM na mesma VNET.

  7. Verifique se as rotas e regras atuais são carregadas usando os seguintes comandos:

    sudo ip route show
    sudo ip rule show
    

Importante

Se você ainda tiver problemas de comunicação com a segunda NIC, reinicie a VM usando o comando, repita a sudo reboot etapa 7 e teste a conectividade novamente.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.