Podstawy użycia nmcli – kompletny przewodnik (komendy, przykłady, praktyka)

Spis treści

  1. Czym jest nmcli?
  2. Historia i kontekst powstania
  3. Instalacja i wymagania
  4. Podstawowa składnia
  5. Sprawdzanie statusu sieci
  6. Zarządzanie połączeniami
  7. Konfiguracja Wi-Fi
  8. Konfiguracja Ethernet i IP
  9. Praca z VPN
  10. Tworzenie hotspotu
  11. nmcli w skryptach
  12. Diagnostyka problemów
  13. Ściągawka komend

1. Czym jest nmcli?

nmcli (NetworkManager Command Line Interface) to narzędzie wiersza poleceń służące do zarządzania siecią w systemach operacyjnych Linux. Jest oficjalnym interfejsem tekstowym dla usługi NetworkManager – demona odpowiedzialnego za automatyczne wykrywanie i konfigurowanie połączeń sieciowych.

Dzięki nmcli administrator systemu lub zaawansowany użytkownik może wykonywać pełen zakres operacji sieciowych bez potrzeby sięgania po graficzny interfejs użytkownika. Narzędzie doskonale sprawdza się w środowiskach serwerowych, skryptach automatyzujących oraz przy zdalnej administracji systemem poprzez SSH.

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

Szybkość działania

Operacje wykonywane bezpośrednio z terminala, bez zbędnych interfejsów graficznych.

Pełna kontrola

Dostęp do wszystkich funkcji NetworkManager – więcej niż w większości GUI.

Automatyzacja

Idealne do skryptów bash, Ansible, CI/CD i zarządzania flotą serwerów.

Wszechstronność

Obsługa Wi-Fi, Ethernet, VPN, mostów, VLAN, bonding i wielu innych technologii.

Kluczowe pojęcie

nmcli to klient, a NetworkManager to serwer (demon). nmcli jedynie wysyła polecenia do działającego w tle procesu NetworkManager przez interfejs D-Bus. Bez uruchomionego NetworkManagera nmcli nie będzie działać.

2. Historia i kontekst powstania

Aby w pełni zrozumieć rolę nmcli, warto poznać historię projektu NetworkManager, którego jest integralną częścią.

2004

Powstanie NetworkManager. Projekt zapoczątkował Robert Love pracujący dla Red Hat. Celem było rozwiązanie problemu dynamicznego zarządzania siecią – szczególnie istotnego dla użytkowników laptopów, którzy ciągle przełączają się między sieciami Wi-Fi, Ethernet i połączeniami 3G/4G.

2005–2007

Wczesne wersje i kontrowersje. NetworkManager szybko trafił do dystrybucji takich jak Fedora i Ubuntu, jednak spotkał się z krytyką administratorów serwerów – zarządzał interfejsami w sposób, który kolidował z tradycyjnymi konfiguracjami opartymi na /etc/network/interfaces. nmcli pojawił się jako odpowiedź na potrzebę sterowania NM z poziomu terminala.

2010–2013

Dojrzewanie projektu. NetworkManager 0.8 i 0.9 przyniosły znaczące usprawnienia w obsłudze VPN, bonding i mostów sieciowych. nmcli stał się stabilnym narzędziem dostępnym we wszystkich głównych dystrybucjach. Zaczęto go powszechnie używać w środowiskach serwerowych RHEL i CentOS.

2014–2016

NetworkManager 1.0 – przełom. Całkowita przepisana architektura wewnętrzna. nmcli otrzymał nową, bardziej spójną składnię i znacznie rozszerzony zakres możliwości. Pojawił się tryb interaktywny (nmcli con edit) oraz zaawansowane zarządzanie profilami połączeń.

2017–2020

Era dystrybucji serwerowych. RHEL 7/8, Ubuntu Server, Debian – wszystkie zaczęły domyślnie wdrażać NetworkManager. nmcli stał się de facto standardem konfigurowania sieci w nowoczesnych środowiskach enterprise. Dodano obsługę WireGuard, OVS (Open vSwitch) i nowych protokołów routingu.

2021–dziś

Integracja z ekosystemem. NetworkManager 1.30+ przynosi pełną obsługę WireGuard jako natywnego typu połączenia, usprawnienia w zarządzaniu IPv6, integrację z systemd-resolved oraz nowe możliwości konfiguracji VLAN i bridge. nmcli jest aktywnie rozwijany przez Red Hat i społeczność open source.

Ciekawostka

Przed erą NetworkManager konfiguracja sieci w Linux wymagała bezpośredniej edycji plików tekstowych (jak /etc/network/interfaces na Debianie czy plików ifcfg-* na RHEL) i ręcznego wywoływania poleceń ifconfig, route czy iwconfig. NetworkManager zunifikował te podejścia w jeden spójny interfejs.

3. Instalacja i wymagania

W większości nowoczesnych dystrybucji Linux nmcli jest zainstalowany domyślnie razem z NetworkManager. Jeśli jednak go brakuje, instalacja jest prosta.

Ubuntu / Debian

sudo apt update
sudo apt install network-manager
# Sprawdzenie wersji
nmcli --version
nmcli tool, version 1.44.2

RHEL / CentOS / Fedora

sudo dnf install NetworkManager
# Uruchomienie i włączenie przy starcie systemu
sudo systemctl enable --now NetworkManager

Arch Linux

sudo pacman -S networkmanager
sudo systemctl enable --now NetworkManager

Ważne

Upewnij się, że usługa NetworkManager jest uruchomiona (systemctl status NetworkManager). Jeśli korzystasz z innych narzędzi zarządzania siecią (np. systemd-networkd, ifupdown), mogą one kolidować z NetworkManager.

4. Podstawowa składnia

Składnia nmcli jest ustrukturyzowana i logicznie podzielona na obiekty i polecenia. Ogólna forma wygląda następująco:

Składnia

nmcli [OPCJE] OBIEKT [POLECENIE] [ARGUMENTY...]

Główne obiekty (OBJECT)

ObiektSkrótOpis
generalgOgólny status i operacje NetworkManager
networkingnWłączanie/wyłączanie obsługi sieci
radiorZarządzanie interfejsami radiowymi (Wi-Fi, WWAN)
connectioncZarządzanie profilami połączeń
devicedZarządzanie urządzeniami sieciowymi
agentaUruchamianie agenta nmcli (klucze, sekrety)
monitormMonitorowanie zdarzeń NM w czasie rzeczywistym

Przydatne opcje globalne

OpcjaOpis
-t, –terseWyjście w formacie skróconym (machine-readable, przydatne w skryptach)
-p, –prettyWyjście w ładniejszym formacie dla człowieka
-c, –colorsSterowanie kolorowaniem wyjścia (yes/no/auto)
-f, –fieldsWybór konkretnych pól do wyświetlenia
-m, –modeTryb wyjścia: tabular lub multiline
-w, –waitCzas oczekiwania na zakończenie operacji (sekundy)
-v, –versionWyświetlenie wersji nmcli
-h, –helpPomoc

Skróty

nmcli akceptuje skróty obiektów i poleceń – wystarczy wpisać tyle liter, by jednoznacznie wskazać obiekt. nmcli d to to samo co nmcli device, a nmcli c s to nmcli connection show.

5. Sprawdzanie statusu sieci

Pierwszym krokiem w pracy z nmcli jest zazwyczaj sprawdzenie aktualnego stanu systemu i podłączonych urządzeń.

Ogólny status systemu

nmcli general status

STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled

Przykład:

Lista urządzeń sieciowych

nmcli device status

DEVICE   TYPE      STATE      CONNECTION
eth0     ethernet  connected  Ethernet-1
wlan0    wifi      connected  MojaSiec
lo       loopback  unmanaged  --

Przykład:

Szczegóły konkretnego urządzenia

nmcli device show eth0

GENERAL.DEVICE:          eth0
GENERAL.TYPE:            ethernet
GENERAL.HWADDR:          00:11:22:33:44:55
GENERAL.MTU:             1500
GENERAL.STATE:           100 (connected)
GENERAL.CONNECTION:      Ethernet-1
IP4.ADDRESS[1]:          192.168.1.100/24
IP4.GATEWAY:             192.168.1.1
IP4.DNS[1]:              8.8.8.8
IP6.ADDRESS[1]:          fe80::211:22ff:fe33:4455/64

Przykład:

Wyświetlenie informacji o IPv4/IPv6

# Wyświetl tylko wybrane pola – przydatne w skryptach
nmcli -f IP4.ADDRESS,IP4.GATEWAY device show eth0

IP4.ADDRESS[1]: 192.168.1.100/24
IP4.GATEWAY:    192.168.1.1

6. Zarządzanie połączeniami

W terminologii NetworkManager połączenie (connection) to zapisany profil konfiguracji sieciowej. Jedno urządzenie fizyczne może posiadać wiele profili połączeń, ale tylko jeden może być aktywny w danym momencie.

Wyświetlenie wszystkich połączeń

nmcli connection show

NAME        UUID                                  TYPE      DEVICE
Ethernet-1  a1b2c3d4-e5f6-7890-abcd-ef1234567890  ethernet  eth0
MojaSiec    b2c3d4e5-f6a7-8901-bcde-f12345678901  wifi      wlan0
VPN-praca   c3d4e5f6-a7b8-9012-cdef-123456789012  vpn       --

Szczegóły połączenia

nmcli connection show "Ethernet-1"

Aktywowanie i dezaktywowanie połączenia

# Aktywuj połączenie
nmcli connection up "Ethernet-1"
Connection successfully activated (D-Bus active path: ...)

# Dezaktywuj połączenie
nmcli connection down "Ethernet-1"
Connection 'Ethernet-1' successfully deactivated

Usuwanie połączenia

nmcli connection delete "stare-polaczenie"

Przeładowanie konfiguracji z pliku

# Po ręcznej edycji pliku w /etc/NetworkManager/system-connections/
nmcli connection reload

7. Konfiguracja Wi-Fi

Zarządzanie bezprzewodowymi sieciami Wi-Fi to jedna z najczęściej wykonywanych operacji z nmcli. Poniżej znajdziesz wszystkie kluczowe scenariusze.

Skanowanie dostępnych sieci

nmcli device wifi list

IN-USE  BSSID              SSID            MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
*       AA:BB:CC:DD:EE:FF  MojaSiec        Infra  6     195 Mbit/s  85      ▂▄▆█  WPA2
        11:22:33:44:55:66  SasiedzkaSiec   Infra  11    130 Mbit/s  62      ▂▄▆_  WPA2
        FF:EE:DD:CC:BB:AA  PracacaWifi     Infra  1     540 Mbit/s  71      ▂▄▆_  WPA2 WPA3

# Wymuś nowe skanowanie
nmcli device wifi rescan

Połączenie z siecią Wi-Fi

# Podstawowe połączenie – nmcli zapyta o hasło jeśli nie podasz
nmcli device wifi connect "MojaSiec"

# Połączenie z jawnym podaniem hasła (uwaga: hasło widoczne w historii shell!)
nmcli device wifi connect "MojaSiec" password "TajneHaslo123"

# Połączenie z konkretnym interfejsem bezprzewodowym
nmcli device wifi connect "MojaSiec" ifname wlan0 password "TajneHaslo123"

Bezpieczeństwo

Podawanie hasła bezpośrednio w wierszu poleceń (password "haslo") zapisuje je w historii shella (~/.bash_history). W środowiskach produkcyjnych lepiej użyć trybu interaktywnego nmcli lub skonfigurować profil z pliku. Możesz też użyć HISTCONTROL=ignorespace i poprzedzić komendę spacją.

Tworzenie profilu Wi-Fi ręcznie

nmcli connection add \
    type wifi \
    con-name "Praca-WiFi" \
    ifname wlan0 \
    ssid "PracaWifi"

# Ustaw hasło i bezpieczeństwo WPA2
nmcli connection modify "Praca-WiFi" \
    wifi-sec.key-mgmt wpa-psk \
    wifi-sec.psk "HasloDoSieci"

# Aktywuj profil
nmcli connection up "Praca-WiFi"

Włączanie i wyłączanie Wi-Fi

nmcli radio wifi off   # Wyłącz Wi-Fi (hardware radio)
nmcli radio wifi on    # Włącz Wi-Fi
nmcli radio all off   # Wyłącz wszystkie interfejsy radiowe (Wi-Fi + WWAN)

8. Konfiguracja Ethernet i adresów IP

Tworzenie profilu Ethernet ze statycznym IP

nmcli connection add \
    type ethernet \
    con-name "Server-Static" \
    ifname eth0 \
    ipv4.method manual \
    ipv4.addresses "192.168.1.50/24" \
    ipv4.gateway "192.168.1.1" \
    ipv4.dns "8.8.8.8,8.8.4.4"

Connection 'Server-Static' (uuid) successfully added.

Przykład:

Zmiana konfiguracji istniejącego połączenia

# Zmień adres IP
nmcli connection modify "Server-Static" \
    ipv4.addresses "192.168.1.75/24"

# Dodaj dodatkowy adres DNS
nmcli connection modify "Server-Static" \
    +ipv4.dns "1.1.1.1"

# Zmień na DHCP
nmcli connection modify "Server-Static" \
    ipv4.method auto \
    ipv4.addresses "" \
    ipv4.gateway ""

# Zastosuj zmiany
nmcli connection up "Server-Static"

Konfiguracja IPv6

# Statyczny IPv6
nmcli connection modify "Server-Static" \
    ipv6.method manual \
    ipv6.addresses "2001:db8::1/64" \
    ipv6.gateway "2001:db8::fffe"

# Wyłącz IPv6 na interfejsie
nmcli connection modify "Server-Static" \
    ipv6.method disabled

Podłączenie urządzenia do istniejącego profilu

# Wymuś ponowne połączenie urządzenia
nmcli device connect eth0
nmcli device disconnect eth0

9. Praca z VPN

NetworkManager obsługuje wiele typów VPN przez system wtyczek. Najczęściej spotykane to OpenVPN, WireGuard, IPSec i PPTP.

Importowanie konfiguracji OpenVPN

# Wymagana wtyczka: network-manager-openvpn
sudo apt install network-manager-openvpn

# Import pliku .ovpn
nmcli connection import \
    type openvpn \
    file /home/user/vpn-praca.ovpn

# Połącz z VPN
nmcli connection up "vpn-praca"

Konfiguracja WireGuard

# NetworkManager 1.26+ obsługuje WireGuard natywnie
nmcli connection add \
    type wireguard \
    con-name "wg-vpn" \
    ifname wg0 \
    wireguard.private-key "TwójKluczPrywatnyBase64=="

# Dodaj peer (serwer)
nmcli connection modify "wg-vpn" \
    +wireguard.peers "public-key=KluczPubliczny==,endpoint=vpn.example.com:51820,allowed-ips=0.0.0.0/0"

nmcli connection up "wg-vpn"

Wyświetlenie aktywnych połączeń VPN

nmcli connection show --active | grep vpn

10. Tworzenie hotspotu Wi-Fi

nmcli pozwala w kilku krokach przekształcić kartę Wi-Fi w punkt dostępowy (Access Point / hotspot).

# Utwórz hotspot (nmcli sam skonfiguruje DHCP przez dnsmasq)
nmcli device wifi hotspot \
    ifname wlan0 \
    ssid "MojHotspot" \
    password "HasloHotspot"

Device 'wlan0' successfully activated with '...'

# Sprawdź hasło wygenerowanego hotspotu
nmcli device wifi show-password

Wymagania

Hotspot wymaga zainstalowanego pakietu dnsmasq lub dnsmasq-base oraz obsługi trybu AP przez kartę Wi-Fi. Nie wszystkie karty Wi-Fi obsługują jednoczesny tryb klienta i AP.

11. nmcli w skryptach i automatyzacji

Tryb maszynowy (-t) umożliwia parsowanie wyjścia nmcli w skryptach bash bez ryzyka, że zmiana formatowania tabeli zepsuje skrypt.

Tryb maszynowy (-t / –terse)

# Wyjście rozdzielone dwukropkiem – łatwe do parsowania
nmcli -t -f NAME,STATE,DEVICE connection show --active

Ethernet-1:activated:eth0
MojaSiec:activated:wlan0

Przykład: skrypt sprawdzający połączenie

check-network.sh

#!/bin/bash

# Sprawdź czy mamy połączenie z internetem
STATE=$(nmcli -t -f STATE general)

if [ "$STATE" = "connected" ]; then
    echo "Sieć OK"
else
    echo "Brak połączenia ($STATE) – próbuję połączyć..."
    nmcli connection up "Ethernet-1"
fi

Przykład: automatyczne przełączanie sieci

switch-network.sh

#!/bin/bash
# Przełącz między domem a pracą na podstawie dostępnych sieci

AVAILABLE=$(nmcli -t -f SSID device wifi list 2>/dev/null)

if echo "$AVAILABLE" | grep -q "SiecPraca"; then
    nmcli connection up "Praca-WiFi"
    echo "Połączono z siecią firmową"
elif echo "$AVAILABLE" | grep -q "SiecDom"; then
    nmcli connection up "Dom-WiFi"
    echo "Połączono z siecią domową"
fi

Monitorowanie zdarzeń sieciowych

# Nasłuchuj zdarzeń w czasie rzeczywistym (Ctrl+C aby zatrzymać)
nmcli monitor

eth0: connected to Ethernet-1
wlan0: disconnected
wlan0: connecting to MojaSiec
wlan0: connected to MojaSiec

12. Diagnostyka i rozwiązywanie problemów

Podstawowa diagnostyka

# Status usługi NetworkManager
systemctl status NetworkManager

# Logi NetworkManager (ostatnie 100 linii)
journalctl -u NetworkManager -n 100 --no-pager

# Szczegółowy log z ostatnich 5 minut
journalctl -u NetworkManager --since "5 minutes ago"

Typowe problemy i rozwiązania

ProblemPrawdopodobna przyczynaRozwiązanie
Error: NetworkManager is not runningNM nie jest uruchomionysudo systemctl start NetworkManager
Device eth0 not availableInterfejs zarządzany przez inny demonSprawdź /etc/NetworkManager/NetworkManager.conf, usuń wyjątek urządzenia
Secrets were required, but not providedBrak hasła Wi-Fi w profiluDodaj hasło: nmcli con modify NAZWA wifi-sec.psk "haslo"
Connection activation failedBłędna konfiguracja IP lub konfliktySprawdź logi: journalctl -u NetworkManager -n 50
Urządzenie w stanie „unmanaged”NM nie zarządza tym interfejsemnmcli device set eth1 managed yes

Wymuszenie zarządzania urządzeniem

# Przełącz urządzenie w tryb zarządzany
nmcli device set eth1 managed yes

# Wymuś ponowne połączenie
nmcli device reapply eth0

# Reset NetworkManager (ostateczność)
sudo systemctl restart NetworkManager

13. Ściągawka komend nmcli

Poniżej zebrałęm najważniejsze komendy nmcli w jednym miejscu – gotowe do skopiowania i użycia.

KomendaOpis
nmcli general statusOgólny status sieci
nmcli device statusLista urządzeń i ich stany
nmcli device show eth0Szczegóły urządzenia eth0
nmcli connection showWszystkie profile połączeń
nmcli connection show –activeAktywne połączenia
nmcli connection up „NAZWA”Aktywuj połączenie
nmcli connection down „NAZWA”Dezaktywuj połączenie
nmcli connection delete „NAZWA”Usuń profil połączenia
nmcli connection reloadPrzeładuj konfigurację z pliku
nmcli device wifi listSkanuj sieci Wi-Fi
nmcli device wifi connect „SSID”Połącz z siecią Wi-Fi
nmcli radio wifi off/onWyłącz/włącz Wi-Fi
nmcli device wifi hotspotUtwórz hotspot
nmcli monitorMonitoruj zdarzenia sieciowe
nmcli -t -f NAME,STATE con showWyjście maszynowe dla skryptów
nmcli connection import type openvpn file X.ovpnImportuj konfigurację OpenVPN
nmcli device set eth0 managed yesWłącz zarządzanie urządzeniem

Tryb interaktywny

nmcli posiada wbudowany tryb interaktywny z podpowiadaniem składni. Uruchom go poleceniem nmcli connection edit "NAZWA-PROFILU" lub nmcli connection edit type ethernet dla nowego profilu. W trybie interaktywnym wpisz help, aby zobaczyć dostępne polecenia

Podsumowanie

Artykuł opisuje narzędzie nmcli jako tekstowy interfejs do zarządzania siecią w systemach Linux, współpracujący z usługą NetworkManager. Wyjaśniono jego rolę, zalety oraz zastosowanie w administracji serwerami, automatyzacji i pracy zdalnej. Przedstawiono rozwój NetworkManager i nmcli, które z czasem stały się standardem w wielu dystrybucjach.

Omówiono wymagania instalacyjne i konieczność działania usługi NetworkManager, a następnie zaprezentowano składnię poleceń oraz główne obiekty i opcje. W artykule pokazano praktyczne użycie narzędzia, takie jak sprawdzanie statusu sieci, zarządzanie połączeniami, konfiguracja Wi-Fi i Ethernet, ustawienia adresów IP oraz obsługa VPN i hotspotów.

Uwzględniono także wykorzystanie nmcli w skryptach do automatyzacji oraz monitorowania sieci. Na końcu przedstawiono metody diagnostyki problemów, typowe błędy i sposoby ich rozwiązania, a także zestaw najważniejszych komend i informację o trybie interaktywnym.

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

 

 

Bezpłatne szkolenie "Kali Linux od podstaw - fundament pracy pentestera"

X