Network Manager

Non ho mai amato del tutto NetworkManager e ho cercato fino alla fine di evitare di usarlo a favore del vecchio e consolidato servizio Network: Devo però ammettere che la gestione delle reti wireless funziona davvero bene così a fine 2012 ho deciso di utilizzarlo anche sul computer fisso.

La domanda che mi ha sempre ronzato per la testa è: "Ma dove diavolo salva le configurazioni di rete network manager?" Voglio dire, ho un' interfaccia di rete che prende l'ip via dhcp, un'altra con ip assegnato su una rete privata e una rete wifi... Dovrà pur da qualche parte memorizzarsi le impostazioni.

La realtà però è che se avessi letto la documentazione avrei capito bene gia da tempo come funzionano le cose.

Mi sono andato a leggere la documentazione che sul mio fedora18 sta in

/usr/share/doc/NetworkManager-XXXX/README

e il risultato è che NetworkManager "liscio" non salva le impostazioni e manco se ne preoccupa perchè non è questo il suo scopo.

"NetworkManager does not store connections or settings, it is only the mechanism by which those connections are selected and activated"

Per come la vedo io quindi il servizio principale NetworkManager fonisce  le sue primitive, poi altri servizi D-Bus le sfrutteranno per configurare la rete come lo vuole l'utente. Questi servizi D-Bus sono chiamati "Setting Services" e ce ne sono 2: "User Setting Service" e "System Setting Service".

Questi Setting Service quindi memorizzeranno le configurazione come preferiscono.

User Setting Service come dice il nome serve a fornire configurazioni specifiche per utente e sono visibili solo dall'utente stesso. Di solito le modifichi tramite l'applet di gnome/kde (o anche altri programmi): Per esempio l'applet di GNOME (nm-applet) memorizza le sue configurazioni nel sistema dconf (il mega registrone di configurazioni), KNetworkManager invece in kde4  dovrebbe memorizzare i dati in home/$USER/.kde4/share/apps/networkmanagement/connections/{UUID} e in .kde4/share/config. Un esempio tipico di settaggio per utente è la password di una rete wi-fi a cui ci si vuol connettere

System Setting Service gira come root ed è implementato direttamente all'interno di NetowkrManager (prima era un servizio separato) e le configurazioni che va a modificare vengono caricate in fase di boot prima della fase di login e hanno la precendeza su tutte le configurazioni per utente. Questi settaggi in genere sono memorizzati da qualche parte sotto /etc, in particolare nelle nuove versioni in /etc/NetworkManager/NetworkManager.conf. Per venire incontro alle esigenze delle singole distribuzioni questo file di configurazione (/etc/NetworkManager/NetworkManager.conf) contiene solo delle configurazioni generiche e poi può essere esteso tramite  plugin specifici per ogni distribuzione

Si possono anche usare più plugin contemporaneamente e verranno utilizzati a seconda dell'ordine specificato
Per esempio se vuoi usare i plugin "ifcfg-rh" e  "keyfile" scrivi all'interno di /etc/NetworkManager/NetworkManager.conf una cosa del tipo

In questo modo le configurazioni (System setting) verranno lette/scritte sia nei classici file di redhat in
/etc/sysconfig/network-scripts
e poi scondariamente nei keyfile (tipici di ubuntu) in
etc/NetworkManager/system-connections

Ciascuno di questi plugin (in modi diversi) può specificare il mac address di un device di rete per far si che non venga gestito da NetworkManager

Qui la guida di come configurare i vari plugin

https://wiki.gnome.org/Projects/NetworkManager/SystemSettings

Nel mio caso di fedora18

Questa una configurazione che ha fatto NetworkManager col plugin dell'ifcfg-rh, o, sarebbe meglio dire, cha ha fatto l'applet di KDE per NetworkManager con il plugin ifcfg-rh

Come si vede per questa connessione di rete c'è il flag NM_CONTROLLED=yes che fa si che, se mai dovessi attivare il vecchio servizio Network, questo file non verrebbe sa esso preso in considerazione.

Nel mio /etc/NetworkManager/NetworkManager.conf c'è anche no-auto-default=50:46:5D:8D:7C:6D,
NM di default, quando vede che c'è un dispositivo di rete ethernet  automaticamente crea una connessione standard per quel dispositivo, questo comando inibisce questo comportamento per il dispositivo con quel mac address.  Quando la configurazione di una rete cablata viene salvata tramite un plugin il mac address del device viene automaticamente aggiunto alla lista per evitare che venga creata la connessione un'altra volta. Si possono usare anche delle wildcard e mettere più di un mac address separato da , tipo

no-auto-default=00:22:68:5c:5d:c4,00:1e:65:ff:aa:ee
no-auto-default=*

Ciò che trovi in /etc/sysconfig/networking/devices sono hardlink di quel che trovi in /etc/sysconfig/network-scripts/ per capirlo guarda il numero di inode se è lo stesso sono hard link (ls -i)

 

Nel caso di un ubuntu

E il file di configurazione creato

Alcuni dei settaggi dell' applet vengono memorizzati in queste chiavi di dconf (le puoi anche vedere e modificare usando dconf-editor)

 

CENTOS 6.5

Non so se il problema sia la versione non troppo recente di nm installata su centos (0.8.1) o se ci sia qualcosa che mi sfugge.
In ogni caso qui, se configuro le schede di rete tramite l'applet di gnome di network-manager (nm-applet), pur avendo il plugin ifcfg-rh, non mi crea in automatico i file in /etc/sysconfig/network-scripts. Per crearli bisogna utilizzare il vecchio programma system-config-network, creare i device di rete e configurarli. Una volta creati col configuratore grafico di nm vedremo spuntare, oltre alle configurazioni "auto eth0, auto eth1 etc" anche "System eth0, Syestem eth1 etc". Se li vado a modificare graficamente però di nuovo i file ifcf-rh non vengono modificati.
Ne concludo che questa versione di networkmanager legge correttamente dei file ifcfg-rh creati a mano o con un tool esterno (system-config-network) ma non è in grado di scriverli.

 

RIGA DI COMANDO

Ci sono anche dei comandi da bash che si possono utilizzare per fare diagnostica e/o configurazioni su NetworkManager

I 2 comandi da utilizzare sono

nmcli
nm-tool

Per utilizzarli è bene aver chiaro questi 3 concetti

  • Device          -> L'oggetto fisico che offre connettività di rete (modem, schede di rete, dongle bluetooth etc). I device vengono quindi classificati in "types", per esempio "802.11", "wifi",  "ethernet" , "bluetooth"
  • Connection -> Un gruppo di settings che insieme descrive in maniera completa le modalità di connessione a un rete specifica. Ogni connection ha un proprio identificativo univoco (UUID)
  • Settings        ->Una coppia chiave/valore che descrive una specifica proprietà, per esempio SSID//VODAFONE_WIFI

 

nm-tool
-> Stato dei vari dispositivi di rete, delle connessioni e alcune capacità

nmcli nm status
-> Interroga network manager

nmcli dev list
nmcli dev list p4p1
-> Guarda l'elenco dei device (o solo del device p4p1) e le capacità dello stesso

nmcli dev status
-> Mostra l'elenco dei dispositivi gestiti

nmcli dev wifi list wlan0
-> Elenco delle reti wifi che vede sul device wifi e connessione wlan0

nmcli con list
-> Guarda le connessioni (gestite da NetworkManager)

nmcli con status
-> Mostra le connessioni (gestite da NetworkManager) attive
Si può utilizzare sempre nmcli per attivare o disattivare le varie connessioni, una sorta di analogo di ciò che andavamo a fare con ifup/ifdown

nmcli con down id p4p1
-> Disattiva la connessione p4p1
(occhio che se hai l'applet attivo appena tiri giu l'interfaccia l'applet la ritira su e la riconfigura automaticamente)

nmcli nm enable false
-> Disabilita la gestione della rete di NetworkManager
nmcli nm wifi off
-> Disabilita la gestione della rete wifi di NetworkManager

Vecchi strumenti.

I "vecchi" e sempre verdi comandi utilizzati per configurare un'interfaccia di rete funzionano ancora, solo che, ovviamente, possono funzionare solo temporanemente fino al prossimo reset di NetworkManager

Esempio IP statico
ifconfig p4p1 192.168.0.1
route add default gw 192.168.0.253
echo nameserver X.X.X.X > /etc/resolv.conf

Esempio DHCP
dhclient p4p1

Persistent Hostname

Da manuale trovi che

"The persistent machine hostname is pulled from /etc/sysconfig/network's HOSTNAME variable."
Però f18 che memorizza (anche??) in /etc/hostname

]# cat /etc/hostname
nome_pc

 

Print Friendly, PDF & Email