Spis treści
- Czym jest nmcli?
- Historia i kontekst powstania
- Instalacja i wymagania
- Podstawowa składnia
- Sprawdzanie statusu sieci
- Zarządzanie połączeniami
- Konfiguracja Wi-Fi
- Konfiguracja Ethernet i IP
- Praca z VPN
- Tworzenie hotspotu
- nmcli w skryptach
- Diagnostyka problemów
- Ś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.
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)
| Obiekt | Skrót | Opis |
|---|---|---|
| general | g | Ogólny status i operacje NetworkManager |
| networking | n | Włączanie/wyłączanie obsługi sieci |
| radio | r | Zarządzanie interfejsami radiowymi (Wi-Fi, WWAN) |
| connection | c | Zarządzanie profilami połączeń |
| device | d | Zarządzanie urządzeniami sieciowymi |
| agent | a | Uruchamianie agenta nmcli (klucze, sekrety) |
| monitor | m | Monitorowanie zdarzeń NM w czasie rzeczywistym |
Przydatne opcje globalne
| Opcja | Opis |
|---|---|
| -t, –terse | Wyjście w formacie skróconym (machine-readable, przydatne w skryptach) |
| -p, –pretty | Wyjście w ładniejszym formacie dla człowieka |
| -c, –colors | Sterowanie kolorowaniem wyjścia (yes/no/auto) |
| -f, –fields | Wybór konkretnych pól do wyświetlenia |
| -m, –mode | Tryb wyjścia: tabular lub multiline |
| -w, –wait | Czas oczekiwania na zakończenie operacji (sekundy) |
| -v, –version | Wyświetlenie wersji nmcli |
| -h, –help | Pomoc |
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
| Problem | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Error: NetworkManager is not running | NM nie jest uruchomiony | sudo systemctl start NetworkManager |
| Device eth0 not available | Interfejs zarządzany przez inny demon | Sprawdź /etc/NetworkManager/NetworkManager.conf, usuń wyjątek urządzenia |
| Secrets were required, but not provided | Brak hasła Wi-Fi w profilu | Dodaj hasło: nmcli con modify NAZWA wifi-sec.psk "haslo" |
| Connection activation failed | Błędna konfiguracja IP lub konflikty | Sprawdź logi: journalctl -u NetworkManager -n 50 |
| Urządzenie w stanie „unmanaged” | NM nie zarządza tym interfejsem | nmcli 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.
| Komenda | Opis |
|---|---|
| nmcli general status | Ogólny status sieci |
| nmcli device status | Lista urządzeń i ich stany |
| nmcli device show eth0 | Szczegóły urządzenia eth0 |
| nmcli connection show | Wszystkie profile połączeń |
| nmcli connection show –active | Aktywne 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 reload | Przeładuj konfigurację z pliku |
| nmcli device wifi list | Skanuj sieci Wi-Fi |
| nmcli device wifi connect „SSID” | Połącz z siecią Wi-Fi |
| nmcli radio wifi off/on | Wyłącz/włącz Wi-Fi |
| nmcli device wifi hotspot | Utwórz hotspot |
| nmcli monitor | Monitoruj zdarzenia sieciowe |
| nmcli -t -f NAME,STATE con show | Wyjście maszynowe dla skryptów |
| nmcli connection import type openvpn file X.ovpn | Importuj konfigurację OpenVPN |
| nmcli device set eth0 managed yes | Włą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.
