Hantera nätverksanslutningar i Linux med hjälp av nmcli-konsolverktyget

Dra full nytta av nätverkshanteringsverktyget NetworkManager på Linux-kommandoraden med hjälp av verktyget nmcli.

Hantera nätverksanslutningar i Linux med hjälp av nmcli-konsolverktyget

Verktyg nmcli anropar API direkt för att komma åt NetworkManager-funktioner.

Det dök upp 2010 och har för många blivit ett alternativt sätt att konfigurera nätverksgränssnitt och anslutningar. Även om vissa fortfarande använder ifconfig. Eftersom nmcli är ett kommandoradsgränssnitt (CLI)-verktyg utformat för användning i terminalfönster och skript, är det idealiskt för systemadministratörer som arbetar utan ett GUI.

ncmli kommandosyntax

Generellt sett ser syntaxen ut så här:

$ nmcli <options> <section> <action>

  • alternativ är parametrar som bestämmer finesserna i nmcli-drift,
  • sektion (sektion) - bestämmer vilka funktioner i verktyget som ska användas,
  • action - låter dig specificera vad som faktiskt behöver göras.

Det finns totalt 8 sektioner, som var och en är associerad med en viss uppsättning kommandon (åtgärder):

  • Hjälp ger hjälp om ncmcli-kommandon och deras användning.
  • Allmänt returnerar NetworkManager-status och global konfiguration.
  • nätverk innehåller kommandon för att fråga om nätverksanslutningsstatus och aktivera/inaktivera anslutningar.
  • radio innehåller kommandon för att fråga WiFi-nätverksanslutningsstatus och aktivera/inaktivera anslutningar.
  • Övervaka innehåller kommandon för att övervaka NetworkManager-aktivitet och observera förändringar i tillståndet för nätverksanslutningar.
  • förbindelse innehåller kommandon för att hantera nätverksgränssnitt, lägga till nya anslutningar och ta bort befintliga.
  • Anordning används huvudsakligen för att ändra enhetsrelaterade parametrar (som gränssnittsnamn) eller för att ansluta enheter med en befintlig anslutning.
  • Secret registrerar nmcli som en NetworkManager "hemlig agent" som lyssnar efter hemliga meddelanden. Det här avsnittet används sällan, eftersom nmcli fungerar på detta sätt som standard när du ansluter till nätverk.

Enkla exempel

Innan du börjar, se till att NetworkManager körs och att nmcli kan kommunicera med den:

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

Arbetet börjar ofta med att se alla nätverksanslutningsprofiler:

$ 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

Detta kommando använder effekt visa för avsnittet Anslutning.

Testmaskinen kör Ubuntu 20.04. I det här fallet hittade vi tre trådbundna anslutningar: enp0s3, enp0s8 och enp0s9.

Hantera anslutningar

Det är viktigt att förstå att i nmcli menar vi med termen Connection en enhet som innehåller all information om anslutningen. Detta är med andra ord nätverkskonfigurationen. Connection kapslar in all anslutningsrelaterad information, inklusive länklager och IP-adresseringsinformation. Dessa är Layer 2 och Layer 3 i OSI-nätverksmodellen.

När du ställer in ett nätverk i Linux sätter du vanligtvis upp anslutningar som kommer att sluta knytas till nätverksenheter, som i sin tur är nätverksgränssnitt installerade på datorn. När en enhet använder en anslutning anses den vara aktiv eller förhöjd. Om en anslutning inte används är den inaktiv eller återställd.

Lägger till nätverksanslutningar

Verktyget ncmli låter dig snabbt lägga till och omedelbart konfigurera anslutningar. Till exempel, för att lägga till trådbunden anslutning 2 (med enp0s8), måste du köra följande kommando som superanvändare:

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

I typalternativet anger vi att detta kommer att vara en Ethernet-anslutning, och i alternativet ifname (gränssnittsnamn) anger vi nätverksgränssnittet som vi vill använda.

Detta är vad som kommer att hända efter att ha kört kommandot:

$ 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 anslutning har skapats, ethernet-enp0s8. Den tilldelades ett UUID och anslutningstypen var Ethernet. Låt oss höja det med hjälp av kommandot upp:

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

Låt oss kontrollera listan över aktiva anslutningar 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 anslutning ethernet-enp0s8 har lagts till, den är aktiv och använder nätverksgränssnittet enp0s8.

Konfigurera anslutningar

Verktyget ncmli låter dig enkelt ändra parametrarna för befintliga anslutningar. Till exempel måste du ändra din dynamiska (DHCP) IP-adress till en statisk IP-adress.

Låt oss säga att vi måste ställa in IP-adressen till 192.168.4.26. För att göra detta använder vi två kommandon. Den första kommer att ställa in IP-adressen direkt, och den andra kommer att ändra IP-adressinställningsmetoden till manuell:

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

Glöm inte att även ställa in subnätmasken. För vår testanslutning är detta 255.255.255.0, eller med /24 för klasslös routing (CIDR).

För att ändringarna ska träda i kraft måste du inaktivera och sedan återaktivera anslutningen:

$ 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

Om du tvärtom behöver installera DHCP, använd automatisk istället för manuell:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Arbeta med enheter

För detta använder vi avsnittet Enhet.

Kontrollerar enhetens 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  --  

Begär enhetsinformation

För att göra detta, använd show-åtgärden från avsnittet Enhet (du måste ange enhetsnamnet). Verktyget visar mycket information, ofta på flera sidor.
Låt oss titta på enp0s8-gränssnittet som vår nya anslutning använder. Låt oss se till att den använder exakt den IP-adress som vi ställde in tidigare:

$ 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

Det finns ganska mycket information. Låt oss lyfta fram det viktigaste:

  • Nätverksgränssnittsnamn: enp0s8.
  • Kopplingstyp: trådbunden Ethernet-anslutning.
  • Vi ser enhetens MAC-adress.
  • Maximal transmissionsenhet (MTU) specificerad — Den maximala storleken på ett användbart datablock av ett paket som kan överföras av protokollet utan fragmentering.
  • anordning för närvarande ansluten.
  • Anslutningsnamnvilken enhet använder: ethernet-enp0s8.
  • Enheten använder IP-adress, som vi installerade tidigare: 192.168.4.26/24.

Annan information avser standardparametrarna för routing och anslutningsgateway. De beror på det specifika nätverket.

Interaktiv nmcli-redigerare

nmcli har också en enkel interaktiv editor, som kan vara bekvämare för vissa att arbeta med. För att köra den på en ethernet-enp0s8-anslutning till exempel, använd effekt edit:

$ nmcli connection edit ethernet-enp0s8

Den har också en liten hjälp, som dock är mindre i storlek än 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>

Om du skriver utskriftskommandot och trycker på Enter kommer nmcli att visa alla anslutningsegenskaper:

===============================================================================
                 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:                 --

Till exempel, för att ställa in anslutningen till DHCP, skriv goto ipv4 och klicka ange:

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 sedan set metod auto och klicka ange:

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

Om du vill rensa den statiska IP-adressen klickar du på ange. Annars skriver du nej och trycker på Enter. Du kan spara den om du tror att du kommer att behöva den i framtiden. Men även med en sparad statisk IP-adress kommer DHCP att användas om metoden är inställd på auto.

Använd kommandot save för att spara dina ändringar:

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

Skriv quit för att avsluta nmcli Interactive Editor. Om du ändrar dig om att lämna, använd bakåtkommandot.

Och det är inte allt

Öppna nmcli Interactive Editor och se hur många inställningar det finns och hur många egenskaper varje inställning har. Den interaktiva redigeraren är ett utmärkt verktyg, men om du vill använda nmcli i one-liners eller skript, behöver du den vanliga kommandoradsversionen.

Nu när du har grunderna, kolla in man page nmcli för att se hur det annars kan hjälpa dig.

Om reklamens rättigheter

Episka servrar - Är virtuella servrar på Windows eller Linux med kraftfulla AMD EPYC-familjeprocessorer och mycket snabba Intel NVMe-enheter. Skynda dig att beställa!

Hantera nätverksanslutningar i Linux med hjälp av nmcli-konsolverktyget

Källa: will.com

Lägg en kommentar