NMState: Għodda Dikjarattiva għall-Konfigurazzjoni tan-Netwerking


L-ekosistema Linux tipprovdi bosta modi ta 'konfigurazzjoni tan-netwerking inkluża l-utilità GUI popolari nmtui. Din il-gwida tintroduċi għodda oħra ta' konfigurazzjoni tan-netwerk magħrufa bħala NMState

NMState huwa maniġer tan-netwerk dikjarattiv għall-konfigurazzjoni tan-netwerking fuq hosts Linux. Hija librerija li tipprovdi għodda tal-linja tal-kmand li tamministra s-settings tan-netwerk ospitanti. Jiġġestixxi n-netwerking tal-host permezz ta' API dikjarattiva lejn it-tramuntana. Fil-ħin tal-kitba ta 'din il-gwida, id-daemon NetworkManager huwa l-uniku fornitur appoġġjat minn NMState.

F'din il-gwida, inħarsu lejn uħud mill-użu ta 'eżempji tal-għodda NMState. Għal din il-gwida, aħna se nuru dan billi nużaw Fedora Linux.

Il-ġestjoni tan-netwerk tista' tieħu żewġ approċċi - Imperattiv u dikjarattiv. Fl-approċċ imperattiv, inti tiddefinixxi b'mod espliċitu l-istat tan-netwerking ta 'interface billi tmexxi kmandi fuq it-terminal. L-enfasi hija fuq il-'kif'.

Pereżempju, biex twaqqaf netwerk billi tuża l-approċċ imperattiv, mexxi l-kmand:

$ sudo ifconfig enp0s3 down

Min-naħa l-oħra, l-approċċ dikjarattiv juża fajl YAML biex japplika l-bidliet għal konfigurazzjoni. Il-biċċa l-kbira tal-għodod tal-orkestrazzjoni DevOps bħal Kubernetes jużaw dan l-approċċ biex jużaw applikazzjonijiet tal-miżwed bl-użu ta 'fajl YAML.

Dan l-approċċ jipprovdi dak li komunement jissejjaħ Infrastruttura bħala Kodiċi (IaC) fiċ-ċrieki DevOps. Dan itejjeb l-awtomazzjoni tal-konfigurazzjoni tan-netwerk fuq il-host u jipprovdi mod veloċi u aktar affidabbli biex isiru bidliet multipli għal interface tan-netwerk bi żbalji minimi.

Issa, ejjew naqlbu l-gerijiet u naraw kif tista 'tuża l-għodda ta' konfigurazzjoni NMState biex tikkonfigura l-interfaces tan-netwerk tiegħek fil-Linux.

Pass 1: Installa NMState Networking Config Tool

Aħna se nġibu l-ballun rolling billi ninstallaw l-Nmstate. L-ewwel, iċċekkja d-disponibbiltà tal-pakkett mir-repożitorji Fedora kif ġej:

$ sudo dnf search nmstate

Mill-output, nistgħu naraw li l-maniġer tan-netwerk huwa disponibbli fuq ir-repożitorji uffiċjali.

Sussegwentement, installa NMstate kif ġej. Dan jaħdem fuq Fedora 31 u verżjonijiet aktar tard.

$ sudo dnf install nmstate

Il-kmand jinstalla l-API tal-maniġer tan-netwerk NMState flimkien ma 'dipendenzi oħra ta' Python.

Ladarba l-installazzjoni titlesta, ivverifika li l-pakkett nmstate huwa installat kif ġej.

$ rpm -qi nmstate

Għal Linux ibbażat fuq RHEL, l-ewwel ppermettiet ir-repożitorju copr.

$ sudo dnf copr enable nmstate/nmstate-stable

Imbagħad installa NMstate kif ġej.

$ sudo dnf install nmstate

Iċċekkja istruzzjonijiet addizzjonali dwar kif tinstalla NMState mis-sors.

Ladarba tkun installata, tista 'tiċċekkja l-verżjoni ta' NMstate installata kif ġej.

$ nmstatectl version

1.0.2

Bl-użu tal-Għodda ta 'Konfigurazzjoni NMState fil-Linux

B'NMstate installat, ejjew ninżlu għall-Knitty-gritties ta 'kif tista' tagħmel l-aħjar mill-API tal-maniġer tan-Netwerk.

Biex tara l-konfigurazzjoni tan-netwerk attwali tal-interface tan-netwerk tiegħek, mexxi l-kmand li ġej. Hawnhekk, hija l-konfigurazzjoni tal-interface enp0s3 tiegħek.

$ nmstatectl show enp0s3

L-output huwa maqsum f'4 taqsimiet distinti:

  • dns-resolver: Din it-taqsima fiha l-konfigurazzjoni nameserver għall-interface partikolari.
  • regoli tar-rotta: Dan jistipula r-regoli tar-rotta.
  • rotot: Dan jinkludi kemm rotot dinamiċi kif ukoll statiċi.
  • Interfaces: Din it-taqsima tispeċifika kemm is-settings tal-ipv4 kif ukoll tal-ipv6.

Nibdlu l-Konfigurazzjoni tan-Netwerk fil-Linux

Tista 'tuża l-għodda ta' konfigurazzjoni NMState biex tikkonfigura l-hosts tiegħek għall-istat mixtieq billi tuża modi jew interattivi jew ibbażati fuq fajls.

  • Interattiv: Dan jeditja interface tan-netwerk billi juża l-kmand tal-editjar nmstatectl. Dan il-kmand jiftaħ editur tat-test li huwa definit mill-varjabbli ambjentali EDITOR. Ladarba l-bidliet jiġu ssejvjati, NMState japplika l-konfigurazzjoni l-ġdida immedjatament sakemm ma jinstabux żbalji ta' sintassi.
  • Ibbażat fuq fajl: Fil-modalità bbażata fuq fajl, il-konfigurazzjoni tal-interface tiġi applikata permezz ta' fajl YAML jew JSON bl-użu tal-kmand nmstatectl apply.

Ejjew issa maħmuġna jdejna u ċċekkja kif tista' timmodifika l-konfigurazzjoni tan-netwerk billi tuża NMState.

Is-sistema Fedora tagħna għandha żewġ interfaces tan-netwerk attivi bil-konfigurazzjoni li ġejja:

$ 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 

Se nużaw il-mod interattiv biex nibdlu l-MTU (Unità ta 'Trażmissjoni Massima) tal-interface tan-netwerk enp0s3. B'mod awtomatiku, dan huwa ssettjat għal 1500 kif muri.

$ ifconfig

Aħna se nbiddlu dan għal 4000. Aħna se nagħmlu dan billi tuża l-kmand tal-editjar nmstatectl kif ġej.

$ sudo nmstatectl edit enp0s3

Dan jiftaħ il-konfigurazzjoni f'editur tat-test. Għall-każ tagħna, tiftaħ fl-editur vim. Sussegwentement, iscroll it-triq kollha 'l isfel u sib il-parametru mtu. Aħna se nbiddlu l-valur għal 4000, bħalma nbiddlu fajl f'vim. Imbagħad aħna se nsalvaw il-bidliet.

Meta tissejvja u toħroġ mill-fajl, tara xi output scrambled fuq it-terminal hekk kif NMstate jiffranka l-bidliet. L-ebda intervent mhu meħtieġ għalhekk, poġġi kwiet.

Issa ejja nikkonfermaw li l-bidla saret.

$ ifconfig

Mill-output tat-terminal, nistgħu naraw li bdilna b'suċċess l-MTU għal 4000 mill-valur default 1500.

Ejjew issa nimmodifikaw il-konfigurazzjoni billi tuża l-modalità bbażata fuq il-fajl. F'dan l-eżempju, aħna se tiddiżattiva IPv6 għall-interface tan-netwerk enp0s8. L-ewwel pass huwa li toħloq fajl YAML li se jispeċifika l-istat mixtieq tal-interface tan-netwerk enp0s8.

$ sudo nmstatectl show enp0s8 > enp0s8.yml

Sussegwentement, aħna se neditjaw il-fajl YAML kif ġej.

$ sudo vim enp0s8.yml

Skrollja 'l isfel għat-taqsima ipv6. Biex tiddiżattiva l-IPv6, issettja l-parametru attivat bħala falz u ħassar il-linji li jkunu ġew milquta.

Issejvja l-konfigurazzjoni u applika l-istat il-ġdid billi tuża l-fajl YAML kif ġej.

$ sudo nmstatectl apply enp0s8.yml

Issa mexxi l-kmand muri biex tivverifika li l-IPv6 ġie diżattivat. L-output murija juri li l-IPv6 għall-interface tan-netwerk enp0s8 huwa vojt, li jimplika li ddiżattivajna IPv6 b'suċċess fuq l-interface.

$ ip -br a 

Funzjonalità oħra tassew utli li tipprovdi NMstate hija l-abbiltà li temporanjament jiġi kkonfigurat stat ta 'netwerking mixtieq. Ladarba tkun sodisfatt bil-konfigurazzjoni, tista 'tipproċedi u tagħmel il-bidliet permanenti. Inkella, il-bidliet li saru jerġgħu lura għas-settings inizjali ladarba jiskadi l-timeout. Il-timeout default huwa 60 sekonda.

Biex nuru dan, aħna se nissettjaw temporanjament IP statiku fuq l-interface enp0s3 u tiddiżattiva d-DHCP. Għal darb'oħra, aċċess għall-fajl billi tuża editur tat-test.

$ sudo vim enp0s3.yml

Skrollja għat-taqsima ipv4. Speċifika l-IP statiku - fil-każ tagħna 192.168.2.150 u ħassar il-linji li jkunu ġew intaljati. Barra minn hekk, kun żgur li tissettja l-parametru dhcp għal falz.

Issejvja l-fajl u temporanjament tikkommetti l-bidliet kif ġej.

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

L-għażla --no-commit tapplika temporanjament il-bidliet għal perjodu definit mill-għażla --timeout li, f'dan l-eżempju, hija ta' 20 sekonda.

Biex tivverifika l-applikazzjoni temporali tal-bidliet, aħna niċċekkjaw il-konfigurazzjoni tal-IP f'intervall ta 'ħin ta' 20 sekonda.

$ ip -br a 

Mill-output, tista 'tara li l-konfigurazzjoni tal-IP tal-interface marret lura għal DHCP wara l-intervall ta' ħin ta '20 sekonda. L-indirizz IP mar lura għal 192.168.2.104 mill-IP preċedenti kkonfigurat b'mod statiku li kien 192.168.2.150.

Ċertament, l-għodda NMState hija għodda konvenjenti għall-konfigurazzjoni tal-interfaces tan-netwerk tiegħek. Hija għodda dikjarattiva li tapplika l-istat ta 'konfigurazzjoni mixtieq ta' interface ta 'host billi tuża l-API NetworkManager.

L-istat huwa faċilment definit bl-użu jew l-approċċ interattiv jew bl-użu tal-metodu bbażat fuq fajl li juża fajl YAML konfigurat minn qabel. Dan isaħħaħ l-awtomazzjoni tal-kompiti tal-konfigurazzjoni u t-tnaqqis tal-iżbalji waqt il-konfigurazzjoni.