NMState: deklarativno orodje za konfiguracijo omrežja


Ekosistem Linux ponuja številne načine za konfiguriranje omrežij, vključno s priljubljenim pripomočkom nmtui GUI. Ta priročnik predstavlja še eno orodje za konfiguracijo omrežja, znano kot NMState

NMState je deklarativni omrežni upravitelj za konfiguriranje omrežja na gostiteljih Linux. To je knjižnica, ki ponuja orodje ukazne vrstice, ki upravlja nastavitve omrežja gostitelja. Upravlja omrežje gostitelja prek severno usmerjenega deklarativnega API-ja. V času pisanja tega priročnika je bil demon NetworkManager edini ponudnik, ki ga podpira NMState.

V tem priročniku si ogledamo nekaj primerov uporabe orodja NMState. V tem priročniku bomo to prikazali z uporabo Fedora Linux.

Upravljanje omrežja ima lahko dva pristopa – imperativni in deklarativni. Pri imperativnem pristopu izrecno definirate omrežno stanje vmesnika z izvajanjem ukazov na terminalu. Poudarek je na 'kako'.

Če želite na primer porušiti omrežje z imperativnim pristopom, zaženite ukaz:

$ sudo ifconfig enp0s3 down

Po drugi strani pa deklarativni pristop uporablja datoteko YAML za uporabo sprememb v konfiguraciji. Večina orodij za orkestracijo DevOps, kot je Kubernetes, uporablja ta pristop za uvajanje aplikacij pods z uporabo datoteke YAML.

Ta pristop zagotavlja tisto, kar se v krogih DevOps običajno imenuje infrastruktura kot koda (IaC). To izboljša avtomatizacijo omrežne konfiguracije na gostitelju in zagotavlja hiter in zanesljivejši način za več sprememb omrežnega vmesnika z minimalnimi napakami.

Zdaj pa preklopimo in poglejmo, kako lahko s konfiguracijskim orodjem NMState konfigurirate svoje omrežne vmesnike v Linuxu.

1. korak: Namestite NMState Networking Config Tool

Z namestitvijo Nmstate bomo zagnali kroglo. Najprej preverite razpoložljivost paketa iz Fedora repozitorijev na naslednji način:

$ sudo dnf search nmstate

Iz izhoda lahko vidimo, da je upravitelj omrežja na voljo v uradnih repozitorijih.

Nato namestite NMstate, kot sledi. To deluje na Fedori 31 in novejših različicah.

$ sudo dnf install nmstate

Ukaz namesti API upravitelja omrežja NMState poleg drugih odvisnosti Pythona.

Ko je namestitev končana, preverite, ali je paket nmstate nameščen, kot sledi.

$ rpm -qi nmstate

Za Linux, ki temelji na RHEL, najprej omogočite repozitorij copr.

$ sudo dnf copr enable nmstate/nmstate-stable

Nato namestite NMstate, kot sledi.

$ sudo dnf install nmstate

Oglejte si dodatna navodila za namestitev NMState iz vira.

Ko je nameščen, lahko preverite različico nameščenega NMstate, kot sledi.

$ nmstatectl version

1.0.2

Uporaba orodja za konfiguracijo NMState v Linuxu

Ko je NMstate nameščen, se poglejmo, kako lahko kar najbolje izkoristite API upravitelja omrežja.

Če si želite ogledati trenutno omrežno konfiguracijo vašega omrežnega vmesnika, zaženite naslednji ukaz. Tukaj je konfiguracija vašega vmesnika enp0s3.

$ nmstatectl show enp0s3

Izhod je razdeljen na 4 ločene dele:

  • dns-resolver: ta razdelek vsebuje konfiguracijo imenskega strežnika za določen vmesnik.
  • route-rules: To določa pravila usmerjanja.
  • poti: to vključuje tako dinamične kot statične poti.
  • Vmesniki: ta razdelek določa nastavitve ipv4 in ipv6.

Spreminjanje omrežne konfiguracije v Linuxu

S konfiguracijskim orodjem NMState lahko konfigurirate svoje gostitelje v želeno stanje z uporabo interaktivnih načinov ali načinov, ki temeljijo na datotekah.

  • Interaktivno: to ureja omrežni vmesnik z ukazom za urejanje nmstatectl. Ta ukaz odpre urejevalnik besedil, ki ga definira spremenljivka okolja EDITOR. Ko so spremembe shranjene, NMState takoj uporabi novo konfiguracijo, razen če so bile zaznane sintaksične napake.
  • Na podlagi datoteke: v načinu na podlagi datotek se konfiguracija vmesnika uporabi z datoteko YAML ali JSON z ukazom nmstatectl apply.

Naj si zdaj umažemo roke in preverimo, kako lahko s pomočjo NMState spremenite konfiguracijo omrežja.

Naš sistem Fedora ima dva aktivna omrežna vmesnika z naslednjo konfiguracijo:

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

Interaktivni način bomo uporabili za spreminjanje MTU (Maximum Transmission Unit) omrežnega vmesnika enp0s3. Privzeto je to nastavljeno na 1500, kot je prikazano.

$ ifconfig

To bomo spremenili na 4000. To bomo naredili z ukazom za urejanje nmstatectl, kot sledi.

$ sudo nmstatectl edit enp0s3

To odpre konfiguracijo v urejevalniku besedil. V našem primeru se odpre v urejevalniku vim. Nato se pomaknite do konca navzdol in poiščite parameter mtu. Vrednost bomo spremenili na 4000, tako kot bi urejali datoteko v vim. Nato bomo shranili spremembe.

Ko shranite in zapustite datoteko, boste na terminalu videli nekaj kodiranega izhoda, saj NMstate shrani spremembe. Posredovanje ni potrebno, zato sedite pri miru.

Zdaj pa potrdimo, da je bila sprememba narejena.

$ ifconfig

Iz terminalskega izhoda lahko vidimo, da smo MTU uspešno spremenili na 4000 s privzete vrednosti 1500.

Zdaj spremenimo konfiguracijo z načinom, ki temelji na datotekah. V tem primeru bomo onemogočili IPv6 za omrežni vmesnik enp0s8. Prvi korak je ustvariti datoteko YAML, ki bo podala želeno stanje omrežnega vmesnika enp0s8.

$ sudo nmstatectl show enp0s8 > enp0s8.yml

Nato bomo datoteko YAML uredili na naslednji način.

$ sudo vim enp0s8.yml

Pomaknite se navzdol do razdelka ipv6. Če želite onemogočiti IPv6, nastavite omogočeni parameter na false in izbrišite vrstice, ki so bile prečrtane.

Shranite konfiguracijo in uporabite novo stanje z datoteko YAML, kot sledi.

$ sudo nmstatectl apply enp0s8.yml

Zdaj zaženite prikazani ukaz, da preverite, ali je IPv6 onemogočen. Prikazani izhodi kažejo, da je IPv6 za omrežni vmesnik enp0s8 prazen, kar pomeni, da smo uspešno onemogočili IPv6 na vmesniku.

$ ip -br a 

Druga resnično priročna funkcionalnost, ki jo ponuja NMstate, je možnost začasne konfiguracije želenega stanja omrežja. Ko ste s konfiguracijo zadovoljni, lahko nadaljujete in naredite spremembe trajne. V nasprotnem primeru se bodo opravljene spremembe povrnile na začetne nastavitve, ko poteče časovna omejitev. Privzeta časovna omejitev je 60 sekund.

Da bi to dokazali, bomo začasno nastavili statični IP na vmesniku enp0s3 in onemogočili DHCP. Še enkrat dostopajte do datoteke z urejevalnikom besedil.

$ sudo vim enp0s3.yml

Pomaknite se do razdelka ipv4. Določite statični IP – v našem primeru 192.168.2.150 in izbrišite vrstice, ki so bile prečrtane. Poleg tega se prepričajte, da ste parameter dhcp nastavili na false.

Shranite datoteko in začasno potrdite spremembe, kot sledi.

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

Možnost --no-commit začasno uporabi spremembe za obdobje, določeno z možnostjo --timeout, ki je v tem primeru 20 sekund.

Za preverjanje časovne uporabe sprememb bomo preverili konfiguracijo IP v časovnem intervalu 20 sekund.

$ ip -br a 

Iz izhoda lahko vidite, da se je konfiguracija vmesnika IP po časovnem intervalu 20 sekund povrnila na DHCP. Naslov IP se je vrnil na 192.168.2.104 iz prejšnjega statično konfiguriranega IP-ja, ki je bil 192.168.2.150.

Res je, da je orodje NMState priročno orodje za konfiguriranje omrežnih vmesnikov. Je deklarativno orodje, ki s pomočjo API-ja NetworkManager uporabi želeno stanje konfiguracije gostiteljskega vmesnika.

Stanje je enostavno definirati z interaktivnim pristopom ali z uporabo metode, ki temelji na datoteki, ki uporablja vnaprej konfigurirano datoteko YAML. To izboljša avtomatizacijo konfiguracijskih nalog in zmanjšanje napak med konfiguracijo.