Utnyttja alla funktioner i nÀtverksanslutningshanteraren NetworkManager i Linux kommandoraden med hjÀlp av verktyget nmcli.

Verktyg anvÀnder direkt API:et för att fÄ tillgÄng till funktionerna hos NetworkManager.
Det introducerades 2010 och har blivit ett alternativt sĂ€tt för mĂ„nga att konfigurera nĂ€tverksgrĂ€nssnitt och anslutningar. Ăven om vissa fortfarande anvĂ€nder . Eftersom nmcli Ă€r ett kommandoradsgrĂ€nssnitt (CLI) avsett för anvĂ€ndning i terminalfönster och skript, Ă€r det perfekt för systemadministratörer som arbetar utan GUI.
Syntaxen för nmcli kommandon
I allmÀnhet ser syntaxen ut sÄ hÀr:
$ nmcli - options - Àr parametrar som definierar detaljerna för hur nmcli fungerar,
- section (sektion) - definierar vilka funktioner av verktyget som ska anvÀndas,
- action (ÄtgÀrd) - gör det möjligt att ange vad som faktiskt ska göras.
Det finns totalt 8 sektioner, var och en kopplad till en specifik uppsÀttning kommandon (ÄtgÀrder):
- HjÀlp ger hjÀlp om nmcli kommandon och deras anvÀndning.
- General returnerar status för NetworkManager och global konfiguration.
- NÀtverkande aktiverar kommandon för att frÄga statusen för nÀtverksanslutningar och aktivera/avaktivera anslutningar.
- Radio aktiverar kommandon för att frÄga status pÄ WiFi-anslutningar och aktivera/avaktivera anslutningar.
- Monitor aktiverar kommandon för att övervaka NetworkManager aktivitet och observera förÀndringar i nÀtverksanslutningars status.
- Connection aktiverar kommandon för att hantera nÀtverksgrÀnssnitt, för att lÀgga till nya anslutningar och ta bort befintliga.
- Enhet anvÀnds frÀmst för att Àndra instÀllningar relaterade till enheter (t.ex. namn pÄ grÀnssnittet) eller för att ansluta enheter med hjÀlp av en befintlig anslutning.
- Hemmelighet registrerar nmcli som en 'hemlig agent' för NetworkManager, som lyssnar efter hemliga meddelanden. Denna sektion anvÀnds sÀllan, eftersom nmcli som standard fungerar pÄ detta sÀtt nÀr det connectar till nÀtverk.
Enkla exempel
Innan du börjar, försÀkra dig om att NetworkManager Àr igÄng och att nmcli kan kommunicera med den:
$ nmcli general
STATUS CONNECTIVITET WIFI-HW WIFI WWAN-HW WWAN
ansluten fullstÀndig aktivering aktiverad aktiverad aktiverad aktiveradOfta börjar man med att visa alla profiler för nÀtverksanslutningar:
$ 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 enp0s9Det hÀr kommandot anvÀnder ÄtgÀrd show för avsnittet Connection.
PÄ testmaskinen körs Ubuntu 20.04. I det hÀr fallet har vi hittat tre trÄdade anslutningar: enp0s3, enp0s8 och enp0s9.
Hantera anslutningar
Det Àr viktigt att förstÄ att termen Connection i nmcli refererar till en entitet som innehÄller all information om en anslutning. Med andra ord, det Àr nÀtverkskonfigurationen. Connection inkapslar all information relaterad till anslutningar, inklusive lager 2 och IP-adressering. Det hÀr Àr nivÄ 2 och nivÄ 3 i OSI-modellen.
NÀr du konfigurerar ett nÀtverk i Linux konfigurerar du vanligtvis anslutningar, som sÄ smÄningom kopplas till nÀtverksenheter, vilka Àr nÀtverksgrÀnssnitt som Àr installerade pÄ datorn. NÀr en enhet anvÀnder en anslutning anses den vara aktiv eller uppe. Om anslutningen inte anvÀnds Àr den inaktiv eller nere.
LÀgg till nÀtverksanslutningar
Verktyget ncmli gör det enkelt att snabbt lÀgga till och konfigurera anslutningar. Till exempel, för att lÀgga till Wired connection 2 (med enp0s8), behöver 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) har lagts till.I alternativet type anger vi att detta ska vara en Ethernet-anslutning, och i alternativet ifname (interface name) anger vi det nÀtverksgrÀnssnitt som vi vill anvÀnda.
SÄ hÀr ser resultatet ut efter att kommandot har körts:
$ 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, ethernet-enp0s8, har skapats. Den har tilldelats ett UUID, och anslutningstypen Àr Ethernet. Vi aktiverar den med kommandot up:
$ nmcli connection up ethernet-enp0s8
Anslutningen har aktiverats (D-Bus aktiv vÀg: /org/freedesktop/NetworkManager/ActiveConnection/4)Vi kontrollerar Äterigen listan över aktiva anslutningar:
$ 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 enp0s9Ett nytt ethernet-förbindelse har lagts till, det Àr aktivt och anvÀnder nÀtverksgrÀnssnittet enp0s8.
InstÀllning av anslutningar
Verktyget ncmli gör det enkelt att Àndra parametrarna för redan existerande anslutningar. Till exempel, om du behöver byta frÄn dynamisk (DHCP) till statisk IP-adress.
LÄt oss sÀga att vi behöver stÀlla in IP-adressen till 192.168.4.26. För detta anvÀnder vi tvÄ kommandon. Det första kommer direkt att stÀlla in IP-adressen, medan det andra kommer att Àndra metoden för att stÀlla in IP-adressen till "manuell":
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manualGlöm inte att ocksÄ ange nÀtmasken. För vÄr testanslutning Àr det 255.255.255.0, eller med /24 för classless routing (CIDR).
För att Àndringarna ska trÀda i kraft, behöver du inaktivera och sedan aktivera anslutningen igen:
$ nmcli connection down ethernet-enp0s8
Anslutningen 'ethernet-enp0s8' har avaktiverats framgÄngsrikt (D-Bus aktiv vÀg: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Anslutningen har aktiverats framgÄngsrikt (D-Bus aktiv vÀg: /org/freedesktop/NetworkManager/ActiveCOm du istÀllet behöver stÀlla in DHCP, anvÀnd 'auto' istÀllet för 'manual':
$ nmcli connection modify ethernet-enp0s8 ipv4.method autoArbete med enheter
För detta anvÀnder vi avsnittet Device.
Kontroll av enheternas 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Àra information om enheten
För detta anvÀnder vi ÄtgÀrden show frÄn avsnittet Device (du mÄste ange enhetens namn). Verktyget visar ganska mycket information, ofta pÄ flera sidor.
LÄt oss titta pÄ grÀnssnittet enp0s8, som anvÀnder vÄr nya anslutning. Vi ska kontrollera att det anvÀnder exakt den IP-adress som vi stÀllt 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=255Det finns ganska mycket information. LÄt oss framhÀva det viktigaste:
- Namnet pÄ nÀtverksgrÀnssnittet: enp0s8.
- Typ av anslutning: trÄdbunden Ethernet-anslutning.
- Vi ser MAC-adressen för enheten.
- Ange Maximum transmission unit (MTU) â den maximala storleken pĂ„ nyttodatablocket i ett paket som kan överföras av protokollet utan fragmentering.
- Enheten just nu ansluten.
- Namn pÄ anslutningen, som enheten anvÀnder: ethernet-enp0s8.
- Enheten anvÀnder den IP-adress, som vi angav tidigare: 192.168.4.26/24.
Annan information rör standardinstÀllningarna för rutten och gateway:n för anslutningen. De beror pÄ det specifika nÀtverket.
Interaktiv nmcli-redigerare
nmcli har ocksÄ en enkel interaktiv redigerare, som kan vara mer bekvÀm för vissa att anvÀnda. För att starta den, till exempel för anslutningen ethernet-enp0s8, anvÀnd ÄtgÀrd edit:
$ nmcli connection edit ethernet-enp0s8Den har Àven en liten hjÀlp, som dock Àr mindre omfattande Àn konsolversionen:
===| nmcli interaktiv anslutningsredigerare |===
Redigerar befintlig '802-3-ethernet'-anslutning: 'ethernet-enp0s8'
Skriv 'help' eller '?' för tillgÀngliga kommandon.
Skriv 'print' för att visa alla anslutningsegenskaper.
Skriv 'describe [<instÀllning>.<egenskap>]' för detaljerad egenskapsbeskrivning.
Du kan redigera följande instÀllningar: anslutning, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, matcha, ipv4, ipv6, tc, proxy
nmcli>Om du anger kommandot print och trycker pÄ Enter kommer nmcli att visa alla anslutningsegenskaper:
===============================================================================
Anslutningsprofilens detaljer (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 (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: --Till exempel, för att stÀlla in egenskapen DHCP för anslutningen, skriv goto ipv4 och tryck pÄ Enter:
nmcli> goto ipv4
Du kan redigera följande egenskaper: metod, dns, dns-sökning,
dns-alternativ, dns-prioritet, adresser, gateway, rutter, rutt-metrik,
rutt-tabell, routing-regler, ignorera-auto-rutter, ignorera-auto-dns,
dhcp-klient-id, dhcp-iaid, dhcp-tid, dhcp-skicka-vÀrdnamn,
dhcp-vÀrdnamn, dhcp-fqdn, dhcp-vÀrdnamns-flaggor, aldrig-standard, kan-misslyckas,
dad-tid
nmcli ipv4>Skriv sedan set method auto och tryck pÄ Enter:
nmcli ipv4> set method auto
Vill du ocksÄ rensa 'ipv4.adresser'? [ja]:Om du vill rensa den statiska IP-adressen, tryck EnterAnnars, skriv in no och tryck pÄ Enter. Du kan spara det om du tror att du kan behöva det 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 Àndringar:
nmcli ipv4> save
Anslutning 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) har framgÄngsrikt uppdaterats.
nmcli ipv4>Skriv quit för att lĂ€mna den interaktiva nmcli-redigeraren. Om du har Ă€ndrat dig och inte vill lĂ€mna â anvĂ€nd kommandot back.
Och det hÀr Àr lÄngt ifrÄn allt
Ăppna den interaktiva nmcli-redigeraren och se hur mĂ„nga instĂ€llningar som finns och vilka egenskaper varje instĂ€llning har. Den interaktiva redigeraren Ă€r ett utmĂ€rkt verktyg, men om du vill anvĂ€nda nmcli i enrad eller skript, behöver du den vanliga kommandoradsversionen.
Nu nÀr du har grunderna, bekanta dig med nmcli för att se vad mer den kan hjÀlpa dig med.
I reklamens namn
Episk server â detta Ă€r eller Linux med kraftfulla processorer frĂ„n AMD EPYC och mycket snabba NVMe-diskar frĂ„n Intel. Skynda dig att bestĂ€lla!
KĂ€lla: habr.com
