NetworkManager (Italiano)

From ArchWiki
Revision as of 20:15, 6 November 2012 by Umby213 (Talk | contribs) (Configurazione: update section)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary end

NetworkManager è un programma per la rilevazione e la configurazione delle reti, e con il quale, i sistemi potranno connettersi automaticamente. La funzionalità di NetworkManager può essere utile sia per reti cablate che wireless. Per quanto riguarda il wireless, NetworkManager predilige le reti conosciute, ed offre la possibilità di passare alla rete più affidabile. Le applicazioni di allerta di NetworkManager possono passare dalla modalità online a quella offline. NetworkManager può inoltre favorire le connessioni cablate a quelle wireless, oltre ad includere il supporto per connessioni modem e certi tipi di VPN. NetworkManager è stato originariamente sviluppato da RedHat ed è ora ospitato dal progetto GNOME.

Contents

Installazione di base

NetworkManager è disponibile nei repositories ufficiali ed è quindi installabile tramite pacman.

Supporto VPN

Networkmanager supporta le reti VPN tramite tre plugin, tutti presenti nei repositories ufficiali:

   networkmanager-openvpn
   networkmanager-pptp
   networkmanager-vpnc

Interfacce grafiche

Per configurare ed avere un facile accesso a NetworkManager, molti utenti vorranno installare un'applet. Quest'interfaccia grafica solitamente risiede nella system tray (o area di notifica) e consente la selezione della rete e la configurazione di NetworkManager. Esistono varie applet per diversi tipi di desktop.

GNOME

L'applet GNOME (network-manager-applet) è abbastanza leggero e funziona in tutti gli ambienti.

Se si desidera memorizzare i dati di autenticazione (Wireless/DSL) e attivare le impostazioni di connessione globale, cioè "a disposizione di tutti gli utenti" è necessario installare GNOME Keyring.

KDE4

Il front-end KNetworkManager è stato reso disponibile per la versione KDE 4.4 come un widget di Plasma kdeplasma-applets-networkmanagement nei Repositori Ufficiali

La controparte GNOME funziona altrettanto bene, o anche meglio (ha più funzioni e rileva più hardware).

Nota: Se si cambia da un altro strumento di gestione di rete come Wicd, non dimenticare di impostare il valore predefinito "Network Management Backend" in System Settings -> Hardware -> Information Sources

Se sul proprio sistema si hanno installati sia KNetworkManager, sia nm-applet e non si vuole avere nm-applet aperto su KDE, aggiungere questa riga a /etc/xdg/autostart/nm-applet.desktop.

NotShowIn=KDE

KDE3

Anche se non è più supportato, kdemod3-knetworkmanagerAUR è disponibile su AUR. Questo pacchetto è una versione modificata del vecchio knetworkmanager per il DE Trinity e richiede NetworkManager 0.8.

XFCE

nm-applet funziona perfettamente anche in XFCE, ma per abilitare le notifiche, inclusi i messaggi di errore è necessaria una specifica implementazione di Freedesktop. Vedere questo per visualizzare le notifiche. L'implementazione più usata è data dal pacchetto xfce4-notifyd.

Senza questo demone, networkmanager stamperà questi errori stdout/stderr:

(nm-applet:24209): libnotify-WARNING **: Failed to connect to proxy
** (nm-applet:24209): WARNING **: get_all_cb: couldn't retrieve
system settings properties: (25) Launch helper exited with unknown
return code 1.
** (nm-applet:24209): WARNING **: fetch_connections_done: error
fetching connections: (25) Launch helper exited with unknown return
code 1.
** (nm-applet:24209): WARNING **: Failed to register as an agent:
(25) Launch helper exited with unknown return code 1

nm-applet funziona comunque, ma non si avrannò notifiche.

Openbox

Per usare in modo appropriato networkmanager su Openbox è necessario il demone di notifica xfce4-notifyd e il pacchetto gnome-icon-theme per abilitare l'icona nella systray.

Se si desidera memorizzare i dati di autenticazione (Wireless/DSL) installare GNOME Keyring.

Nota: Se il demone networkmanager è in /etc/rc.conf, i seguenti passaggi sono del tutto obsoleti e l'applet verrà avviato due volte.

Per fare in modo che l'autostart di Openbox avvii nm-applet correttamente, potrebbe essere necessario cancellare il file /etc/xdg/autostart/nm-applet.desktop (potrebbe essere necessario cancellarlo dopo ogni aggiornamento di network-manager-applet)

Poi in autostart, avviare nm-applet con questa riga:

(sleep 3 && /usr/bin/nm-applet --sm-disable) &

Se si riscontrano errori assicurarsi di aver avviato correttamente la sessione di D-Bus.

Altri desktop e Window Manager

Si consiglia di utilizzare l'applet di GNOME. Assicurarsi inoltre che il pacchetto gnome-icon-theme sia installato per essere in grado di visualizzare l'applet .

Per far si che la password sia memorizzata sarà necessario installare anche GNOME Keyring.

Per utilizzare nm-applet senza un vassoi di sistema, si può avvalersi di trayer o stalonetray. Si può ad esempio aggiungere uno script come questo al proprio percorso:

nmgui
 #!/bin/sh
 nm-applet    > /dev/null 2>/dev/null &
 stalonetray  > /dev/null 2>/dev/null
 killall nm-applet

La chiusura della finestra del vassoio, comporterà anche la chiusura di nm-applet, in modo che non verrà sprecata memoria inutilmente una volta terminato con le impostazioni di rete.

Da riga di comando

Il pacchetto networkmanager, dalla versione 0.8.1 contiene nmcli

Configurazione

NetworkManager richiede alcuni passaggi aggiuntivi per essere eseguito correttamente.

Verificare che il file /etc/hosts sia a posto prima di continuare. In caso di aver provato la connessione prima di eseguire questo passo, NetworkManager potrebbe averlo alterato. Un esempio di hostname in /etc/hosts:

#<ip-address> <hostname.domain.org>           <hostname>                        
127.0.0.1     localhost.localdomain localhost dell-latitude

Disabilitare la configurazione di rete attuale

Si consiglia di disabilitare la presente configurazione di rete per essere in grado di testare adeguatamente NetworkManager.

  1. stoppare il demone di Network.
  2. Disattivare il proprio NIC's (Network Interface Controllers, es. schede di rete). Per esempio, con il pacchetto iproute2:
 # ip link set eth0  down
 # ip link set wlan0 down
  1. Modificare /etc/rc.conf e dove si è definito DHCP o un indirizzo IP statico, commentarle:
Note: Le seguenti impostazioni sono obsolete nel rc.conf più recente.
#eth0="dhcp"                                                                    
#wlan0="dhcp"                                                                   
INTERFACES=(!eth0 !wlan0)
  1. Infine, eliminare network (e qualunque altro gestore di rete) dall'array DAEMONS in /etc/rc.conf.

Abilitare NetworkManager

È necessario abilitare networkmanager in modo assolutamente coerente con il proprio sistema di Init. Se si ha appena installato Arch Linux si ha sicuramente Systemd di default. Una volta che Networkmanager sarà avviato si potrà usufruire da subito dei servizi di rete tramite nmcli o un altro applet grafico.

Abilitare NetworkManager con initscripts

È necessario rimuovere il demone predefinito network e aggiungere il demone networkmanager dopo il demone dbus:

DAEMONS=( ...dbus networkmanager... )

Assicurarsi che il pacchetto dbus sia installato, poiché richiesto da NetworkManager. Per avviare altri servizi (demoni) che richiedono una connessione di rete vedere la sezione successiva su come configurarli. Per avviare immediatamente Networkmanager

# rc.d start dbus
# rc.d start networkmanager

Abilitare NetworkManager nativamente in systemd

Per avviare immediatamente NetworkManager usare il seguente comando:

# systemctl start NetworkManager.service

Per abilitare il relativo servizio di systemd usare questo comando:

# systemctl enable NetworkManager.service
Nota: Se si hanno dei servizi che non riescono ad avviarsi correttamente se avviati prima della rete, usare il servizio NetworkManager-wait-online.service. Questo, in linea generale, non dovrebbe essere quasi mai necessario.

Impostare i permessi di PolicyKit

Nella configurazione di default, gli utenti non root non sono autorizzati ad aggiungere connessioni di rete. Sarà quindi necessario attivare una sessione di consolekit, in caso contrario appariranno errori simili a questo:

** (nm-applet:780): WARNING **: Failed to add new connection: (32) Insufficient privileges.

Generalmente i Display Manager, si occupano autonomamente dell'avvio di consolekit. Se però si avvia il proprio sistema con il comando startx, sarà necessario installare il pacchetto consolekit e modificare il file ~/.xinitrc da:

exec [il proprio window manager]

a

exec ck-launch-session dbus-launch [il proprio window manager]

In alcuni casi questo potrebbe ancora non essere sufficiente, quindi provare in questo modo:

Opzione 1. Avviare un authentication agent PolicyKit al login come /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 (necessita di polkit-gnome). Potrebbe essere richiesta una password ad ogni modifica alla connessione.

Opzione 2. Aggiungere il proprio utente al gruppo wheel. In questo modo nessuna password verrà chiesta ma bisognerà garantire dei permessi particolari all'utente come ad esempio l' abilità di non immettere password usando sudo.

Opzione 3. Aggiungere il proprio utente al gruppo network e creare il seguente file:

/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla
[nm-applet]
Identity=unix-group:network
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes

Ora tutti gli utenti del gruppo network saranno in grado di editare le connessioni senza dover inserire alcuna password.

Servizi di rete con NetworkManager Dispatcher

Ci sono un paio di servizi di rete che non si desiderano in esecuzione fino a quando NetworkManager attiva un'interfaccia. Buoni esempi sono openntpd e i vari tipi di montaggi dei filesystem di rete (es. netfs). NetworkManager ha la capacità di avviare questi servizi quando ci si connette a una rete (interface up), e fermarli quando non li si sta utilizzando più (interface down).

Per utilizzare questa funzionalità, gli script possono essere aggiunti nella cartella /etc/NetworkManager/dispatcher.d. Questi script avranno bisogno dei permessi di esecuzione dell'utente. Per ragioni di sicurezza, è buona prassi renderli di proprietà di root:root e scrivibili solo dal proprietario.

Gli script verranno eseguiti in ordine alfabetico al momento della connessione (con argomenti interface up), e in ordine alfabetico inverso al momento della disconnessione (interface down). Per garantire l'ordine in cui vengono richiamati, è pratica comune utilizzare dei caratteri numerici prima del nome dello script (es. 10_portmap o 30_netfs (che assicura che il portmapper sia attivato prima che vengano tentati i montaggi NFS).

Attenzione: Per ragioni di sicurezza è necessario disattivare l'accesso in scrittura per il "gruppo" e per "altri". Ad esempio usare 755 mask. In altri casi può essere negata l'esecuzione di script, con il seguente messaggio di errore "nm-dispatcher.action: Script could not be executed: writable by group or other, or set-UID." in /var/log/messages.log
Attenzione: Se ci si connette da reti pubbliche o estere, bisogna essere consapevoli di quali servizi si stanno avviando e quali server su cui connettersi sono disponibili per loro. Si potrebbe aprire una falla di sicurezza lanciando i servizi sbagliati mentre si è connessi ad una rete pubblica.

Avviare openntpd

Lo script seguente è un esempio di come avviare openntpd quando un'interfaccia viene attivata. Salvare il file come /etc/NetworkManager/dispatcher.d/20_openntpd e renderlo eseguibile.

#!/bin/sh

INTERFACE=$1 # The interface which is brought up or down
STATUS=$2 # The new state of the interface

case "$STATUS" in
    'up') # $INTERFACE is up
	exec /etc/rc.d/openntpd start
	;;
    'down') # $INTERFACE is down
	# Check for active interface and down if no one active
	if [ ! `nm-tool|grep State|cut -f2 -d' '` == "connected" ]; then
		exec /etc/rc.d/openntpd stop
	fi
	;;
esac

Montare cartelle remote con sshfs

Dato che lo script viene eseguito in un ambiente ristretto, è necessario esportare SSH_AUTH_SOCK per connettere il proprio agente SSH. Esistono diversi modi per compiere adeguatamente questa operazione, per maggiori informazioni leggere questa discussione sul forum. L'esempio sottostante funziona con gnome-keyring, che, se non è già stato sbloccato, richiederà la relativa password. Nel caso in cui networkmanager si avvii in modo automatico all'avvio è possibile che gnome-keyring non sia ancora stato inizializzato. È quindi possibile che l'esportazione fallisca (ed entri in sleep). L' UUID necessario si trova in /etc/NetworkManager/system-connections/.

#!/bin/bash
USER=<your sshfs user>
if [ $CONNECTION_UUID == <connection UUID> ]; then
       case "$2" in
               up)
                  #sleep 10
                  export SSH_AUTH_SOCK=$(find /tmp/keyring-*/ -type s -user $USER -gr oup users -name ssh)
                  su $USER -c "/usr/bin/sshfs user@host:/remote/folder /local/folder/"
                ;;
               down)
                  fusermount -u /local/folder
                ;;
       esac
fi

Usare dispatcher per connettersi a rete VPN dopo aver stabilito una connessione

In questo esempio si desidera connettersi automaticamente a una connessione VPN definita in precedenza con NetworkManager. La prima cosa da fare è creare lo script del dispatcher che definisce che cosa fare dopo aver stabilito la connessione alla rete.

1) Creare lo script
/etc/NetworkManager/dispatcher.d/vpn-up
VPN_NAME=<name of VPN connection defined in NetworkManager>
  ESSID=<wifi network ESSID (not connection name)>
  if [ "$2" = "up" -o "$2" = "vpn-down" ]; then          # -o "$2" = "vpn-down" makes VPN reconnect after VPN connection interrupt
    if [ "$(iwgetid | grep ':"'$ESSID'"')" ]; then       # check for ESSID match
      nmcli con up id "$VPN_NAME";                       # parentheses needed for VPN connection names with spaces
    fi
  elif [ "$2" = "down" ]; then                           # disconnect VPN prior to disconnecting from the network
    if [ "$(iwgetid | grep ':"'$ESSID'"')" ]; then       # check for ESSID match and that VPN is actually connected
      if [ $(nmcli con status id "$VPN_NAME" | grep -c activated) ]; then
        nmcli con down id "$VPN_NAME";
      fi
    fi
  fi

Non dimenticare di renderlo eseguibile con chmod +x e di rendere possibile a tutti gli utenti accedere a connessioni vpn.

Provando a connettere networkmanager con questa configurazione si noterà che il risultato sarà: 'no valid vpn secrets'. Questo è causato dal modo in cui i "secret flag" vengono salvati da vpn. È quindi necessario seguire quest altra istruzione:

2) Editare il file di configuazione della connessione vpn per rendere NetworkManager in grado di memorizzare i parametri al suo interno invece che in un portachiavi che sarà inaccessibile a root:

Aprire quindi NetworkManager/system-connections/<nome della connessione> e cambiare password-flags e secret-flags da 1 a 0.

Nota: Potrebbe essere necessario riaprire l'applet di NetworkManager e re-immettere la password vpn.

Usare /etc/rc.conf per controllare networkmanager

Alcuni utenti Arch potrebbero avere la necessità di controllare completamente Networkmanager da /etc/rc.conf. Questo metodo prevede proprio questo. I servizi avviati da NetworkManager sono controllati da rc.conf tramite l'uso dell'array NET_DAEMONS, un array sullo stesso stile dell'array DAEMONS.

1) Installare networkmanager-dispatcher-net_daemonsAUR da AUR.

2) Inserire dbus e networkmanager nella riga DAEMONS del file /etc/rc.conf.

3) Aggiungere la linea NET_DAEMONS allo stesso file (/etc/rc.conf) che includa tutti i servizi che non si vuole avviare prima della connessione come ad esempio: sshd, samba, ecc..

Un esempio di DAEMONS e NET_DAEMONS in rc.conf è il seguente:

# DAEMONS
# -------
#
DAEMONS=(syslog-ng crond dbus networkmanager)
NET_DAEMONS=(iptables nscd sshd samba avahi-daemon avahi-dnsconfd openntpd)

Impostazioni proxy

Network Manager non gestisce direttamente le impostazioni del proxy, ma con il DE GNOME, è possibile utilizzare proxydriver per le impostazioni proxy tramite le informazioni di Network Manager. Il pacchetto proxydriverAUR è disponibile su AUR.

Per fare in modo che proxydriver sia in grado di modificare le impostazioni del proxy, è necessario eseguire questo comando, dalle applicazioni d'avvio di GNOME (Sistema->Preferenze->Applicazioni d'avvio):

xhost +si:localuser:your_username

Consultare: Proxy settings

Testing

Gli applet NetworkManager sono progettati per essere caricati al momento del login in modo che nessuna ulteriore configurazione dovrebbe essere necessaria per la maggior parte degli utenti. Dopo aver disabilitato le impostazioni di rete precedenti e scollegata la rete, è possibile verificare se NetworkManager funziona. Per prima cosa avviare il demone:

rc.d start networkmanager 

Alcuni applet includono un file .desktop in modo da poter essere caricati attraverso il menu delle applicazioni. In caso contrario, bisognerà scoprire il comando da usare o reiniziare una nuova sessione per avviare l'applet. Una volta avviato, stabilirà le connessioni di rete dopo una prima fase di interrogazioni (polling), per poi auto-configurarsi con un server DHCP.

Per avviare l'applet di GNOME in Window Manager non compatibili con xdg come Awesome:

nm-applet --sm-disable &

Per gli IP statici è necessario configurare NetworkManager ad interpretarli. Solitamente basta un click destro del mouse sull'applet per selezionare "Modifica connessioni".

Risoluzione dei problemi

Alcune correzioni ai problemi più comuni.

Problemi con il traffico dati tramite il tunnel PPTP

Può succedere che il login alla connessione PPTP avvenga in maniera corretta, e si veda che l'interfaccia ppp0 ha un IP VPN esatto, ma non si riesca a "pingare" nessun IP remoto. La causa è la mancanza del supporto a MPPE (Microsoft Point-to-Point Encryption) nel pacchetto pppd di Arch.

Sarà sufficiente installare ppp-mppeAUR da AUR.

Prima provare con il pacchetto standard di Arch ppp, potrebbe funzionare a dovere.

Gestione di rete disabilitata

A volte, quando NM viene spento, il file del PID (stato) non viene rimosso e si ottiene il messaggio "Network management disabled". Se questo accade, sarà necessario rimuoverlo manualmente:

rm /var/lib/NetworkManager/NetworkManager.state

Se questo accade al riavvio, è possibile aggiungere un'azione a etc/rc.local per farli rimuovere al momento del boot:

nmpid=/var/lib/NetworkManager/NetworkManager.state
[ -f $nmpid ] && rm $nmpid

NetworkManager impedisce a DHCPCD l'uso di resolv.conf.head e resolv.conf.tail

A volte è problematico aggiungere elementi statici a resolv.conf quando è costantemente riscritto da NM e dhcpcd. È possibile utilizzare il pacchetto networkmanager-dhclient di AUR, ma una soluzione migliore è quella di utilizzare questo semplice script:

#!/bin/bash
# 
# /etc/NetworkManager/dispatcher.d/99-resolv.conf-head_and_tail
# Include /etc/resolv.conf.head and /etc/resolv.conf.tail to /etc/resolv.conf
#
# scripts in the /etc/NetworkManager/dispatcher.d/ directory
# are called alphabetically and are passed two parameters:
# $1 is the interface name, and $2 is “up” or “down” as the
# case may be.

resolvconf='/etc/resolv.conf';
cat "$resolvconf"{.head,,.tail} 2>/dev/null > "$resolvconf".tmp
mv -f "$resolvconf".tmp "$resolvconf"

Preservare le modifiche a resolv.conf

NetworkManager cercherà di scrivere le informazioni del DNS da DHCP in /etc/resolv.conf, sovrascrivendone il contenuto esistente. È possibile evitare questo comportamento impostando il "bit immutabile" sul file (da root):

# chattr +i /etc/resolv.conf

Per modificare il file in futuro, rimuovere per prima cosa il bit immutabile:

# chattr -i /etc/resolv.conf

Problemi DHCP

In caso di problemi nell'ottenere un indirizzo IP tramite DHCP, provare ad aggiungere quanto segue al file /etc/dhclient.conf:

 interface "eth0" {
   send dhcp-client-identifier 01:aa:bb:cc:dd:ee:ff;
 }

Dove aa:bb:cc:dd:ee:ff è l'indirizzo MAC della scheda di rete. L'indirizzo MAC può essere trovato usando il comando ip link show eth0, fornito da iproute2.

Con qualche router, risulterà impossibile la connessione senza prima aver decommentato:

require dhcp_server_identifier

in /etc/dhcpcd.conf (notare che questo file è un file distinto da dhcpd.conf). Questo non dovrebbe causare problemi con server a DHCP multipli (configurazione non usuale); vedere questa pagina per maggiori informazioni.

Manca il route predefinito

Se con un sistema con KDE4, nessun percorso di default è stato creato al momento di stabilire le connessioni wireless con NetworkManager, in genere si può risolvere modificando le impostazioni di route della connessione wireless, per rimuovere la selezione di default "Use only for resources on this connection".

Modem 3G non rilevato

Se NetworkManager (da v0.7.999) non rileva il modem 3G, ma è comunque possibile collegarsi tramite wvdial, provare ad installare il pacchetto modemmanager e riavviare il demone NetworkManager con /etc/rc.d/networkmanager restart. Ricollegare il modem o riavviare. Questa utilità fornisce il supporto per l'hardware non incluso di default nel database di NetworkManager.

problemi di VPN in Networkmanager 0.7.999

Se viene visualizzato il messaggio di errore "invalid secrets" quando si tenta di connettersi al provider VPN utilizzando il protocollo PPTP, provare ad installare le versioni git: networkmanager-gitAUR, network-manager-applet-gitAUR e networkmanager-pptp-gitAUR.

Spegnimento WLAN su computer portatili

A volte NetworkManager non funziona quando si disattiva l'adattatore Wifi con l'interruttore del portatile e si prova ad abilitarlo nuovamente in seguito. Questo è spesso un problema con rfkill. Installarlo dai repositories ufficiali e dare il comando

$ watch -n1 rfkill list all

per verificare se il driver informa rfkill circa lo stato della scheda wireless. Se un identificatore rimane bloccato dopo aver premuto l'adattatore, si potrebbe provare a sbloccarlo manualmente con (dove X è il numero di identificazione fornito dall'output del comando sopra):

# rfkill event unblock X

Impostazioni IP statico ripristinate a DHCP

A causa di un bug non risolto, quando si cambia l'impostazione predefinita per le connessioni con IP statico, nm-applet potrebbe non memorizzare correttamente la modifica della configurazione, e reimpostare il DHCP automatico. Segue una soluzione per questo problema.

Modificare la connessione predefinita (per esempio "Auto eth0") in nm-applet. Cambiare il nome della connessione (ad esempio "la mia eth0"), deselezionare la casella "Disponibile a tutti gli utenti", modificare le impostazioni di IP statico desiderate, quindi fare clic su Applica. Ciò salverà una nuova connessione con il nome indicato.

Successivamente, si desidera effettuare la connessione di default e non connettersi automaticamente. Per fare ciò, eseguire

$ sudo nm-connection-editor  # si deve usare sudo, non su

Nell'editor di connessione, modificare la connessione di default (ad esempio "Auto eth0") e deselezionare "Connetti automaticamente". Fare clic su Applica e chiudere l'editor di connessione.

Impossibile editare le connessioni da utente normale

Qualche volta è necessario connettere il proprio pc ad una nuova rete ma risulta impossibile senza i privilegi di root.

Aggiungere il proprio utente al gruppo network. Aggiungere ora questa regola di polkit:

[nm-applet]
Identity=unix-group:network
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes

nel file /etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla

Suggerimenti

Verificare l'attivazione della rete all'interno di un processo cron o script

Alcune esecuzioni di cron richiedono la rete per poter funzionare. Si potrebbe evitare l'esecuzione di questi, fino a quando la rete non è nuovamente disponibile. A tale scopo, aggiungere un if di prova per le networking query richieste da NetworkManager, che controllano lo stato della rete. Il test qui illustrato funziona con le interfacce attive, e fallisce se non lo sono. Questo può essere utile per i computer portatili che possono essere cablati, wireless, o semplicemente fuori dalla rete.

if [ `nm-tool|grep State|cut -f2 -d' '` == "connected" ]; then
       #Whatever you want to do if the network is online
else
       #Whatever you want to do if the network is offline - note, this and the else above are optional
fi

Molto utile per uno script cron.hourly che esegue fpupdate per l'aggiornamento dello scanner antivirus F-Prot, per esempio. Un'altra possibilità, con delle piccole modifiche, è quello di distinguere tra le reti utilizzando varie parti degli output di nm-tool; per esempio, in quanto la rete wireless attiva è indicata con un asterisco, è possibile, con l'utilizzo di "grep", trovare il nome della rete orientando la ricerca "grep" all'asterisco.

Sblocco automatico del portachiavi dopo il login

Gnome

  1. Fare clic destro sull'icona di NM nel pannello e selezionare "Modifica connessioni" per aprire la scheda Wireless
  2. Selezionare la connessione che si desidera e fare clic sul pulsante Modifica
  3. Seleziona le caselle "connessione automatica" e "disponibili a tutti gli utenti"

Disconnettersi ed accedere nuovamente alla sessione.

Nota: Il metodo seguente è datato, e noto per non funzionare su alcune macchine!

*In /etc/pam.d/gdm (o il demone corrispondente in /etc/pam.d), aggiungere queste righe alla fine dei blocchi "auth" e "session" in caso non esistano già:

 auth            optional        pam_gnome_keyring.so
 session         optional        pam_gnome_keyring.so  auto_start
  • In /etc/pam.d/passwd, utilizzare questa riga per il blocco della "password":
 password    optional    pam_gnome_keyring.so
Al seguente accesso, dovrebbe venir richiesto se si desidera che la password venga sbloccata automaticamente al login.

KDE

Nota: Vedere http://live.gnome.org/GnomeKeyring/Pam per maggiori informazioni, e se si utilizza kde / kdm, è possibile avvalersi di pam-keyring-tool da AUR.
  • Mettere uno script come il seguente in ~/.kde4/Autostart:
 $!/bin/sh
 echo PASSWORD | /usr/bin/pam-keyring-tool --unlock --keyring=default -s
Script simili dovrebbero funzionare anche con openbox, LXDE, ecc.

SLiM login manager

  • Aggiungere queste righe in /etc/pam.d/slim, alla fine dei blocchi "auth" e "session" in caso non siano specificate ancora:
 auth            optional        pam_gnome_keyring.so
 session         optional        pam_gnome_keyring.so  auto_start
  • In /etc/pam.d/passwd, utilizzare questa riga per il blocco 'password':
 password    optional    pam_gnome_keyring.so
  • In ~/.xinitrc, aggiungere queste righe nella parte iniziale, prima di lanciare il window manager ed altre applicazioni:
 ## test for an existing bus daemon, just to be safe
 if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
    ## if not found, launch a new one
    eval `dbus-launch --sh-syntax --exit-with-session`
    echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
 fi
Al seguente login, verrà richiesto se si desidera che la password venga sbloccata automaticamente al login.

Ignorare dispositivi specifici

A volte potrebbe tornare utile che network manager ignori alcuni dispositivi e non provi ad ottenere un indirizzo IP.

  • Prima di tutto bisogna trovare l'UDI di Hal (es. con lshal):
 ...
 info.product = 'Networking Interface'  (string)
 info.subsystem = 'net'  (string)
 info.udi = '/org/freedesktop/Hal/devices/net_00_1f_11_01_06_55'  (string)
 linux.hotplug_type = 2  (0x2)  (int)
 linux.subsystem = 'net'  (string)
 ...
  • Aggiungere l'UDI a /etc/NetworkManager/nm-system-settings.conf:
 [keyfile]
   unmanaged-devices=/org/freedesktop/Hal/devices/net_00_1f_11_01_06_55
Possono venire specificati dispositivi multipli, delimitati da punti e virgola:
 [keyfile]
   unmanaged-devices=/org/freedesktop/Hal/devices/net_00_1f_11_01_06_55;/org/freedesktop/Hal/devices/net_00_2c_6d_e2_08_af

Non è necessario riavviare NetworkManager perchè le modifiche abbiano effetto.

  • Ignorare un tipo di dispositivo in fase di boot.

questo script è stato utilizzato per ignorare tutti i dispositivi Ethernet al momento del boot di una archiso, può essere modificato per ignorare dispositivi wifi, ecc, essendo utilizzato su un "non-persistant filesystem", nm-system-settings.conf è predefinito nel run time

  #!/bin/sh
  # author: tim noise <darknoise@drkns.net>
  COUNT=0
  TARGET_FILE="/etc/NetworkManager/nm-system-settings.conf"
  for i in `lshal | grep -A6 'Networking Interface' | awk -F "'" '/info.udi = / {print $2}'`; do
      if [ $COUNT = 0 ]; then
          COUNT=$COUNT+1;
          echo "unmanaged-devices=$i" >> $TARGET_FILE
      else
          echo -n ";$i" >> $TARGET_FILE
      fi
  done
  printf "\n" >> $TARGET_FILE

Connessioni più veloci

Collegarsi più velocemente disabilitando IPv6

Se non c'è il supporto IPv6 sulla rete locale, la connessione a una rete può richiedere più tempo del normale, mentre Network Manager cerca di stabilire una connessione IPv6 e magari, alla fine, andare in time out. La soluzione è quella di disabilitare IPv6 all'interno di Network Manager. Questo deve essere fatto una sola volta per ogni rete a cui ci si connette.

  • Fare clic destro sull'icona di stato della rete.
  • Cliccare su "Modifica connessioni".
  • Andare su "Wired" o "Wireless", a seconda dei casi.
  • Selezionare il nome della rete.
  • Cliccare su "Modifica".
  • Andare alla sezione "Impostazioni IPv6".
  • Nel menu a discesa "Metodo", scegliere "Ignora".
  • Cliccare su "Salva".

Speed up DHCP by disabling ARP probing in dhcpcd

dhcpcd contiene un'implementazione di una raccomandazione agli standard DHCP (RFC2131 sezione 2.2) per assicurarsi via ARP che l'IP assegnato non sia già in uso. Potrebbe sembrare inutile in una rete domestica, ma si possono risparmiare fino a 5 secondi sul tempo di connessione aggiungendo a /etc/dhcpcd.conf:

noarp

Questo equivale a lanciare dhcpd con il flag --noarp, questo disabilita il sondaggio ARP velocizzando la connessione con DHCP.

Usare Servers OpenDNS

Creare il file /etc/resolv.conf.opendns con i nameservers:

nameserver 208.67.222.222
nameserver 208.67.220.220

Per sostituire i server DHCP con gli OpenDNS:

/etc/NetworkManager/dispatcher.d/dns-servers-opendns
#!/bin/bash
# Use OpenDNS servers over DHCP discovered servers

cp -f /etc/resolv.conf.opendns /etc/resolv.conf

Rendere eseguibile lo script:

# chmod +x /etc/NetworkManager/dispatcher.d/dns-servers-opendns