NMSte: Usa ka Deklarasyon nga Himan sa Pag-configure sa Networking


Ang Linux ecosystem naghatag ug daghang paagi sa pag-configure sa networking lakip ang sikat nga nmtui GUI utility. Kini nga giya nagpaila sa laing himan sa pag-configure sa network nga nailhan nga NMState

Ang NMState usa ka deklaratibo nga manager sa network alang sa pag-configure sa networking sa mga host sa Linux. Kini usa ka librarya nga naghatag usa ka himan sa command-line nga nagdumala sa mga setting sa host network. Nagdumala kini sa host networking pinaagi sa usa ka deklaratibo nga API sa amihanan. Sa panahon sa pagsulat niini nga giya, ang NetworkManager daemon mao lamang ang tighatag nga gisuportahan sa NMState.

Niini nga giya, among gitan-aw ang pipila ka pananglitan sa paggamit sa tool sa NMState. Alang niini nga giya, among ipakita kini gamit ang Fedora Linux.

Ang pagdumala sa network mahimo’g duha ka pamaagi - Imperative ug deklaratibo. Sa imperative approach, klaro nimong gihubit ang networking state sa usa ka interface pinaagi sa pagpadagan sa mga command sa terminal. Ang focus kay sa 'unsaon'.

Pananglitan, aron mapaubos ang usa ka network gamit ang kinahanglanon nga pamaagi, padagana ang mando:

$ sudo ifconfig enp0s3 down

Sa laing bahin, ang deklaratibo nga pamaagi naggamit sa YAML file aron magamit ang mga pagbag-o sa usa ka configuration. Kadaghanan sa mga himan sa orkestra sa DevOps sama sa Kubernetes naggamit niini nga pamaagi sa pag-deploy sa mga aplikasyon sa pod gamit ang YAML file.

Kini nga pamaagi naghatag sa kasagarang gitawag nga Infrastructure as Code (IaC) sa DevOps circles. Gipauswag niini ang automation sa pag-configure sa network sa host ug naghatag usa ka paspas ug mas kasaligan nga paagi sa paghimo og daghang mga pagbag-o sa interface sa network nga adunay gamay nga mga sayup.

Karon, atong ibalhin ang mga gear ug tan-awon kung giunsa nimo magamit ang tool sa pagsumpo sa NMState aron ma-configure ang imong mga interface sa network sa Linux.

Lakang 1: I-install ang NMState Networking Config Tool

Makuha namon ang bola pinaagi sa pag-install sa Nmstate. Una, susiha ang pagkaanaa sa package gikan sa Fedora repository sama sa mosunod:

$ sudo dnf search nmstate

Gikan sa output, atong makita nga ang network manager anaa sa opisyal nga mga repositoryo.

Sunod, i-install ang NMstate ingon sa mosunod. Naglihok kini sa Fedora 31 ug sa ulahi nga mga bersyon.

$ sudo dnf install nmstate

Gi-install sa command ang NMState network manager API kauban ang uban pang mga dependency sa Python.

Kung kompleto na ang pag-install, pamatud-i nga ang pakete sa nmstate na-install sama sa mosunod.

$ rpm -qi nmstate

Alang sa Linux nga nakabase sa RHEL, i-enable una ang copr repository.

$ sudo dnf copr enable nmstate/nmstate-stable

Dayon i-install ang NMstate ingon sa mosunod.

$ sudo dnf install nmstate

Tan-awa ang dugang nga mga panudlo kung giunsa ang pag-install sa NMState gikan sa gigikanan.

Sa higayon nga ma-install, mahimo nimong susihon ang bersyon sa NMstate nga na-install sama sa mosunod.

$ nmstatectl version

1.0.2

Paggamit sa NMSstate Configuration Tool sa Linux

Sa pag-instalar sa NMstate, tun-an nato ang Knitty-gritties kung unsaon nimo pagpahimulos ang Network manager API.

Aron matan-aw ang kasamtangan nga network configuration sa imong network interface, padagana ang mosunod nga command. Dinhi, mao ang configuration sa imong enp0s3 interface.

$ nmstatectl show enp0s3

Ang output gibahin sa 4 nga lahi nga mga seksyon:

  • dns-resolver: Kini nga seksyon naglangkob sa nameserver configuration alang sa partikular nga interface.
  • route-rules: Kini naglatid sa routing rules.
  • mga ruta: Kini naglakip sa dynamic ug static nga mga rota.
  • Mga Interface: Kini nga seksyon nagtino sa ipv4 ug ipv6 nga mga setting.

Pag-usab sa Network Configuration sa Linux

Mahimo nimong gamiton ang tool sa pag-configure sa NMState aron ma-configure ang imong mga host sa gusto nga estado gamit ang interactive o file-based nga mga mode.

  • Interactive: Kini nag-edit sa interface sa network gamit ang nmstatectl edit command. Kini nga sugo nagbukas sa usa ka text editor nga gihubit sa EDITOR environment variable. Kung ma-save na ang mga pagbag-o, i-apply dayon sa NMState ang bag-ong configuration gawas lang kung namatikdan ang mga sayup sa syntax.
  • Gibase sa file: Sa mode nga gibase sa file, ang configuration sa interface gigamit gamit ang YAML o JSON file gamit ang nmstatectl apply command.

Atong hugawan ang atong mga kamot ug tan-awon kon unsaon nimo pag-usab ang configuration sa network gamit ang NMState.

Ang among Fedora nga sistema adunay duha ka aktibo nga mga interface sa network nga adunay mosunod nga pag-configure:

$ 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 

Gamiton namo ang interactive mode aron usbon ang MTU (Maximum Transmission Unit) sa enp0s3 network interface. Sa kasagaran, kini gibutang sa 1500 sama sa gipakita.

$ ifconfig

Usbon namo kini sa 4000. Buhaton namo kini gamit ang nmstatectl edit command sama sa mosunod.

$ sudo nmstatectl edit enp0s3

Gibuksan niini ang configuration sa usa ka text editor. Alang sa among kaso, gibuksan kini sa vim editor. Sunod, pag-scroll hangtod sa ubos ug pangitaa ang parameter sa mtu. Usbon namo ang bili ngadto sa 4000, sama sa among pag-edit sa usa ka file sa vim. Unya among i-save ang mga pagbag-o.

Kung imong gi-save ug gi-exit ang file, imong makita ang pipila ka mga scrambled output sa terminal samtang ang NMstate nagtipig sa mga pagbag-o. Walay interbensyon ang gikinahanglan busa, lingkod lang.

Atong pamatud-an karon nga ang pagbag-o nahimo.

$ ifconfig

Gikan sa output sa terminal, atong makita nga malampuson natong giusab ang MTU ngadto sa 4000 gikan sa default nga 1500 nga bili.

Usbon nato karon ang configuration gamit ang file-based mode. Niini nga pananglitan, atong i-disable ang IPv6 para sa enp0s8 network interface. Ang unang lakang mao ang paghimo og YAML file nga magtino sa gitinguha nga kahimtang sa enp0s8 network interface.

$ sudo nmstatectl show enp0s8 > enp0s8.yml

Sunod, usbon namo ang YAML file sama sa mosunod.

$ sudo vim enp0s8.yml

Pag-scroll paubos sa seksyon sa ipv6. Aron ma-disable ang IPv6, ibutang ang enabled parameter sa false ug delete ang mga linya nga naigo.

I-save ang configuration ug i-apply ang bag-ong estado gamit ang YAML file sama sa mosunod.

$ sudo nmstatectl apply enp0s8.yml

Karon padagana ang command nga gipakita aron mapamatud-an nga ang IPv6 wala na gi-disable. Ang output nga gipakita nagpakita nga ang IPv6 para sa enp0s8 network interface blangko, nagpasabot nga malampuson natong na-disable ang IPv6 sa interface.

$ ip -br a 

Ang lain nga praktikal nga gamit nga gihatag sa NMstate mao ang abilidad sa temporaryo nga pag-configure sa usa ka gitinguha nga estado sa network. Kung natagbaw ka sa pag-configure, mahimo nimong ipadayon ug himuon nga permanente ang mga pagbag-o. Kung dili, ang mga pagbag-o nga gihimo mobalik sa una nga mga setting kung matapos ang oras. Ang default nga timeout mao ang 60 segundos.

Aron ipakita kini, temporaryo kaming magbutang ug static IP sa enp0s3 interface ug i-disable ang DHCP. Sa makausa pa, i-access ang file gamit ang text editor.

$ sudo vim enp0s3.yml

Pag-scroll sa seksyon sa ipv4. Tinoa ang static nga IP - sa among kaso 192.168.2.150 ug kuhaa ang mga linya nga naigo. Dugang pa, siguruha nga ibutang ang parameter sa dhcp sa sayup.

I-save ang file ug temporaryo nga itugyan ang mga pagbag-o sama sa mosunod.

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

Ang --no-commit nga opsyon temporaryo nga magamit ang mga pagbag-o alang sa usa ka yugto nga gitakda sa --timeout nga opsyon nga, niini nga pananglitan, 20 segundos.

Aron mapamatud-an ang temporal nga aplikasyon sa mga pagbag-o, among susihon ang pagsumpo sa IP sa agwat sa oras nga 20 segundos.

$ ip -br a 

Gikan sa output, imong makita nga ang interface IP configuration mibalik sa DHCP human sa agwat sa oras nga 20 segundos. Ang IP address mibalik sa 192.168.2.104 gikan sa naunang statically configured IP nga 192.168.2.150.

Tinuod, ang tool sa NMState usa ka kombenyente nga himan alang sa pag-configure sa imong mga interface sa network. Kini usa ka deklaratibo nga himan nga magamit ang gusto nga kahimtang sa pag-configure sa interface sa host gamit ang NetworkManager API.

Ang estado dali nga gihubit gamit ang interactive nga pamaagi o gamit ang file-based nga pamaagi nga naggamit sa usa ka pre-configure nga YAML file. Gipauswag niini ang automation sa mga buluhaton sa pag-configure ug pagkunhod sa mga sayup sa panahon sa pag-configure.