NetworkManager

NetworkManager és un servei de sistema (dimoni) que s’encarrega de gestionar automàticament les connexions de xarxa a Linux.

1. Funcions principals

Detecta i gestiona dispositius de xarxa Ethernet, Wi-Fi, mòbil (3G/4G), VPN, bridges, bonds, VLANs… Quan connectes un cable o t’apropes a una xarxa Wi-Fi coneguda, NetworkManager ho detecta i actua.

Gestiona perfils de connexió Cada xarxa configurada es guarda com un fitxer .nmconnection a /etc/NetworkManager/system-connections/. Aquests perfils contenen IP, DNS, gateway, credencials Wi-Fi, etc.

Automatitza DHCP i DNS Quan una connexió s’activa, NetworkManager llança un client DHCP intern (o delega a dhclient/dhcpcd) i configura /etc/resolv.conf amb els DNS rebuts.

Reacciona a canvis Si desconnectes un cable, apagues el Wi-Fi o canvies de xarxa, NetworkManager ho detecta i reconfigura les rutes i adreces automàticament, sense intervenció manual.

2. Arquitectura

Arquitectura NetworkManager

3. Com s’executa

És un servei systemd:

systemctl status NetworkManager   # comprova l'estat
systemctl enable NetworkManager   # activa a l'arrencada
systemctl restart NetworkManager  # reinicia

4. On desa la configuració

Ruta Contingut
/etc/NetworkManager/system-connections/ Perfils de connexió (.nmconnection)
/etc/NetworkManager/NetworkManager.conf Configuració global del servei
/run/NetworkManager/ Estat en temps real

5. Relació amb altres eines

Eina Relació
netplan A Ubuntu, genera configuració per a NetworkManager
systemd-networkd Alternativa a NetworkManager (més minimalista)
ifupdown El tradicional sistema de Debian (/etc/network/interfaces)
ip, ss Eines de baix nivell; no parlen amb NetworkManager

6. Quan NO és present

En servidors Debian ni tan sols s’instal·la en favor de ifupdown o systemd-networkd, perquè NetworkManager està pensat principalment per a entorns d’escriptori on la xarxa canvia sovint. En servidors la xarxa és estàtica i no cal tanta automatització.

7. L’eina nmcli

nmcli (NetworkManager Command Line Interface) és l’eina de línia d’ordres per interactuar amb NetworkManager, el servei que gestiona les connexions de xarxa a la majoria de distribucions Linux modernes.

7.1. Què permet fer nmcli?

Àmbit Exemples
Connexions crear, modificar, esborrar, activar, desactivar
Dispositius veure estat, connectar, desconnectar
Wi-Fi escanejar xarxes, connectar-se
VPN activar/desactivar túnels
Monitoratge veure esdeveniments en temps real

7.2. On desa la configuració?

ls -l /etc/NetworkManager/system-connections/
# Fitxers .nmconnection per cada perfil
total 8
-rw------- 1 root root 241  2 de març  22:58 'Perfil 1.nmconnection'
-rw------- 1 root root 274  2 de març  21:51  XSF4.nmconnection

7.3. Verifica que el servei funciona

systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-08-17 09:37:29 CEST; 2h 27min ago
 Invocation: 49daf51aeb8445c59d30ab13766aa12c
       Docs: man:NetworkManager(8)
   Main PID: 1015 (NetworkManager)
      Tasks: 4 (limit: 18484)
     Memory: 18.5M (peak: 19.2M)
        CPU: 1.274s
     CGroup: /system.slice/NetworkManager.service
             └─1015 /usr/sbin/NetworkManager --no-daemon

d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8728] device (enp2s0): state change: ip-config -> ip-check (reason 'none', managed-type: 'full')
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8752] device (enp2s0): state change: ip-check -> secondaries (reason 'none', managed-type: 'full')
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8753] device (enp2s0): state change: secondaries -> activated (reason 'none', managed-type: 'full')
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8757] manager: NetworkManager state is now CONNECTED_SITE
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8759] device (enp2s0): Activation: successful, device activated.
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8765] manager: NetworkManager state is now CONNECTED_GLOBAL
d’ag. 17 09:37:32 debian NetworkManager[1015]: <info>  [1786952252.8769] manager: startup complete
d’ag. 17 09:37:34 debian NetworkManager[1015]: <info>  [1786952254.7635] agent-manager: agent[71095e79ad443ed4,:1.33/org.gnome.Shell.NetworkAgent/110]: agent registered
d’ag. 17 09:37:44 debian NetworkManager[1015]: <info>  [1786952264.0885] agent-manager: agent[b61604e252de9593,:1.82/org.gnome.Shell.NetworkAgent/1000]: agent registered
d’ag. 17 09:50:53 debian NetworkManager[1015]: <info>  [1786953053.5077] manager: (vboxnet0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/4)

En resum: nmcli és el frontend de terminal per a NetworkManager, equivalent a fer clic a la icona de xarxa de l’escriptori però des de la línia d’ordres, amb accés a totes les opcions avançades.

7.4. Connexions configurades

nmcli connection show
# o abreujat
nmcli con show
NAME      UUID                                  TYPE      DEVICE 
Perfil 1  61dc0363-5f64-411c-ab1e-73b3f32a67f0  ethernet  enp2s0 
lo        78b420db-f49f-488e-8e72-0c3d32c328b2  loopback  lo     
XSF4      d5d0bf8b-200e-4528-b5a7-ac2a495ae9c5  wifi      --     

7.5. Dispositius de xarxa (interfícies físiques/virtuals)

nmcli device show
# o abreujat
nmcli dev show

Sortida:

GENERAL.DEVICE:                         enp2s0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         48:21:0B:37:C4:CB
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connectat)
GENERAL.CONNECTION:                     Perfil 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               actiu
IP4.ADDRESS[1]:                         192.168.1.43/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]:                             80.58.61.250
IP4.DNS[2]:                             80.58.61.254
IP4.DOMAIN[1]:                          Home
IP4.WINS[1]:                            192.168.1.1
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     lo
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         wlo1
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         56:27:41:93:2C:2B
GENERAL.MTU:                            1500
GENERAL.STATE:                          20 (no disponible)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         vboxnet0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         0A:00:27:00:00:00
GENERAL.MTU:                            1500
GENERAL.STATE:                          10 (sense gestió)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
WIRED-PROPERTIES.CARRIER:               inactiu
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --
# Només una interfície concreta
nmcli dev show enp2s0

7.6. Resum de l’estat de les interfícies

nmcli device status
# o abreujat
nmcli dev status

Exemple de sortida:

DEVICE    TYPE      STATE                   CONNECTION 
enp2s0    ethernet  connectat               Perfil 1   
lo        loopback  connected (externally)  lo         
wlo1      wifi      no disponible           --         
vboxnet0  ethernet  sense gestió            --         

7.7. Detalls d’una connexió concreta

nmcli con show "Perfil 1"

# Filtrar per IP
nmcli con show "Perfil 1" | grep IP4

7.8. Format compacte (com ifconfig/ip a)

# sense arguments ja mostra un resum de tot
nmcli
enp2s0: connectat to Perfil 1
        "Intel I225-LM"
        ethernet (igc), 48:21:0B:37:C4:CB, hw, mtu 1500
        ip4 default
        inet4 192.168.1.43/24
        route4 192.168.1.0/24 metric 100
        route4 default via 192.168.1.1 metric 100

lo: connected (externally) to lo
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
        inet4 127.0.0.1/8
        inet6 ::1/128

wlo1: no disponible
        "Intel 6 AX201"
        wifi (iwlwifi), 56:27:41:93:2C:2B, sw disabled, hw, mtu 1500

vboxnet0: sense gestió
        "vboxnet0"
        ethernet (vboxnet), 0A:00:27:00:00:00, hw, mtu 1500

DNS configuration:
        servers: 80.58.61.250 80.58.61.254
        domains: Home
        interface: enp2s0

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.

En general:

7.9. Modificacions

L’ordre sudo nmcli con modify "Perfil 1" permet modificar qualsevol paràmetre d’una connexió de NetworkManager.

Paràmetres IPv4

# Tipus de configuració (manual o automàtica)
sudo nmcli con modify "Perfil 1" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4"
sudo nmcli con modify "Perfil 1" ipv4.method auto

# Adreça IP i màscara
sudo nmcli con modify "Perfil 1" ipv4.addresses "192.168.1.100/24"

# Porta d'enllaç (gateway)
sudo nmcli con modify "Perfil 1" ipv4.gateway "192.168.1.1"

# DNS (un o més, separats per comes)
sudo nmcli con modify "Perfil 1" ipv4.dns "8.8.8.8,8.8.4.4"

# Dominis de cerca DNS
sudo nmcli con modify "Perfil 1" ipv4.dns-search "thos.local"

# Rutes estàtiques
sudo nmcli con modify "Perfil 1" ipv4.routes "10.0.0.0/8 192.168.1.1"

Paràmetres IPv6

sudo nmcli con modify "Perfil 1" ipv6.method ignore   # Desactivar IPv6
sudo nmcli con modify "Perfil 1" ipv6.method auto
sudo nmcli con modify "Perfil 1" ipv6.method manual ipv6.addresses fd00::100/64 ipv6.gateway fd00::1 ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844"

Paràmetres de connexió generals

# Nom de la connexió
sudo nmcli con modify "Perfil 1" connection.id "nova-connexio"

# Interfície associada
sudo nmcli con modify "Perfil 1" connection.interface-name enp2s0

# Activar/desactivar connexió automàtica en engegar
sudo nmcli con modify "Perfil 1" connection.autoconnect yes
sudo nmcli con modify "Perfil 1" connection.autoconnect no

# Prioritat d'autoconnexió (major número = més prioritat)
sudo nmcli con modify "Perfil 1" connection.autoconnect-priority 10

Paràmetres Ethernet (capa 2)

# MAC address personalitzada
sudo nmcli con modify "Perfil 1" ethernet.cloned-mac-address "AA:BB:CC:DD:EE:FF"

# MTU
sudo nmcli con modify "Perfil 1" ethernet.mtu 9000

# Forçar 100 Mb/s full dúplex (sense autonegociació; l'altre extrem ha de tenir el mateix mode)
sudo nmcli con modify "Perfil 1" ethernet.auto-negotiate no ethernet.speed 100 ethernet.duplex full

# Limitar l'anunci a 1 Gb/s full dúplex (amb autonegociació; a 1 Gb/s o més és obligatòria)
sudo nmcli con modify "Perfil 1" ethernet.auto-negotiate yes ethernet.speed 1000 ethernet.duplex full

# Tornar al comportament per defecte
sudo nmcli con modify "Perfil 1" ethernet.auto-negotiate yes ethernet.speed 0 ethernet.duplex ""

Esborra un valor (posar-lo a buit)

# Treure DNS configurats
sudo nmcli con modify "Perfil 1" ipv4.dns ""

# Treure rutes estàtiques
sudo nmcli con modify "Perfil 1" ipv4.routes ""

Aplica els canvis

Els canvis no s’apliquen fins que es reactiva la connexió:

sudo nmcli con down "Perfil 1" && sudo nmcli con up "Perfil 1"

O de forma més ràpida:

sudo nmcli con up "Perfil 1"

Per configurar la connexió perquè obtingui l’adreça IP automàticament via DHCP:

sudo nmcli con modify "Perfil 1" ipv4.method auto
sudo nmcli con modify "Perfil 1" ipv4.addresses ""
sudo nmcli con modify "Perfil 1" ipv4.gateway ""
sudo nmcli con modify "Perfil 1" ipv4.dns ""
⚠️
Avís

Els camps addresses, gateway i dns s’han de buidar explícitament, perquè si method passa a auto, però hi ha valors estàtics guardats, NetworkManager pot combinar-los o generar conflictes.

I després reactiva la connexió:

sudo nmcli con up "Perfil 1"

Per verificar que ha agafat adreça del DHCP:

nmcli con show "Perfil 1" | grep IP4
# o
ip a show enp2s0

Versions d’aquest document

Domini Públic (CC0)