Udostępnij za pośrednictwem


Konfigurowanie wielu interfejsów sieciowych na maszynach wirtualnych z systemem Linux platformy Azure

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Uwaga 16.

CentOS, do których odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz CentOS End Of Life guidance (Wskazówki dotyczące zakończenia życia systemu CentOS).

W tym artykule omówiono sposób konfigurowania wielu wirtualnych interfejsów sieciowych na maszynach wirtualnych z systemem Linux platformy Azure, które uruchamiają najbardziej typowe dystrybucje systemu Linux.

Podsumowanie

Możesz utworzyć maszynę wirtualną platformy Azure, która ma wiele dołączonych interfejsów sieciowych. Typowym scenariuszem jest posiadanie różnych podsieci na potrzeby łączności frontonu i zaplecza lub sieci dedykowanej dla rozwiązania do monitorowania lub tworzenia kopii zapasowych.

Ten artykuł zawiera wymaganą konfigurację wielu interfejsów sieciowych do pracy na maszynie wirtualnej z systemem Linux platformy Azure, która jest oparta na następującym przykładowym scenariuszu:

  • Maszyna wirtualna ma co najmniej dwa interfejsy sieciowe w tej samej podsieci.
  • Maszyna wirtualna ma co najmniej dwa interfejsy sieciowe w różnych podsieciach, ale w tej samej sieci wirtualnej.

Aby uzyskać szczegółowe informacje, zobacz następujące zrzuty ekranu:

W każdym scenariuszu łączność można przetestować z dowolnej maszyny wirtualnej w tej samej sieci wirtualnej.

Ważne

Ten sam proces można również wykonać na maszynach wirtualnych z więcej niż dwiema kartami sieciowymi.

Konfigurowanie systemu operacyjnego gościa dla wielu interfejsów sieciowych

Po dodaniu wielu interfejsów sieciowych do maszyny wirtualnej z systemem Linux należy utworzyć reguły routingu. Te reguły umożliwiają maszynie wirtualnej wysyłanie i odbieranie ruchu należącego do określonego interfejsu sieciowego. W przeciwnym razie nie można poprawnie przetworzyć ruchu. Na przykład ruch należący do eth1 nie może być poprawnie przetwarzany przez zdefiniowaną trasę domyślną.

Poniższe sekcje zawierają wymaganą konfigurację dwóch interfejsów sieciowych do pracy na maszynach wirtualnych z systemem Linux, które uruchamiają najbardziej typowe dystrybucje systemu Linux.

Uwaga 16.

Uruchom wszystkie polecenia w poniższych sekcjach przy użyciu uprawnień głównych (przełączając się do katalogu głównego lub przy użyciu sudo narzędzia poleceń).

W każdej sekcji założono, że maszyna wirtualna ma dwa interfejsy sieciowe, które mają dowolne z następujących ustawień:

  • Routing (dane wyjściowe sudo ip route show polecenia):

    • Dwie karty sieciowe w tej samej podsieci:

      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
      
    • Dwie karty sieciowe w różnych podsieciach, ale w tej samej sieci wirtualnej:

      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
      
  • Interfejsy (dane wyjściowe sudo ip address show polecenia):

    • Dwie karty sieciowe w tej samej podsieci:

      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
      
    • Dwie karty sieciowe w różnych podsieciach, ale w tej samej sieci wirtualnej:

      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. Dodaj dwie tabele routingu do pliku /etc/iproute2/rt_tables , uruchamiając następujące polecenia (potrzebujesz jednego wpisu na kartę sieciową):

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

    Jeśli do maszyny wirtualnej jest dołączonych więcej interfejsów sieciowych, dodaj dodatkowe tabele routingu (na przykład 202 eth2-rt, 203 eth3-rt itd.).

  2. Upewnij się, że plik konfiguracji istnieje dla każdego interfejsu sieciowego w katalogu /etc/sysconfig/network-scripts/ . Można utworzyć nowe pliki konfiguracji interfejsu sieciowego na podstawie pliku konfiguracji ifcfg-eth0 (zmodyfikować DEVICE wiersz i usunąć DHCP_HOSTNAME wiersze z HWADDR nowego pliku). W tym celu uruchom następujące polecenia:

    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. Aby wprowadzić zmianę trwałą i zastosowaną podczas aktywacji stosu sieciowego, edytuj pliki /etc/sysconfig/network-scripts/ifcfg-eth0 i /etc/sysconfig/network-scripts/ifcfg-eth1 (ifcfg-eth2, ifcfg-eth3 itd., jeśli maszyna wirtualna ma więcej niż dwa interfejsy sieciowe) i zmień wartość NM_CONTROLLED z yes na no. W tym celu uruchom następujące polecenia:

    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
    

    Uwaga 16.

    Sprawdź, czy NM_CONTROLLED=no wiersz został dodany do plików /etc/sysconfig/network-scripts/ifcfg-eth0 i /etc/sysconfig/network-scripts/ifcfg-eth1 za pomocą cat /etc/sysconfig/network-scripts/ifcfg-eth* polecenia . Jeśli wiersz nie znajduje się w plikach, dodaj go ręcznie przy użyciu sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0 poleceń i sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1 .

  4. Po zmodyfikowaniu tej konfiguracji uruchom ponownie usługi sieciowe, aby zastosować zmiany, uruchamiając następujące polecenie:

    sudo systemctl restart network
    
  5. Utwórz odpowiednie pliki reguł i tras przy użyciu dowolnego edytora tekstów (w poniższych przykładach używany jest edytor vi) i dodaj odpowiednie reguły i trasy do każdego pliku. Wykonaj poniższe kroki, aby utworzyć jeden zestaw plików rule-eth# i route-eth# na interfejs sieciowy. Zastąp odpowiednio informacje o adresie IP i podsieci w każdym kroku. Jeśli masz więcej interfejsów sieciowych, utwórz ten sam zestaw plików rule-eth# i route-eth# dla każdego interfejsu przy użyciu odpowiedniego adresu IP, sieci i szczegółów bramy.

    • Tworzenie reguł i tras dla eth0:

      1. Aby utworzyć plik reguły dla eth0, otwórz plik /etc/sysconfig/network-scripts/rule-eth0.

        sudo vi /etc/sysconfig/network-scripts/rule-eth0
        
      2. Dodaj następującą zawartość do pliku reguły. Zastąp odpowiednio adres IP, upewnij się, że w konfiguracji określono adres IPv4 i zachowaj wartość 32-bitową:

        from 10.0.1.4/32 table eth0-rt
        to 10.0.1.4/32 table eth0-rt
        
      3. Aby utworzyć plik trasy dla eth0, otwórz plik /etc/sysconfig/network-scripts/route-eth0.

        sudo vi /etc/sysconfig/network-scripts/route-eth0
        
      4. Dodaj następującą zawartość do pliku trasy. Zastąp odpowiednio wartości sieci i bramy.

        10.0.1.0/24 dev eth0 table eth0-rt
        default via 10.0.1.1 dev eth0 table eth0-rt
        
    • Tworzenie reguł i tras dla eth1:

      1. Aby utworzyć plik reguły dla eth1, otwórz plik /etc/sysconfig/network-scripts/rule-eth1.

        sudo vi /etc/sysconfig/network-scripts/rule-eth1
        
      2. Dodaj następującą zawartość do pliku reguły. Zastąp odpowiednio adres IP, upewnij się, że w poleceniu określ adres IPv4 i zachowaj wartość 32-bitową.

        • Dwie karty sieciowe w tej samej podsieci:

          from 10.0.1.5/32 table eth1-rt
          to 10.0.1.5/32 table eth1-rt
          
        • Dwie karty sieciowe w różnych podsieciach, ale w tej samej sieci wirtualnej:

          from 10.0.2.5/32 table eth1-rt
          to 10.0.2.5/32 table eth1-rt
          
      3. Aby utworzyć plik trasy dla eth1, otwórz plik /etc/sysconfig/network-scripts/route-eth1.

        sudo vi /etc/sysconfig/network-scripts/route-eth1
        
      4. Dodaj następującą zawartość do pliku trasy. Zastąp odpowiednio wartości sieci i bramy.

        • Dwie karty sieciowe w tej samej podsieci:

          10.0.1.0/24 dev eth1 table eth1-rt
          default via 10.0.1.1 dev eth1 table eth1-rt
          
        • Dwie karty sieciowe w różnych podsieciach, ale w tej samej sieci wirtualnej:

          10.0.2.0/24 dev eth1 table eth1-rt
          default via 10.0.2.1 dev eth1 table eth1-rt
          
  6. Aby zastosować zmiany, uruchom następujące polecenie, aby ponownie uruchomić usługę sieciową:

    sudo systemctl restart network
    

    Reguły routingu są teraz poprawnie ustawione, a łączność powinna działać z dowolnego interfejsu sieciowego. Łączność można przetestować przy użyciu protokołu Secure Shell (SSH) lub wysłać polecenie ping do obu adresów IP z maszyny wirtualnej w tej samej sieci wirtualnej.

  7. Sprawdź, czy bieżące trasy i reguły są ładowane przy użyciu następujących poleceń:

    sudo ip route show
    sudo ip rule show
    

Ważne

Jeśli nadal masz problemy z komunikacją z drugą kartą sieciową, uruchom ponownie maszynę wirtualną przy użyciu sudo reboot polecenia , powtórz krok 7 i ponownie przetestuj łączność.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.