NMState: Declarative Networking Configuration Tool


Linux-ekosysteemi tarjoaa lukuisia tapoja konfiguroida verkkoa, mukaan lukien suosittu Network Manager -daemon ja komentorivityökalut, kuten nmcli ja nmtui GUI-apuohjelma. Tämä opas esittelee vielä toisen verkkomääritystyökalun, joka tunnetaan nimellä NMState

NMState on deklaratiivinen verkonhallinta Linux-isäntien verkon määrittämiseen. Se on kirjasto, joka tarjoaa komentorivityökalun, joka hallitsee isäntäverkkoasetuksia. Se hallitsee isäntäverkkoa pohjoiseen suuntautuvan deklaratiivisen API:n kautta. Tätä opasta kirjoitettaessa NetworkManager-daemon oli ainoa palveluntarjoaja, jota NMState tukee.

Tässä oppaassa tarkastellaan joitain NMState-työkalun käyttöesimerkkejä. Tässä oppaassa esittelemme tämän käyttämällä Fedora Linuxia.

Pakolliset vs deklaratiiviset lähestymistavat

Verkon hallinnassa voi olla kaksi lähestymistapaa – pakollinen ja ilmoitatiivinen. Pakottavassa lähestymistavassa määrität nimenomaisesti käyttöliittymän verkkotilan suorittamalla komentoja päätteellä. Painopiste on miten.

Jos esimerkiksi haluat kaataa verkon käyttämällä pakollista lähestymistapaa, suorita komento:

sudo ifconfig enp0s3 down

Toisaalta deklaratiivinen lähestymistapa käyttää YAML-tiedostoa muutosten soveltamiseen kokoonpanoon. Useimmat DevOps-orkesterityökalut, kuten Kubernetes, käyttävät tätä lähestymistapaa pods-sovellusten käyttöönottamiseen YAML-tiedoston avulla.

Tämä lähestymistapa tarjoaa niin, että DevOps-piireissä kutsutaan infrastruktuuriksi koodiksi (IaC). Tämä parantaa verkon konfiguroinnin automatisointia isännässä ja tarjoaa nopean ja luotettavamman tavan tehdä useita muutoksia verkkoliitäntään minimaalisilla virheillä.

Vaihdetaan nyt vaihteita ja katsotaan, kuinka voit käyttää NMState-määritystyökalua verkkoliittymien määrittämiseen Linuxissa.

Vaihe 1: Asenna NMState Networking Config Tool

Saat pallon pyörimään asentamalla Nmstaten. Tarkista ensin paketin saatavuus Fedora-varastoista seuraavasti:

sudo dnf search nmstate

Tulosteesta voimme nähdä, että verkonhallinta on saatavilla virallisissa arkistoissa.

Asenna seuraavaksi NMstate seuraavasti. Tämä toimii Fedora 31:ssä ja uudemmissa versioissa.

sudo dnf install nmstate

Komento asentaa NMState-verkonhallintaliittymän muiden Python-riippuvuuksien rinnalle.

Kun asennus on valmis, varmista, että nmstate-paketti on asennettu seuraavasti.

rpm -qi nmstate

Ota RHEL-pohjaisessa Linuxissa käyttöön copr-arkisto ensin.

sudo dnf copr enable nmstate/nmstate-stable

Asenna sitten NMstate seuraavasti.

sudo dnf install nmstate

Katso lisäohjeet NMStaten asentamiseen lähteestä.

Kun olet asentanut, voit tarkistaa asennetun NMstaten version seuraavasti.

nmstatectl version

1.0.2

NMState Configuration Toolin käyttö Linuxissa

Kun NMstate on asennettu, päästään käsiksi siihen, kuinka voit hyödyntää Network Manager API:ta parhaalla mahdollisella tavalla.

Voit tarkastella verkkoliitännän nykyistä verkkokokoonpanoa suorittamalla seuraavan komennon. Tässä on enp0s3-käyttöliittymäsi asetukset.

nmstatectl show enp0s3

Tulos on jaettu 4 erilliseen osaan:

  • dns-resolver: Tämä osio sisältää tietyn käyttöliittymän nimipalvelimen määritykset.
  • route-rules: Tämä määrittää reitityssäännöt.
  • reitit: Tämä sisältää sekä dynaamiset että staattiset reitit.
  • Liitännät: Tässä osiossa määritetään sekä ipv4- että ipv6-asetukset.

Verkkoasetusten muuttaminen Linuxissa

Voit käyttää NMState-määritystyökalua määrittääksesi isäntäsi haluttuun tilaan joko interaktiivisen tai tiedostopohjaisen tilan avulla.

  • Interaktiivinen: Tämä muokkaa verkkoliitäntää nmstatectl edit -komennolla. Tämä komento avaa tekstieditorin, jonka EDITOR-ympäristömuuttuja määrittää. Kun muutokset on tallennettu, NMState ottaa uuden kokoonpanon käyttöön välittömästi, ellei syntaksivirheitä havaita.
  • Tiedostopohjainen: Tiedostopohjaisessa tilassa käyttöliittymämääritykset otetaan käyttöön YAML- tai JSON-tiedoston avulla nmstatectl apply -komennolla.

Anna meidän nyt likaantua kätemme ja katsoa, kuinka voit muokata verkkoasetuksia NMStaten avulla.

Fedora-järjestelmässämme on kaksi aktiivista verkkoliitäntää seuraavalla kokoonpanolla:

ip -br -4 a
Näytelähtö
lo               UNKNOWN        127.0.0.1/8 
enp0s3           UP             192.168.2.104/24 
enp0s8           UP             192.168.2.103/24 

Esimerkki interaktiivisesta konfigurointitilasta

Käytämme interaktiivista tilaa muuttaaksemme enp0s3-verkkoliitännän MTU:ta (Maximum Transmission Unit). Oletuksena tämä on 1500, kuten kuvassa.

ifconfig

Muutamme tämän arvoksi 4000. Teemme sen käyttämällä nmstatectl edit -komentoa seuraavasti.

sudo nmstatectl edit enp0s3

Tämä avaa määritykset tekstieditorissa. Meidän tapauksessamme se avautuu vim-editorissa. Vieritä seuraavaksi kokonaan alas ja etsi mtu-parametri. Muutamme arvoksi 4000, aivan kuten muokkaamme tiedostoa vimissä. Sitten tallennamme muutokset.

Kun tallennat ja poistut tiedostosta, näet jonkin verran salattua tulostetta päätteessä, kun NMstate tallentaa muutokset. Mitään väliintuloa ei tarvita, joten istu vain paikallaan.

Vahvistakaamme nyt, että muutos on tehty.

ifconfig

Päätteen lähdöstä näemme, että olemme onnistuneesti vaihtaneet MTU:n arvoon 4000 oletusarvosta 1500.

Esimerkki tiedostopohjaisesta konfiguraatiotilasta

Muokatkaamme nyt kokoonpanoa tiedostopohjaisella tilassa. Tässä esimerkissä poistamme IPv6:n käytöstä enp0s8-verkkoliitännässä. Ensimmäinen vaihe on luoda YAML-tiedosto, joka määrittää enp0s8-verkkoliitännän halutun tilan.

sudo nmstatectl show enp0s8 > enp0s8.yml

Seuraavaksi muokkaamme YAML-tiedostoa seuraavasti.

sudo vim enp0s8.yml

Vieritä alas ipv6-osioon. Jos haluat poistaa IPv6:n käytöstä, aseta sallittu parametri arvoon false ja poista rivit, jotka on yliviivattu.

Tallenna kokoonpano ja käytä uutta tilaa YAML-tiedoston avulla seuraavasti.

sudo nmstatectl apply enp0s8.yml

Suorita nyt esitetty komento varmistaaksesi, että IPv6 on poistettu käytöstä. Näytössä näkyy, että enp0s8-verkkoliitännän IPv6 on tyhjä, mikä tarkoittaa, että olemme onnistuneesti poistaneet IPv6:n käytöstä rajapinnassa.

ip -br a 

Verkkomuutosten käyttöönotto väliaikaisesti

Toinen todella kätevä toiminto, jonka NMstate tarjoaa, on mahdollisuus tilapäisesti määrittää haluttu verkkotila. Kun olet tyytyväinen kokoonpanoon, voit jatkaa ja tehdä muutokset pysyviksi. Muussa tapauksessa tehdyt muutokset palautuvat alkuperäisiin asetuksiin aikakatkaisun umpeuduttua. Oletusaikakatkaisu on 60 sekuntia.

Tämän osoittamiseksi asetamme tilapäisesti staattisen IP:n enp0s3-liittymään ja poistamme DHCP:n käytöstä. Jälleen kerran, käytä tiedostoa tekstieditorilla.

sudo vim enp0s3.yml

Vieritä ipv4-osioon. Määritä staattinen IP – meidän tapauksessamme 192.168.2.150 ja poista rivit, jotka on yliviivattu. Muista lisäksi asettaa dhcp-parametrin arvoksi false.

Tallenna tiedosto ja tee muutokset väliaikaisesti seuraavasti.

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

Valinta --no-commit ottaa muutokset käyttöön tilapäisesti --timeout-vaihtoehdon määrittämän ajanjakson ajan, joka tässä esimerkissä on 20 sekuntia.

Varmistaaksemme muutosten ajallisen soveltamisen tarkistamme IP-konfiguraation 20 sekunnin välein.

ip -br a 

Lähdöstä näet, että liitännän IP-kokoonpano palasi DHCP:hen 20 sekunnin kuluttua. IP-osoite palasi arvoon 192.168.2.104 aiemmasta staattisesti määritetystä IP-osoitteesta, joka oli 192.168.2.150.

NMState-työkalu on toki kätevä työkalu verkkoliittymien määrittämiseen. Se on ilmoittava työkalu, joka soveltaa haluttua isäntäliittymän konfigurointitilaa NetworkManager API:n avulla.

Tila on helppo määrittää käyttämällä joko vuorovaikutteista lähestymistapaa tai tiedostopohjaista menetelmää, joka käyttää esikonfiguroitua YAMLa. vahva> tiedosto. Tämä parantaa konfigurointitehtävien automatisointia ja vähentää virheitä määrityksen aikana.