NMSTate Deklaratywne narzędzie konfiguracyjne sieciowe dla Linux

NMSTate Deklaratywne narzędzie konfiguracyjne sieciowe dla Linux

Ekosystem Linux zapewnia wiele sposobów konfigurowania sieci, w tym popularny demon menedżera sieci i narzędzia wiersza poleceń, takie jak NMCLI i NMTUI GUI Utility. Ten przewodnik wprowadza jeszcze jedno narzędzie konfiguracyjne sieciowe znane jako Nmstate

Nmstate jest deklaratywnym menedżerem sieci do konfigurowania sieci na hostach Linux. To biblioteka, która zapewnia narzędzie wiersza poleceń, które zarządza ustawieniami sieci hosta. Zarządza sieciami hostów za pośrednictwem deklaratywnego interfejsu API na północ. W momencie pisania tego przewodnika, NetworkManager Daemon jest jedynym dostawcą obsługiwanym przez Nmstate.

W tym przewodniku patrzymy na niektóre z przykładowych zastosowań Nmstate narzędzie. W przypadku tego przewodnika zademonstrujemy to za pomocą Fedora Linux.

Podejścia imperatywne kontra deklaratywne

Zarządzanie siecią może przyjąć dwa podejścia - Pilny I deklaracyjny. w pilny Podejście, wyraźnie definiujesz stan sieci interfejsu, uruchamiając polecenia na terminalu. Nacisk kładziony jest na 'Jak'.

Na przykład, aby sprowadzić sieć za pomocą podejścia imperatywnego, uruchom polecenie:

$ sudo ifconfig enp0s3 w dół 

Z drugiej strony deklaracyjny Podejście używa Yaml plik do zastosowania zmian w konfiguracji. Większość narzędzi orkiestracji DevOps, takich jak Kubernetes Zastosuj to podejście do wdrażania aplikacji PODS za pomocą Yaml plik.

Takie podejście stanowi, co jest powszechnie określane jako infrastruktura jako kod (IAC) W kręgach DevOps. Zwiększa to automatyzację konfiguracji sieci na hoście i zapewnia szybki i bardziej niezawodny sposób wprowadzania wielu zmian w interfejsie sieciowym przy minimalnych błędach.

Teraz przełączmy biegi i zobacz, jak możesz użyć Nmstate Narzędzie konfiguracyjne do konfigurowania interfejsów sieciowych w Linux.

Krok 1: Zainstaluj narzędzie konfiguracji sieci NMState Networking

Dostaniemy piłkę, instalując Nmstate. Najpierw sprawdź dostępność pakietu z Fedora Repozytoria w następujący sposób:

$ sudo dnf wyszukiwanie nmstate 

Ze wyjścia widzimy, że menedżer sieci jest dostępny w oficjalnych repozytoriach.

Sprawdź pakiet nmstate

Następnie zainstaluj Nmstate następująco. To działa Fedora 31 a później wersje.

$ sudo dnf instaluj nmstate 

Polecenie instaluje Nmstate API menedżera sieci wraz z innymi zależnościami Python.

Zainstaluj NMState w Fedora

Po zakończeniu instalacji zweryfikuj nmstate Pakiet jest zainstalowany w następujący sposób.

$ rpm -qi nmstate 
Sprawdź pakiet nmstate

W przypadku Linux opartego na RHEL włącz najpierw repozytorium COPR.

$ sudo dnf copr włącz NMState/nmstate-stabil 

Następnie zainstaluj Nmstate następująco.

$ sudo dnf instaluj nmstate 

Sprawdź dodatkowe instrukcje dotyczące instalacji NMState ze źródła.

Po zainstalowaniu możesz sprawdzić wersję Nmstate zainstalowane w następujący sposób.

$ nmstatectl wersja 1.0.2 

Korzystanie z narzędzia konfiguracji NMState w Linux

Z Nmstate Zainstalowane, przejdźmy do dzianki, w jaki sposób możesz jak najlepiej wykorzystać interfejs API Manager Network Manager.

Aby wyświetlić bieżącą konfigurację sieci interfejsu sieciowego, uruchom następujące polecenie. Tutaj jest konfiguracja twojego ENP0S3 interfejs.

$ nmstatectl show enp0s3 
Pokaż konfigurację interfejsu sieciowego

Wyjście jest podzielone na 4 odrębne sekcje:

  • DNS-Resolver: Ta sekcja zawiera konfigurację serwerów nazw dla konkretnego interfejsu.
  • Rule: To określa zasady routingu.
  • trasy: Obejmuje to zarówno trasy dynamiczne, jak i statyczne.
  • Interfejsy: Ta sekcja określa zarówno ustawienia IPv4, jak i IPv6.

Zmiana konfiguracji sieci w Linux

Możesz użyć Nmstate Narzędzie konfiguracyjne do konfigurowania hostów w żądanym stanie za pomocą trybów interaktywnych lub opartych na plikach.

  • Interaktywny: To edytuje interfejs sieciowy za pomocą NMSTATECTL EDIT Komenda. To polecenie otwiera edytor tekstu, który jest zdefiniowany przez zmienną środowiskową edytora. Po zapisaniu zmian NMSTate zastosuje nową konfigurację natychmiast, chyba że wykryto błędy składniowe.
  • Oparte na pliku: W trybie opartym na pliku konfiguracja interfejsu jest stosowana za pomocą pliku YAML lub JSON za pomocą pliku NMSTATECTL ZAPŁADA Komenda.

Pozwól nam teraz zabrudzić ręce i sprawdź, w jaki sposób możesz zmodyfikować konfigurację sieci za pomocą Nmstate.

Nasz Fedora System ma dwa aktywne interfejsy sieciowe z następującą konfiguracją:

$ ip -br -4 a 
Przykładowy wyjście
lo nieznane 127.0.0.1/8 ENP0S3 UP 192.168.2.104/24 ENP0S8 UP 192.168.2.103/24 

Przykład trybu konfiguracji interaktywnej

Użyjemy trybu interaktywnego do zmiany MTU (Maksymalna jednostka transmisji) ENP0S3 Interfejs sieciowy. Domyślnie jest to ustawione 1500 jak pokazano.

$ ifconfig 
Sprawdź MTU Network w Linux

Zmienimy to na 4000. Zrobimy to za pomocą NMSTATECTL EDIT polecenie w następujący sposób.

$ sudo nmstatectl edytuj ENP0S3 

To otwiera konfigurację w edytorze tekstu. W naszym przypadku otwiera się krzepa redaktor. Następnie przewiń całą drogę w dół i zlokalizuj MTU parametr. Zmienimy wartość na 4000, tak jak edytowaliśmy plik w VIM. Wtedy zapiszymy zmiany.

Zmień sieć MTU w Linux

Po zapisaniu i wychodzeniu z pliku zobaczysz jakieś jajecznice wyjście na terminalu jako Nmstate Zapisuje zmiany. Nie jest wymagana interwencja, po prostu usiądź.

Potwierdźmy teraz, że zmiana została dokonana.

$ ifconfig 

Z wyjścia terminalowego możemy zobaczyć, że pomyślnie zmieniliśmy MTU na 4000 z domyślnych 1500 wartość.

Sprawdź sieć MTU w Linux

Przykład trybu konfiguracji oparty na pliku

Zmodyfikujmy teraz konfigurację za pomocą trybu opartego na plikach. W tym przykładzie zamierzamy wyłączyć IPv6 dla ENP0S8 Interfejs sieciowy. Pierwszym krokiem jest utworzenie pliku YAML, który określi pożądany stan ENP0S8 Interfejs sieciowy.

$ sudo nmstatectl show ENP0S8> ENP0S8.yml 
Utwórz plik Network YAML

Następnie edytujemy Yaml Plik w następujący sposób.

$ sudo vim enp0s8.yml 

Przewiń w dół do sekcji IPv6. Aby wyłączyć IPv6, ustaw parametr włączony na false i usuń linie, które zostały uderzone.

Wyłącz IPv6 w Linux

Zapisz konfigurację i zastosuj nowy stan za pomocą pliku YAML w następujący sposób.

$ sudo nmstatectl Zastosuj ENP0S8.yml 

Teraz uruchom polecenie pokazane, aby sprawdzić, czy IPv6 zostało wyłączone. Wyświetlone wyjście pokazuje, że IPv6 dla ENP0S8 Interfejs sieciowy jest pusty, co oznacza, że ​​z powodzeniem wyłączyliśmy IPv6 na interfejsie.

$ ip -br a 
Potwierdź IPv6 wyłączone w Linux

Tymczasowe zastosowanie zmian sieci

Kolejna naprawdę przydatna funkcjonalność Nmstate zapewnia możliwość tymczasowego skonfigurowania pożądanego stanu sieci. Po zadowoleniu z konfiguracji możesz kontynuować i dokonać zmian. W przeciwnym razie wprowadzone zmiany powrócą do początkowych ustawień po wygaśnięciu limitu czasu. Domyślny limit czasu to 60 sekund.

Aby to zademonstrować, tymczasowo ustawimy statyczny adres IP na ENP0S3 interfejs i wyłącz DHCP. Jeszcze raz dostęp do pliku za pomocą edytora tekstu.

$ sudo vim enp0s3.yml 

Przewiń do IPv4 Sekcja. Określ statyczny adres IP - w naszym przypadku 192.168.2.150 i usuń linie, które zostały uderzone. Ponadto, pamiętaj o ustawieniu DHCP parametr do FAŁSZ.

Ustaw statyczny adres IP w Linux

Zapisz plik i tymczasowo zatwierdź zmiany w następujący sposób.

$ sudo nmstatectl Apply-No-Commit-Timeout 20 ENP0S3.yml 

--Brak powoływania opcja tymczasowo stosuje zmiany w okresie określonym przez --koniec czasu opcja, która w tym przykładzie wynosi 20 sekund.

Aby zweryfikować czasowe zastosowanie zmian, sprawdzimy konfigurację IP w odstępie czasu 20 sekund.

$ ip -br a 

Ze wyjścia widać, że konfiguracja IP interfejsu powróciła do DHCP po przedziale czasowym wynoszącym 20 sekund. Adres IP wrócił do 192.168.2.104 z wcześniejszego konfigurowanego statycznie IP, który był 192.168.2.150.

Sprawdź interfejs sieciowy

Trzeba przyznać Nmstate Narzędzie to wygodne narzędzie do konfigurowania interfejsów sieciowych. Jest to deklaratywne narzędzie, które stosuje pożądany stan konfiguracji interfejsu hosta za pomocą interfejsu API NetworkManager.

państwo można łatwo zdefiniować za pomocą albo interaktywny podejść lub korzystanie z oparte na pliku metoda wykorzystująca wstępnie skonfigurowane Yaml plik. Zwiększa to automatyzację zadań konfiguracyjnych i redukcja błędów podczas konfiguracji.