Håndtering af netværksforbindelser i Linux ved hjælp af nmcli-konsolværktøjet

Udnyt det fulde udbytte af NetworkManager-netværksadministrationsværktøjet på Linux-kommandolinjen ved hjælp af nmcli-værktøjet.

Håndtering af netværksforbindelser i Linux ved hjælp af nmcli-konsolværktøjet

Hjælpeprogram nmcli kalder direkte API'et for at få adgang til NetworkManager-funktioner.

Den dukkede op i 2010 og er for mange blevet en alternativ måde at konfigurere netværksgrænseflader og forbindelser på. Selvom nogle mennesker stadig bruger ifconfig. Fordi nmcli er et kommandolinjegrænsefladeværktøj (CLI) designet til brug i terminalvinduer og scripts, er det ideelt for systemadministratorer, der arbejder uden en GUI.

ncmli kommandosyntaks

Generelt ser syntaksen sådan ud:

$ nmcli <options> <section> <action>

  • muligheder er parametre, der bestemmer finesserne af nmcli-drift,
  • sektion (sektion) - bestemmer hvilke funktioner i værktøjet der skal bruges,
  • handling - giver dig mulighed for at specificere, hvad der rent faktisk skal gøres.

Der er i alt 8 sektioner, som hver er forbundet med et bestemt sæt kommandoer (handlinger):

  • Hjælp giver hjælp om ncmcli-kommandoer og deres brug.
  • Generelt returnerer NetworkManager-status og global konfiguration.
  • netværk inkluderer kommandoer til at forespørge om netværksforbindelsesstatus og aktivere/deaktivere forbindelser.
  • Radio inkluderer kommandoer til at forespørge om WiFi-netværksforbindelsesstatus og aktivere/deaktivere forbindelser.
  • Overvåg omfatter kommandoer til at overvåge NetworkManager-aktivitet og observere ændringer i netværksforbindelsernes tilstand.
  • Forbindelse omfatter kommandoer til styring af netværksgrænseflader, tilføjelse af nye forbindelser og sletning af eksisterende.
  • Enhed bruges hovedsageligt til at ændre enhedsrelaterede parametre (såsom interfacenavn) eller til at forbinde enheder ved hjælp af en eksisterende forbindelse.
  • Secret registrerer nmcli som en NetworkManager "hemmelig agent", der lytter efter hemmelige beskeder. Denne sektion bruges sjældent, fordi nmcli fungerer på denne måde som standard, når der oprettes forbindelse til netværk.

Simple eksempler

Før du begynder, skal du sørge for, at NetworkManager kører, og at nmcli kan kommunikere med det:

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

Arbejdet begynder ofte med at se alle netværksforbindelsesprofiler:

$ 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 effekt vis for afsnittet Forbindelse.

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

Administrer forbindelser

Det er vigtigt at forstå, at i nmcli mener vi med udtrykket Connection en enhed, der indeholder al information om forbindelsen. Med andre ord er dette netværkskonfigurationen. Forbindelse indkapsler al forbindelsesrelateret information, inklusive linklag og IP-adresseringsoplysninger. Disse er Layer 2 og Layer 3 i OSI-netværksmodellen.

Når du opsætter et netværk i Linux, opsætter du normalt forbindelser, der ender med at blive bundet til netværksenheder, som igen er netværksgrænseflader installeret på computeren. Når en enhed bruger en forbindelse, betragtes den som aktiv eller forhøjet. Hvis en forbindelse ikke er i brug, er den inaktiv eller nulstillet.

Tilføjelse af netværksforbindelser

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

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

I typeindstillingen angiver vi, at dette vil være en Ethernet-forbindelse, og i indstillingen ifname (interfacenavn) angiver vi den netværksgrænseflade, vi ønsker at bruge.

Dette 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 er blevet oprettet, ethernet-enp0s8. Det blev tildelt et UUID, og ​​forbindelsestypen var Ethernet. Lad os hæve det ved hjælp af op-kommandoen:

$ 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

En ny forbindelse ethernet-enp0s8 er blevet tilføjet, den er aktiv og bruger enp0s8 netværksgrænsefladen.

Opsætning af forbindelser

ncmli-værktøjet giver dig mulighed for nemt at ændre parametrene for eksisterende forbindelser. For eksempel skal du ændre din dynamiske (DHCP) IP-adresse til en statisk IP-adresse.

Lad os sige, at vi skal indstille IP-adressen til 192.168.4.26. For at gøre dette bruger vi to kommandoer. Den første indstiller IP-adressen direkte, og den anden vil skifte IP-adresseindstillingsmetoden 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 indstille undernetmasken. For vores testforbindelse er dette 255.255.255.0 eller med /24 for klasseløs routing (CIDR).

For at ændringerne træder i kraft, skal du deaktivere og derefter genaktivere forbindelsen:

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

Hvis du tværtimod skal installere DHCP, skal du bruge auto i stedet for manuel:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Arbejde med enheder

Til dette bruger vi sektionen Enhed.

Kontrollerer enhedsstatus

$ 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  --  

Anmoder om enhedsoplysninger

For at gøre dette skal du bruge showhandlingen fra enhedssektionen (du skal angive enhedsnavnet). Værktøjet viser en masse information, ofte på flere sider.
Lad os se på enp0s8-grænsefladen, som vores nye forbindelse bruger. Lad os sikre os, at den bruger præcis den IP-adresse, som vi har angivet 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 ret mange oplysninger. Lad os fremhæve det vigtigste:

  • Netværksgrænsefladenavn: enp0s8.
  • Forbindelsestype: kablet Ethernet-forbindelse.
  • Vi ser enhedens MAC-adresse.
  • Maksimal transmissionsenhed (MTU) angivet — den maksimale størrelse af en nyttig datablok af én pakke, der kan transmitteres af protokollen uden fragmentering.
  • enhed aktuelt tilsluttet.
  • Forbindelsesnavnhvilken enhed bruger: ethernet-enp0s8.
  • Enheden bruger IP-adresse, som vi installerede tidligere: 192.168.4.26/24.

Andre oplysninger vedrører standard routing- og forbindelsesgatewayparametre. De afhænger af det specifikke netværk.

Interaktiv nmcli editor

nmcli har også en simpel interaktiv editor, som kan være mere behagelig for nogle at arbejde med. For at køre det på en ethernet-enp0s8-forbindelse for eksempel, brug effekt redigere:

$ nmcli connection edit ethernet-enp0s8

Den har også en lille hjælp, som dog er mindre i størrelsen end konsolversionen:

===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Hvis du skriver udskriftskommandoen og trykker på Enter, vil nmcli vise alle forbindelsesegenskaberne:

===============================================================================
                 Connection profile details (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:                 --

For at indstille forbindelsen til DHCP, skriv goto ipv4 og klik Indtast:

nmcli> goto ipv4
You may edit the following properties: 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>

Skriv derefter sæt metode auto og klik Indtast:

nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:

Hvis du vil slette den statiske IP-adresse, skal du klikke på Indtast. Ellers skal du skrive nej og trykke på Enter. Du kan gemme den, hvis du tror, ​​du får brug for den i fremtiden. Men selv med en gemt statisk IP-adresse, vil DHCP blive brugt, hvis metoden er indstillet til auto.

Brug gem-kommandoen til at gemme dine ændringer:

nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>

Skriv quit for at afslutte nmcli Interactive Editor. Hvis du ændrer mening om at tage af sted, skal du bruge tilbagekommandoen.

Og det er ikke alt

Åbn nmcli Interactive Editor og se, hvor mange indstillinger der er, og hvor mange egenskaber hver indstilling har. Den interaktive editor er et fantastisk værktøj, men hvis du vil bruge nmcli i one-liners eller scripts, skal du bruge den almindelige kommandolinjeversion.

Nu hvor du har det grundlæggende, så tjek ud man-side nmcli for at se, hvordan det ellers kan hjælpe dig.

Om reklamernes rettigheder

Episke servere - Er virtuelle servere på Windows eller Linux med kraftfulde AMD EPYC-familieprocessorer og meget hurtige Intel NVMe-drev. Skynd dig at bestille!

Håndtering af netværksforbindelser i Linux ved hjælp af nmcli-konsolværktøjet

Kilde: www.habr.com

Tilføj en kommentar