Il sistema NetworkManager dovrebbe consentire una gestione semplice e dinamica delle connessioni di rete. L'utente non privilegiato puo' attivare, disattivare e configurare connessioni Ethernet e WiFi, memorizzare le impostazioni per riutilizzarle rapidamente quando necessario.
Il sistema consiste in un demone che gira con i privilegi di root ed espone un'interfaccia D-Bus. NetworkManager utilizza altri sottositemi per configurare l'hardware, ad esempio wpa_supplicant per le connessioni WiFi.
L'utente dispone di programmi client, di solito sotto forma di applet per il Desktop Manager. In ambiente KDE (ma funziona anche con Xfce) si puo' utilizzare knetworkmanager
fornito dal pacchetto Debian Squeeze network-manager-kde.
L'installazione predefinita dell'ambiente Xfce in Debian 10 Buster utilizza NetworkManager per la gestione utente delle connessioni di rete, comprese quelle WiFi.
Ogni rete WiFi che viene utilizzata dall'utente, produce un file nella directory /etc/NetworkManager/system-connections/. Si tratta di file leggibili solo da root che contengono le informazioni sulla rete WiFi, compresa la password in chiaro. Ogni file avrà nome del tipo <ESSID>.nmconnection e conterrà informazioni del tipo:
[connection] id=Home-WiFi uuid=77d75121-6bfe-4dad-88a3-9fc32ca0dd4a type=wifi permissions= [wifi] mac-address=20:4E:F6:BA:8A:3F mac-address-blacklist= mode=infrastructure ssid=Home-WiFi [wifi-security] auth-alg=open key-mgmt=wpa-psk psk=WiFiSecret
Con Debian 5 Lenny e Debian 6 Squeeze, NetworkManager può utilizzare il sistema KDE Wallet (fornito dal pacchetto kdebase-runtime in Debian 5 e 6, oppure da kwalletmanager in Debian 10 Jessie e successive) per memorizzare le password WiFi utilizzate dall'utente.
Le credenziali per accedere alle reti WiFi possono essere memorizzate da knetworkmanager
nel sistema kwalletd
(il portachiavi di KDE, fornito dal pacchetto kdebase-runtime). L'interfaccia di kwalletmanager
consente di vedere il contenuto del portachiavi, esportare e importare i dati. I file che costituiscono il portachiavi sono in $HOME/.kde/share/apps/kwallet/
.
In Debian Lenny le password WiFi erano memorizzate in kwalletd nella cartella knetworkmanager, sottocartella Maps. Per ogni ESSID viene memorizzata una entry con di nome uguale all'ESSID e chiave password.
In Debian Squeeze le password sono memorizzate sempre in kwalletd, ma nella cartella Network Management, sottocartella Maps. Per ogni connessione viene creata una entry identificata da uno uuid che contiene la password. L'ESSID ed altri dati della connessione sono memorizzati in file separati (directory $HOME/.kde/share/apps/networkmanagement/connections/
), identificati tramite la stessa uuid.
In una configurazione desktop che abbia però optato per un IP statico (definito in /etc/network/interfaces
), NetworkManager non prende in carico la configurazione dell'interfaccia. Questo determina uno stato in cui NetworkManager crede che il sistema sia privo di connessione di rete, in queste condizioni alcuni programmi (Pidgin ed Evolution per citarne alcuni) si rifiutano di funzionare.
Una soluzione può essere quella di rimuovere il pacchetto NetworkManager se non viene utilizzato per altre connessione WiFi, GPRS o simili.
Altrimenti ci sono alcuni suggerimenti in questo bug report e in questa pagina wiki, la soluzione è impostare quanto segue in /etc/NetworkManager/NetworkManager.conf
:
[ifupdown] managed=true
È importante che anche i DNS server siano impostati in /etc/network/interfaces
.
In queste condizioni bisogna anche impostare opportunamente il file /etc/hosts
con qualcosa del genere:
127.0.0.1 localhost.localdomain localhost 192.168.3.2 delfi.my.rigacci.org delfi
Non aver definito correttamente il nome dell'host (nella sua forma breve e in quella fqdn) può causare il fallimento del protocollo di autenticazione SASL, ad esempio in Pidgin si può incappare nell'errore:
Server does not use any supported authentication method
che nel debug log (Menu Help → Debug Window) si evidenzia con:
sasl: sasl_state is -1, failing the mech and trying again
Sembra che sia possibile far convivere NetworkManager e resolvconf, anche se entrambi vogliono gestire in maniera dinamica il file /etc/resolv.conf
. Nel caso specifico si voleva lasciare NetworkManager la gestione della WiFi e gestire manualmente la Ethernet.
/etc/network/interfaces
in modo che NetworkManager non la prenda in caricoresolvconf
per aggiungere/togliere il DNSEcco ad esempio uno script che può essere eseguito pare senza controindicazioni:
route add default ge 10.0.0.1 echo "nameserver 10.0.0.10" | resolvconf -a eth0