Administrer netværksforbindelser i Linux med kommandolinjeværktøjet nmcli

Udnyt alle funktioner i værktøjet til netværksforbindelser NetworkManager fra kommandolinjen i Linux med værktøjet nmcli.

Administrer netværksforbindelser i Linux med kommandolinjeværktøjet nmcli

Utility nmcli henvender sig direkte til API'et for at få adgang til funktioner fra NetworkManager.

Det blev introduceret i 2010 og er for mange blevet et alternativ til konfiguration af netværksinterfacer og forbindelser. Selvom nogle stadig bruger ifconfig. Da nmcli er et kommandolinjeværktøj (CLI), der er beregnet til brug i terminalvinduer og scripts, er det ideelt til systemadministratorer, der arbejder uden GUI.

Syntaksen for ncmli-kommandoer

Generelt ser syntaksen sådan ud:

$ nmcli  

  • options — er parametre, der definerer detaljeret, hvordan nmcli fungerer,
  • section (sektion) — definerer, hvilke funktioner værktøjet skal benytte,
  • action (handling) — tillader at angive, hvad der konkret skal gøres.

Der findes i alt 8 sektioner, hver relateret til et bestemt sæt af kommandoer (handlinger):

  • Help giver hjælp om ncmcli-kommandoer og deres anvendelse.
  • Generelt returnerer status for NetworkManager og den globale konfiguration.
  • Netværk aktiverer kommandoer til at anmode om status for netværksforbindelser og til at aktivere/deaktivere forbindelser.
  • Radio aktiverer kommandoer til at anmode om status for WiFi-forbindelser og til at aktivere/deaktivere forbindelser.
  • Monitor aktiverer kommandoer til at overvåge aktiviteten i NetworkManager og til at følge med i ændringer i netværksforbindelsernes status.
  • Connection aktiverer kommandoer til at administrere netværksinterfacer, tilføje nye forbindelser og slette eksisterende.
  • Device bruges primært til at ændre indstillinger relateret til enheder (f.eks. interface-navn) eller til at forbinde enheder ved hjælp af en eksisterende forbindelse.
  • Secret registrer nmcli som en 'hemmelig agent' for NetworkManager, der lytter til hemmelige meddelelser. Denne sektion bruges sjældent, da nmcli som standard fungerer sådan ved tilslutning til netværk.

Enkle eksempler

Før du begynder, skal du sikre dig, at NetworkManager er aktivt, og at nmcli kan kommunikere med det:

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

Ofte starter man med at se på alle profiler for netværksforbindelser:

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

Denne kommando bruger handlingen show til sektionen Connection.

På testmaskinen kører Ubuntu 20.04. I dette tilfælde fandt vi tre kablede forbindelser: enp0s3, enp0s8, og enp0s9.

Håndtering af forbindelser

Det er vigtigt at forstå, at i nmcli henviser termen Connection til en enhed, der indeholder al information om forbindelsen. Med andre ord er det konfigurationen af netværket. Connection inkorporerer al information relateret til forbindelser, herunder data-link niveau og information om IP-adressering. Dette er niveau 2 og niveau 3 i OSI netværksmodellen.

Når du konfigurerer netværket i Linux, konfigurerer du typisk forbindelser, som i sidste ende vil være knyttet til netværksenheder, der igen er netværksinterfaces, der er installeret på computeren. Når en enhed bruger en forbindelse, betragtes den som aktiv eller oppe. Hvis forbindelsen ikke bruges, er den inactive eller Brudt.

Tilføjelse af netværksforbindelser

Værktøjet nmcli giver dig mulighed for hurtigt at tilføje og straks konfigurere forbindelser. For eksempel, for at tilføje Wired connection 2 (med enp0s8), skal du som superbruger køre følgende kommando:

$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.

I optionen type angiver vi, at det vil være en Ethernet-forbindelse, og i optionen ifname (interface name) angiver vi netværksinterfacet, som vi ønsker at bruge.

Her er, hvad der vil ske efter at have kørt kommandoen:

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

En ny forbindelse, ethernet-enp0s8, er oprettet. Den har fået tildelt en UUID, og tilkoblingstypen er Ethernet. Vi aktiverer den ved hjælp af kommandoen up:

$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

Lad os tjekke listen over aktive forbindelser igen:

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

Der er tilføjet en ny ethernet-forbindelse enp0s8, som er aktiv og bruger netværksgrænsefladen enp0s8.

Indstilling af forbindelser

Ncmli-værktøjet gør det nemt at ændre indstillingerne for eksisterende forbindelser. For eksempel, hvis du vil ændre fra dynamisk (DHCP) til statisk IP-adresse.

Lad os sige, at vi skal indstille IP-adressen til 192.168.4.26. Vi bruger to kommandoer. Den første sætter IP-adressen direkte, mens den anden ændrer metoden til at sætte IP-adressen til "manuel":

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

Glem ikke også at angive subnetmasken. For vores testforbindelse er det 255.255.255.0, eller /24 for CIDR.

For at ændringerne træder i kraft, skal forbindelsen deaktiveres og derefter aktiveres igen:

$ nmcli connection down ethernet-enp0s8
Forbindelse 'ethernet-enp0s8' blev deaktiveret med succes (D-Bus aktiv sti: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Forbindelse blev aktiveret med succes (D-Bus aktiv sti: /org/freedesktop/NetworkManager/ActiveC

Hvis du derimod har brug for at indstille DHCP, skal du bruge auto i stedet for manual:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Arbejder med enheder

Til dette bruger vi sektionen Device.

Kontrol af enheders status

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  

Anmodning om enhedsoplysninger

Til dette bruger vi show-handlingen fra sektionen Device (du skal angive enhedsnavnet). Værktøjet viser en hel del information, ofte på flere sider.
Lad os tage et kig på grænsefladen enp0s8, som bruger vores nye forbindelse. Vi kontrollerer, at den bruger præcis den IP-adresse, vi har indstillet tidligere:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
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

Der er en hel del information. Lad os fremhæve det vigtigste:

  • Navnet på netværksgrænsefladen: enp0s8.
  • Forbindelsestype: kablet Ethernet-forbindelse.
  • Vi ser MAC-adressen på enheden.
  • Der er angivet Maximum transmission unit (MTU) — den maksimale størrelse af datablokken i én pakke, der kan sendes af protokollen uden fragmentering.
  • Enhed er i øjeblikket tilsluttet.
  • Navn på forbindelsen, som enheden bruger: ethernet-enp0s8.
  • Enheden bruger den IP-adresse, som vi tidligere har angivet: 192.168.4.26/24.

Andre oplysninger vedrører standardparametre for routing og gateway for forbindelsen. De afhænger af det specifikke netværk.

Interaktiv editor for nmcli

nmcli har også en simpel interaktiv editor, hvor det kan være mere komfortabelt for nogen at arbejde. For at starte den, for eksempel til forbindelsen ethernet-enp0s8, brug handlingen edit:

$ nmcli connection edit ethernet-enp0s8

Den har også en kort hjælp, som dog er mindre end konsolversionen:

===| nmcli interaktiv forbindelse editor |===
Redigering af eksisterende '802-3-ethernet' forbindelse: 'ethernet-enp0s8'
Skriv 'help' eller '?' for tilgængelige kommandoer.
Skriv 'print' for at vise alle forbindelsens egenskaber.
Skriv 'describe [<indstilling>.<egenskab>]' for en detaljeret egenskabsbeskrivelse.
Du kan redigere følgende indstillinger: forbindelse, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Hvis du indtaster kommandoen print og trykker på Enter, vil nmcli vise alle forbindelsens egenskaber:

===============================================================================
                 Forbindelsesprofil oplysninger (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:                 ja
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (standard)
connection.multi-connect:               0 (standard)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   nej
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (standard)
connection.secondaries:                 --

For eksempel, for at angive en egenskab for forbindelsen til DHCP, skriv goto ipv4 og tryk på Enter:

nmcli> goto ipv4
Du kan redigere følgende egenskaber: metode, dns, dns-søgning, 
dns-muligheder, dns-prioritet, adresser, gateway, ruter, rute-metrik, 
rute-tabel, routing-regler, ignorere-auto-ruter, ignorere-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, aldrig-standard, kan-fejle, 
dad-timeout
nmcli ipv4>

Skriv derefter set method auto og tryk på Enter:

nmcli ipv4> set method auto
Vil du også rydde 'ipv4.adresser'? [ja]:

Hvis du vil rydde den statiske IP-adresse, skal du trykke Enter. Ellers, indtast no og tryk på Enter. Du kan gemme det, hvis du tror, det vil være nyttigt for dig i fremtiden. Men selv med en gemt statisk IP-adresse vil DHCP blive brugt, hvis metoden er indstillet til auto.

Brug kommandoen save for at gemme ændringerne:

nmcli ipv4> save
Forbindelse 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) blev opdateret med succes.
nmcli ipv4>

Indtast quit for at forlade den interaktive nmcli-editor. Hvis du ombestemmer dig med at afslutte, skal du bruge kommandoen back.

Og det er langt fra alt

Åbn den interaktive nmcli-editor og se, hvor mange konfigurationer der findes, og hvor mange egenskaber hver konfiguration har. Den interaktive editor er et fremragende værktøj, men hvis du ønsker at bruge nmcli i en-linje-kommandoer eller scripts, skal du bruge den almindelige version til kommandolinjen.

Nu hvor du har det grundlæggende, gå videre til man-siden nmcli, for at finde ud af, hvad den ellers kan hjælpe dig med.

Annoncering

Episk servere — det er virtuelle servere på Windows eller Linux med kraftfulde AMD EPYC-processorer og meget hurtige NVMe Intel-diske. Skynd dig at bestille!

Administrer netværksforbindelser i Linux med kommandolinjeværktøjet nmcli

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster