NMState: Deklarativni alat za mrežnu konfiguraciju


Linux ekosustav pruža brojne načine konfiguriranja umrežavanja uključujući popularni demon Network Manager i alate naredbenog retka kao što su nmcli i nmtui GUI uslužni programi. Ovaj vodič predstavlja još jedan alat za konfiguraciju mreže poznat kao NMState

NMState je deklarativni mrežni upravitelj za konfiguriranje umrežavanja na Linux hostovima. To je biblioteka koja pruža alat naredbenog retka koji upravlja postavkama mreže glavnog računala. Upravlja umrežavanjem glavnog računala putem sjevernog deklarativnog API-ja. U vrijeme pisanja ovog vodiča, demon NetworkManager je jedini pružatelj kojeg podržava NMState.

U ovom vodiču razmatramo neke od primjera upotrebe alata NMState. U ovom ćemo vodiču demonstrirati ovo koristeći Fedora Linux.

Imperativni nasuprot deklarativnim pristupima

Upravljanje mrežom može imati dva pristupa – imperativni i deklarativni. U imperativnom pristupu, izričito definirate mrežno stanje sučelja pokretanjem naredbi na terminalu. Fokus je na "kako".

Na primjer, da biste srušili mrežu korištenjem imperativnog pristupa, pokrenite naredbu:

sudo ifconfig enp0s3 down

S druge strane, deklarativni pristup koristi YAML datoteku za primjenu promjena na konfiguraciju. Većina DevOps alata za orkestraciju kao što je Kubernetes koristi ovaj pristup za implementaciju pods aplikacija pomoću YAML datoteke.

Ovaj pristup pruža ono što se obično naziva Infrastructure as Code (IaC) u DevOps krugovima. Ovo poboljšava automatizaciju mrežne konfiguracije na glavnom računalu i pruža brz i pouzdaniji način unošenja višestrukih promjena na mrežno sučelje uz minimalne pogreške.

Sada promijenimo brzinu i vidimo kako možete koristiti konfiguracijski alat NMState za konfiguriranje mrežnih sučelja u Linuxu.

Korak 1: Instalirajte NMState Networking Config Tool

Pokretat ćemo loptu instaliranjem Nmstate. Prvo provjerite dostupnost paketa iz Fedora repozitorija na sljedeći način:

sudo dnf search nmstate

Iz izlaza možemo vidjeti da je mrežni upravitelj dostupan u službenim repozitorijima.

Zatim instalirajte NMstate na sljedeći način. Ovo radi na Fedori 31 i novijim verzijama.

sudo dnf install nmstate

Naredba instalira API za mrežni upravitelj NMState zajedno s drugim ovisnostima Pythona.

Kada instalacija završi, provjerite je li paket nmstate instaliran na sljedeći način.

rpm -qi nmstate

Za Linux temeljen na RHEL-u, najprije omogućite repozitorij copr.

sudo dnf copr enable nmstate/nmstate-stable

Zatim instalirajte NMstate na sljedeći način.

sudo dnf install nmstate

Provjerite dodatne upute o tome kako instalirati NMState iz izvora.

Nakon instaliranja, možete provjeriti instaliranu verziju NMstate na sljedeći način.

nmstatectl version

1.0.2

Korištenje alata za konfiguraciju NMState u Linuxu

S instaliranim NMstate, prijeđimo na glavne stvari o tome kako možete najbolje iskoristiti API upravitelja mreže.

Za pregled trenutne mrežne konfiguracije vašeg mrežnog sučelja, pokrenite sljedeću naredbu. Ovdje je konfiguracija vašeg enp0s3 sučelja.

nmstatectl show enp0s3

Izlaz je podijeljen u 4 različita odjeljka:

  • dns-resolver: Ovaj odjeljak sadrži konfiguraciju poslužitelja imena za određeno sučelje.
  • pravila rute: Ovo određuje pravila rute.
  • rute: Ovo uključuje i dinamičke i statične rute.
  • Sučelja: Ovaj odjeljak navodi i ipv4 i ipv6 postavke.

Promjena mrežne konfiguracije u Linuxu

Možete koristiti alat za konfiguraciju NMState da konfigurirate svoje hostove u željeno stanje korištenjem interaktivnog načina rada ili načina rada koji se temelji na datotekama.

  • Interaktivno: Ovo uređuje mrežno sučelje pomoću naredbe nmstatectl edit. Ova naredba otvara uređivač teksta koji je definiran varijablom okruženja EDITOR. Nakon što su promjene spremljene, NMState odmah primjenjuje novu konfiguraciju osim ako nisu otkrivene pogreške u sintaksi.
  • Na temelju datoteka: U načinu rada koji se temelji na datotekama, konfiguracija sučelja primjenjuje se pomoću YAML ili JSON datoteke pomoću naredbe nmstatectl apply.

Hajde da sada zaprljamo ruke i provjerimo kako možete izmijeniti mrežnu konfiguraciju pomoću NMState.

Naš Fedora sustav ima dva aktivna mrežna sučelja sa sljedećom konfiguracijom:

ip -br -4 a
Uzorak izlaza
lo               UNKNOWN        127.0.0.1/8 
enp0s3           UP             192.168.2.104/24 
enp0s8           UP             192.168.2.103/24 

Primjer interaktivnog načina konfiguracije

Koristit ćemo interaktivni način rada za promjenu MTU (Maksimalna jedinica prijenosa) mrežnog sučelja enp0s3. Prema zadanim postavkama ovo je postavljeno na 1500 kao što je prikazano.

ifconfig

To ćemo promijeniti u 4000. To ćemo učiniti pomoću naredbe nmstatectl edit kako slijedi.

sudo nmstatectl edit enp0s3

Ovo otvara konfiguraciju u uređivaču teksta. U našem slučaju, otvara se u uređivaču vim. Zatim se pomaknite do kraja i pronađite parametar mtu. Promijenit ćemo vrijednost na 4000, baš kao što bismo uredili datoteku u vimu. Zatim ćemo spremiti promjene.

Kada spremite i izađete iz datoteke, vidjet ćete neki kodirani izlaz na terminalu dok NMstate sprema promjene. Nije potrebna intervencija, samo mirno sjedite.

Potvrdimo sada da je promjena napravljena.

ifconfig

Iz izlaza terminala možemo vidjeti da smo uspješno promijenili MTU na 4000 sa zadane vrijednosti 1500.

Primjer načina konfiguracije temeljen na datoteci

Promijenimo sada konfiguraciju koristeći način rada temeljen na datotekama. U ovom primjeru ćemo onemogućiti IPv6 za mrežno sučelje enp0s8. Prvi korak je kreiranje YAML datoteke koja će odrediti željeno stanje enp0s8 mrežnog sučelja.

sudo nmstatectl show enp0s8 > enp0s8.yml

Zatim ćemo urediti YAML datoteku na sljedeći način.

sudo vim enp0s8.yml

Pomaknite se prema dolje do odjeljka ipv6. Da biste onemogućili IPv6, postavite parametar enabled na false i izbrišite retke koji su precrtani.

Spremite konfiguraciju i primijenite novo stanje pomoću YAML datoteke kako slijedi.

sudo nmstatectl apply enp0s8.yml

Sada pokrenite prikazanu naredbu da provjerite je li IPv6 onemogućen. Prikazani izlaz pokazuje da je IPv6 za mrežno sučelje enp0s8 prazan, što znači da smo uspješno onemogućili IPv6 na sučelju.

ip -br a 

Privremena primjena mrežnih promjena

Još jedna vrlo zgodna funkcija koju NMstate pruža je mogućnost privremenog konfiguriranja željenog stanja mreže. Nakon što ste zadovoljni konfiguracijom, možete nastaviti i učiniti promjene trajnim. U protivnom će se izvršene promjene vratiti na početne postavke nakon što istekne vremensko ograničenje. Zadano vrijeme čekanja je 60 sekundi.

Da bismo to demonstrirali, privremeno ćemo postaviti statičku IP adresu na enp0s3 sučelju i onemogućiti DHCP. Još jednom pristupite datoteci pomoću uređivača teksta.

sudo vim enp0s3.yml

Pomaknite se do odjeljka ipv4. Navedite statički IP – u našem slučaju 192.168.2.150 i izbrišite precrtane retke. Osim toga, svakako postavite parametar dhcp na false.

Spremite datoteku i privremeno izvršite promjene kako slijedi.

sudo nmstatectl apply --no-commit --timeout 20 enp0s3.yml

Opcija --no-commit privremeno primjenjuje promjene na razdoblje definirano opcijom --timeout koje je u ovom primjeru 20 sekundi.

Za provjeru vremenske primjene promjena provjeravat ćemo IP konfiguraciju u vremenskom intervalu od 20 sekundi.

ip -br a 

Iz izlaza možete vidjeti da se IP konfiguracija sučelja vratila na DHCP nakon vremenskog intervala od 20 sekundi. IP adresa se vratila na 192.168.2.104 s ranije statički konfigurirane IP adrese koja je bila 192.168.2.150.

Doduše, alat NMState je zgodan alat za konfiguriranje vaših mrežnih sučelja. To je deklarativni alat koji primjenjuje željeno stanje konfiguracije sučelja glavnog računala pomoću API-ja NetworkManager.

Stanje se jednostavno definira pomoću interaktivnog pristupa ili pomoću metode temeljene na datoteci koja koristi unaprijed konfigurirani YAML datoteka. Ovo poboljšava automatizaciju konfiguracijskih zadataka i smanjuje pogreške tijekom konfiguracije.