Gestionăm conexiunile de rețea în Linux folosind utilitarul din linia de comandă nmcli

Utilizați toate funcționalitățile instrumentului de gestionare a conexiunilor de rețea NetworkManager în linia de comandă Linux cu ajutorul utilitarului nmcli.

Gestionăm conexiunile de rețea în Linux folosind utilitarul din linia de comandă nmcli

Utilitarul nmcli acces direct la API pentru a accesa funcțiile NetworkManager.

Acesta a apărut în 2010 și pentru mulți a devenit o alternativă la configurarea interfețelor și conexiunilor de rețea. Deși unii continuă să folosească ifconfig. Deoarece nmcli este un instrument de linie de comandă (CLI), destinat utilizării în feronerie terminale și în scripturi, este perfect pentru administratorii de sistem care lucrează fără GUI.

Sintaxa comenzilor nmcli

În general, sintaxa arată astfel:

$ nmcli  

  • options sunt parametrii care definesc detaliile de funcționare ale nmcli,
  • section (secțiune) definește ce funcționalitate a utilitarului să fie folosită,
  • action (acțiune) permite specificarea a ceea ce, de fapt, trebuie realizat.

Există în total 8 secțiuni, fiecare dintre acestea fiind legată de un anumit set de comenzi (acțiuni):

  • Ajutor oferă asistență privind comenzile nmcli și utilizarea acestora.
  • General returnează statusul NetworkManager și configurația globală.
  • Networking activază comenzi pentru a solicita starea conexiunii de rețea și pentru a activa / dezactiva conexiunile.
  • Radio activază comenzi pentru a solicita starea conexiunii la rețeaua WiFi și pentru a activa / dezactiva conexiunile.
  • Monitor activază comenzi pentru a monitoriza activitatea NetworkManager și a observa schimbările stării conexiunilor de rețea.
  • Connection activză comenzi pentru a gestiona interfețele de rețea, pentru a adăuga noi conexiuni și a elimina cele existente.
  • Dispozitiv este folosit în principal pentru a modifica parametrii legați de dispozitive (de exemplu, numele interfeței) sau pentru a conecta dispozitive utilizând o conexiune existentă.
  • Secret înregistrează nmcli ca un „agent secret” al NetworkManager, care ascultă mesajele ascunse. Această secțiune este folosită rar, deoarece nmcli funcționează astfel în mod implicit atunci când se conectează la rețele.

Exemple simple

Înainte de a începe, asigurați-vă că NetworkManager este pornit și nmcli poate comunica cu acesta:

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

Adesea, activitatea începe cu vizionarea tuturor profilurilor de conexiuni de rețea:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Conexiune cablată 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Conexiune cablată 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Conexiune cablată 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Aceasta comandă folosește acțiunea show pentru secțiunea Conexiune.

Pe mașina de testare rulează Ubuntu 20.04. În acest caz, am găsit trei conexiuni cablate: enp0s3, enp0s8 și enp0s9.

Gestionarea conexiunilor

Este important să înțelegem că în nmcli termenul Conexiune se referă la o entitate care conține toate informațiile despre conexiune. Cu alte cuvinte, aceasta este configurația rețelei. Conexiunea încorporează toate informațiile legate de conexiuni, inclusiv nivelul de legătură și informațiile de adresare IP. Acestea sunt nivelurile 2 și 3 din modelul OSI.

Atunci când configurezi rețeaua în Linux, de obicei configurezi conexiuni care, în cele din urmă, vor fi legate de dispozitivele de rețea, care la rândul lor sunt interfețele de rețea instalate pe computer. Când un dispozitiv folosește o conexiune, aceasta este considerată activă sau ridicată. Dacă conexiunea nu este utilizată, atunci este inactivă sau resetată.

Adăugarea conexiunilor de rețea

Utilitarul nmcli permite adăugarea rapidă și configurarea imediată a conexiunilor. De exemplu, pentru a adăuga Conexiunea cablată 2 (cu enp0s8), trebuie să rulezi următoarea comandă din terminal ca superutilizator:

$ sudo nmcli connection add type ethernet ifname enp0s8
Conexiunea 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) a fost adăugată cu succes.

În opțiunea type specificăm că aceasta va fi o conexiune Ethernet, iar în opțiunea ifname (numele interfeței) indicăm interfața de rețea pe care dorim să o utilizăm.

Iată ce va apărea după executarea comenzii:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Conexiune cablată 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Conexiune cablată 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Conexiune cablată 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

A fost creată o nouă conexiune, ethernet-enp0s8. I-a fost alocat un UUID, iar tipul de conexiune este Ethernet. O vom activa folosind comanda up:

$ nmcli connection up ethernet-enp0s8
Conexiunea a fost activată cu succes (Calea activă D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)

Verificăm din nou lista conexiunilor active:

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Conexiune cablată 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Conexiune cablată 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

A fost adăugată o nouă conexiune ethernet-enp0s8, aceasta este activă și folosește interfața de rețea enp0s8.

Configurarea conexiunilor

Utilitarul ncmli permite modificarea ușoară a parametrilor conexiunilor existente. De exemplu, poate fi necesar să schimbați de la un IP dinamic (DHCP) la un IP static.

Să presupunem că trebuie să setăm adresa IP la 192.168.4.26. Pentru aceasta, folosim două comenzi. Prima va stabili efectiv adresa IP, iar a doua va schimba metoda de setare a adresei IP la "manual":

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

Nu uitați să setați și masca de subnet. Pentru conexiunea noastră de test, aceasta este 255.255.255.0, sau cu /24 pentru rutare fără clasă (CIDR).

Pentru ca modificările să aibă efect, trebuie să dezactivați și apoi să activați din nou conexiunea:

$ nmcli connection down ethernet-enp0s8
Conexiunea 'ethernet-enp0s8' a fost dezactivată cu succes (Calea activă D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Conexiunea a fost activată cu succes (Calea activă D-Bus: /org/freedesktop/NetworkManager/ActiveC

Dacă, dimpotrivă, doriți să setați DHCP, în loc de manual folosiți auto:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Lucrul cu dispozitivele

Pentru aceasta folosim secțiunea Dispozitive.

Verificarea stării dispozitivelor

$ nmcli device status
DISPOZITIV  TIP      STARE      CONEXIUNE        
enp0s3  ethernet  conectat  Conexiune cablată 1
enp0s8  ethernet  conectat  ethernet-enp0s8    
enp0s9  ethernet  conectat  Conexiune cablată 3
lo      loopback  neadministrat  --  

Cererea de informații despre dispozitiv

Pentru aceasta folosim acțiunea show din secțiunea Dispozitive (trebuie să specificăm numele dispozitivului). Utilitarul oferă multe informații, adesea pe mai multe pagini.
Să ne uităm la interfața enp0s8, care folosește noua noastră conexiune. Să ne asigurăm că folosește exact adresa IP pe care am setat-o anterior:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (conectat)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

Sunt suficiente informații. Să evidențiem cele mai importante:

  • Numele interfeței de rețea: enp0s8.
  • Tipul de conectare: conexiune Ethernet prin cablu.
  • Vedem adresa MAC a dispozitivului.
  • Este specificat Maximum transmission unit (MTU) — dimensiunea maximă a unității de date utile a unui pachet, care poate fi transmisă de protocol fără fragmentare.
  • Dispozitiv în prezent conectat.
  • Numele conexiunii, care utilizează dispozitivul: ethernet-enp0s8.
  • Dispozitivul folosește Adresă IP, pe care l-am configurat anterior: 192.168.4.26/24.

Alte informații se referă la parametrii de rutare și gateway implicit ai conexiunii. Acestea depind de rețeaua specifică.

Editor interactiv nmcli

nmcli are și un editor interactiv simplu, în care ar putea fi mai confortabil pentru cineva să lucreze. Pentru a-l lansa, de exemplu, pentru conexiunea ethernet-enp0s8, folosiți acțiunea edit:

$ nmcli connection edit ethernet-enp0s8

Are, de asemenea, un mic ajutor, deși este mai mic decât versiunea consolei:

===| editor interactiv nmcli pentru conexiuni |===
Editarea conexiunii existente '802-3-ethernet': 'ethernet-enp0s8'
Tastați 'help' sau '?' pentru comenzile disponibile.
Tastați 'print' pentru a arăta toate proprietățile conexiunii.
Tastați 'describe [<setting>.<prop>]' pentru o descriere detaliată a proprietății.
Puteți edita următoarele setări: conexiune, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Dacă introduceți comanda print și apăsați Enter, nmcli va afișa toate proprietățile conexiunii:

===============================================================================
                 Detalii profil conexiune (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --

De exemplu, pentru a seta proprietatea DHCP pentru conexiune, introduceți goto ipv4 și apăsați Enter:

nmcli> goto ipv4
Puteți edita următoarele proprietăți: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>

Apoi, scrieți set method auto și apăsați Enter:

nmcli ipv4> set method auto
Doriți, de asemenea, să ștergeți 'ipv4.addresses'? [yes]:

Dacă doriți să ștergeți adresa IP statică, apăsați Enter. În caz contrar, introduceți no și apăsați Enter. Puteți să-l salvați dacă credeți că vă va fi util în viitor. Dar chiar și cu un IP static salvat, DHCP va fi folosit dacă metoda este setată pe auto.

Utilizați comanda save pentru a salva modificările:

nmcli ipv4> save
Conexiunea 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) a fost actualizată cu succes.
nmcli ipv4>

Introduceți quit pentru a ieși din editorul interactiv nmcli. Dacă v-ați răzgândit să ieșiți — folosiți comanda back.

Și aceasta nu este tot.

Deschideți editorul interactiv nmcli pentru a vedea câte setări există și ce proprietăți are fiecare setare. Editorul interactiv este un instrument excelent, dar, dacă doriți să utilizați nmcli în comenzi unice sau scripturi, va trebui să folosiți versiunea obișnuită pentru linia de comandă.

Acum că aveți noțiunile de bază, familiarizați-vă cu pagina de ajutor nmcli, pentru a descoperi cu ce altceva vă poate ajuta.

În numele publicității

Servere epice — acesta este servere virtuale pe Windows sau Linux cu procesoare puternice din familia AMD EPYC și SSD-uri NVMe Intel foarte rapide. Grăbiți-vă să comandați!

Gestionăm conexiunile de rețea în Linux folosind utilitarul din linia de comandă nmcli

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster