martedì 22 febbraio 2011

Network Manager? No, grazie!

Ovvero, come feci a sbarazzarmi degli ingombranti network-manager e wicd

Con questo articolo vorrei spiegare a codesto amabile pubblico come riuscire in modo "semplice" a connettersi alla rete senza utilizzare i pratici ma ingombranti network-manager e wicd.
In breve lo scopo è quello di ottenere un sistema più leggero e reattivo senza rinunciare alla piena usabilità dei nostri netbooks.

I vantaggi che ho riscontrato da questo metodo sono:
  • Caricamento del Desktop più rapido
  • Minor memoria utilizzata
  • Connessione alla rete più rapida
Ma vediamo ora come procedere.



ATTENZIONE! PRIMA DI OPERARE IN QUALSIASI SENSO LEGGETE QUESTA GUIDA CON ATTENZIONE E IN OGNI SUA PARTE!

premesse (dovute)

Dato che le casistiche sono moltissime, e non è scopo del presente articolo illustrare ciascuna di esse, mi limito a riportare solo la mia a titolo di esempio. Conseguentemente la configurazione ad-hoc sarà completamente opera e frutto della vostra ricerca e non di un copia-incolla. Fortunatamente i link da me segnalati sono molto esaustivi, specialmente le wiki di ArchLinux, quindi fate riferimento a quelle nel caso abbiate caratteristiche differenti.
Bene, adesso penso proprio di potervi augurare buona lettura!!!

Ordunque gli esempi riportati qua fanno riferimento alla mia rete, ovvero:
  • ESSID nascosto
  • Sistema di criptazione WPA2
  • IP dinamico

Per iniziare qualche link alle guide che trattano ampiamente del tema e a cui mi sono ispirato:

mettiamoci all'opera

Per prima cosa bisogna conoscere le caratteristiche della rete a cui vogliamo connetterci le quali saranno utili per le successive configurazioni, e quindi da terminale date:
sudo iwlist scan
Dovrebbe apparire qualcosa del tipo:
lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

wlan0     Scan completed :

         Cell 01 - Address: 
                   Channel:1
                   Frequency:2.412 GHz (Channel 1)
                   Quality=41/70  Signal level=-69 dBm 
                   Encryption key:on                         24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=0000000156a855a9
                    Extra: Last beacon: 24ms ago
                    IE: Unknown: 0011566F6461666F6E652D3130333836363134
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 030106
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD090010180201F4000000
                    IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00

                   ESSID:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
                   Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                             24 Mb/s; 36 Mb/s; 54 Mb/s
                   Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                   Mode:Master
                   Extra:tsf=00000003969f3008
                   Extra: Last beacon: 228ms ago
                   IE: Unknown: 00110000000000000000000000000000000000
                   IE: Unknown: 010882848B962430486C
                   IE: Unknown: 030101
                   IE: Unknown: 050400010000
                   IE: Unknown: 2A0104
                   IE: Unknown: 2F0104
                   IE: Unknown: 32040C121860
                   IE: Unknown: DD090010180201F4000000
                   IE: IEEE 802.11i/WPA2 Version 1
                       Group Cipher : TKIP
                       Pairwise Ciphers (2) : CCMP TKIP
                       Authentication Suites (1) : PSK
                   IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
Procediamo adesso a installare i pacchetti necessari:

Debian
sudo aptitude install wpasupplicant wireless-tools
ArchLinux
sudo pacman -S wpa_supplicant wireless-tools 
Prima di maneggiare le configurazioni chiudiamo l'interfaccia WIFI:
sudo ifconfig wlan0 down

Arrivati a questo punto si dovrà operare sul file di configurazione /etc/wpa_supplicant.conf, se non esiste createlo.
sudo nano /etc/wpa_supplicant.conf
Riporto qua l'esempio presente nella wiki di ArchLinux con una piccola modifica rigurdante le reti nascoste.
network={
       ssid="mywireless"
       #scan_ssid=1 #decommentare in caso di ESSID nascosto
       proto=RSN
       key_mgmt=WPA-PSK
       pairwise=CCMP TKIP
       group=CCMP TKIP 
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}
Le voci da inserire in modo appropriato le trovate ovviamente nel risultato del comando che abbiamo lanciato all'inizio di quest'articolo (iwconfig).
Se avete scelto di non far trasmettere l'ESSID al vostro router (cioè avete la rete nascosta), dovete togliere il commento (#) alla seguente voce:
scan_ssid=1
Mentre per ottenere la passphrase (quer popò di cifre in fondo al file) basta riportare il risultato del seguente comando:
sudo wpa_passphrase nome-rete "parola-d'ordine"

Bene siamo arrivati al momento più godurioso e liberatorio della nostra esperienza minimal-rivoluzionaria

LIBERIAMOCI DEL NETWORK-MANAGER!!!


ATTENZIONE!!! CONFIGURARE IN MODO CORRETTO IL WPA_SUPPLICANT POTREBBE NON ESSERE COSA FACILE E IMMEDIATA, QUINDI NON MI ASSUMO NESSUNA RESPONSABILITÀ NEL CASO NON RIUSCIATE PIÙ A STABILIRE UNA CONNESSIONE ALLA RETE!

Debian
sudo aptitude purge network-manager network-manager-gnome
ArchLinux
sudo pacman -R networkmanager
Ovviamente pensateci da voi alle dovute sostituzioni nel caso usiate wicd.

Orsù! Riconnettiamoci ora in modo nuovo!


Probabilmente sarà necessario aggiungere il gruppo "network" al vostro username:
sudo addgroup network
Per quanto riguarda gli arcieri prima di lanciare i comandi magici c'è ancora da aggiustare una cosetta. Dobbiamo infatti stoppare il vecchio demone networkmanager e avviare il nuovo network
sudo /etc/rc.d/networkmanager stop
sudo /etc/rc.d/network start
E nel caso questo diventi il vostro modo predefinito di connettervi sistemate a dovere il /etc/rc.conf :
DAEMONS=(... !networkmanager @network ...)

Ora ci siamo davvero, se tutto è configurato nella maniera corretta diamo in sequenza i seguenti comandi:
sudo ifconfig wlan0 up
sudo wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf -dd -B
E dopo circa dieci seconducci:

Debian
sudo dhcp wlan0
ArchLinux
sudo dhcpcd wlan0
Ecco fatto!!! Siete connessi. :)

Arrivati a questo punto se la cosa vi convince possiamo procedere a far si che la connessione si effettui automaticamente all'avvio.
Ma prima di ciò volevo dirvi che tutto il processo che abbiamo fatto in precedenza per configurare wpa_supplicant.conf è molto più facile se procediamo in altro modo!!! :)

Tramite GUI è più facile!!!

E quindi, mandandomi a quel paese, mi domanderete: "Che ce l'hai raccontata a fare tutto 'sto popò di roba se c'è un metodo più facile?". Ebbene penso che sapere come configurare il wpa_supplicant sia estremamente educativo, e una volta che uno lo sa alla bisogna potrebbe permettere di togliersi dai guai !
Dunque vediamo. In realtà la seguente procedura l'ho testata solo con ArchLinux, spero quindi di avere dei feedback da parte di temerari debianisti che per questo verranno meritevolmente citati nel seguente articolo!!! ;)
Il fatto è che tramite una comoda GUI (interfaccia grafica) si può editare automaticamente il wpa_supplicant.conf
Installiamola quindi:

Debian
sudo aptitude install wpagui
ArchLinux
sudo pacman -S wpa_supplicant_gui
Editiamo quindi il nostro /etc/wpa_supplicant.conf con queste semplici righe:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=network
update_config=1
Utilizzare la GUI è molto semplice e intuitivo, quindi non mi soffermerò su ulteriori precisazioni, dico solo che per vedere quali reti ci sono a disposizione bisogna prima schiacciare il tastino "scan", e possiamo cosi switchare comodamente fra le varie reti disponibili con qualche click.
Qua alcuni screenshots:

connettersi automaticamente all'avvio

METODO 1
Consta nell'editare il file /etc/network/interfaces come suggerito nei link da me riportati a inizio articolo.
A titolo di esempio ecco qua il mio:
## This file describes the network interfaces available on your system 
## and how to activate them. For more information, see interfaces(5). 

## The loopback network interface 
auto lo 
iface lo inet loopback 

## The primary network interface 
allow-hotplug eth0 
iface eth0 inet dhcp 
        hostname 192.168.1.1 

## Scheda wireless con DHCP 
auto wlan0 
iface wlan0 inet dhcp 
wireless-essid ESSID
wireless-mode manager 
wpa-driver wext 
wpa-conf /etc/wpa_supplicant.conf


  • Vantaggio: non è necessario fare niente di più, è un metodo "pulito"


  • Svantaggio: il sistema si connette in fase di boot e questo si rallenta. (Se oltretutto la connessione è difficoltosa siamo costretti ad aspettare come fessi!!!)


  • METODO 2
    sudo visudo
    Aggiungere le seguenti righe immediatamente sotto a: proprio_username ALL=(ALL) ALL

    Debian
    proprio_username ALL=NOPASSWD: /sbin/wpa_supplicant
    proprio_username ALL=NOPASSWD: /sbin/dhclient 

    ArchLinux
    proprio_username ALL=NOPASSWD: /usr/sbin/wpa_supplicant
    proprio_username ALL=NOPASSWD: /usr/sbin/dhcpcd

    Dopodiche fate in modo che in autoavvio del vostre DE abbiate i seguenti comandi:

    Debian
    sudo wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B &
    sleep 10 && sudo dhclient wlan0 &
    ArchLinux
    sudo wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B &
    sleep 10 && sudo dhcpcd wlan0 &

    • Vantaggio: Il sistema si connetterà mentre carcica il Desktop, di conseguenza il tempo complessivo di avvio diminuisce.
    • Svantaggio: Diciamo che l'abbiamo fatta un po "sporca", vah!


    ALTRI METODI ALTERNATIVI

    Leggendo questa guida, che oltre tutto sarebbe propedeutica al procedimento finora descritto, c'è da farsi una cultura sulle varie possibilità. Io ovviamente mi limito a segnalare quella derivante dalla mia esperienza personale.

    cnetworkmanager

    Per chi non vuol fare a meno di Network-Manager esiste questa applicazione che permette di connettersi tramite comando a terminale, vantaggio non trascurabile nel caso in cui operiamo da TTY senza DE attivo.
    sudo aptitude install cnetworkmanager # per Arch si chiama allo stesso modo
    Essendo dipendente da network-manager non è necessario configurare alcunché, solo dare il comando di questo tipo nella shell:

    cnetworkmanager -C ESSID "passphrase" 
    Vedere il manuale per ulteriori delucidazioni
    man cnetworkmanager
    Ovviamente va bene per quando ci si deve connettere a una rete nota. Si può pure inserire in autoavvio, in questo caso vedrete che il tempo di attesa per avere a disposizione la rete sarà più veloce (rispetto all'applet ovviamente).

    wicd-curses

    Il relativo comando per wicd dovrebbe essere:
    wicd-curses
    E non dovrebbe essere necessario installare ulteriori pacchetti. In realtà non ho grande esperienza di wicd, quindi aspetto feedback in merito.

    Consigli pratici

    Dato che in caso di disconnessione accidentale il sistema non si riconnetterà automaticamente, vi consiglio di usare degli alias:
    $ nano .bash_aliases
    E inserite due voci per disconnettere e connettere a seconda del metodo che avete scelto. Come esempio riporto il caso di cnetworkmanager:
    alias connetti='cnetworkmanager -C ESSID --wpa-psk-hex=passphrase
    alias disconnetti='killall cnetworkmanager'

    Ricordatevi che per riconnettersi bisogna killare il processo precedente, altrimenti vi da errore. Nell'esempio dell'alias ho fatto riferimento al cnetworkmanager, ma a seconda del metodo usato potrebbe essere anche: dhclient o dhcpcd, ecc...

    Ringraziamenti:

    Un ringraziamento speciale a Doc che a suo tempo mi dette l'input e i consigli per riuscire "nell'impresa".
    A tutto il team di linux4netbook che mi ha sostenuto e assistito nella stesura del seguente articolo, la mia prima volta in html!
    Grazissime cciovani!!! :)

    Note: L'immagine in testa è la foto di una mitica radio a galena! ^^

    15 commenti:

    1. Ciao, bell'articolo. Solo un appunto: è meglio se levi il redirect alla generazione della passphrase di wpa_supplicant. Se qualcuno avesse già inserito delle configurazioni personali all'interno di wpa_supplicant.conf verrebbero sovrascritte. A mio parere sarebbe meglio dire semplicemente di eseguire il comando, ed utilizzare l'output coerentemente all'interno del .conf.
      Ciao

      RispondiElimina
    2. @Gianpiero
      Ciao!

      Effettivamente quando scrivevo pensavo a una situazione "vergine".
      Correggerò come da te suggerito.

      Grazie mille!!!

      RispondiElimina
    3. ciao a tutti!
      prima di tutto ottimo forum complimenti! Detto questo, è da poco che ho iniziato a muovere i primi passi con linux e distro varie. attualmente sul mio Acer D250 ho OpenSUSE 11.4 (installato seguendo la vostra guida XD) con gnome 2.3. Ho provato a seguire le istruzioni di questo topic optando per la soluzione GUI. Dopo aver modificato il file nel modo in cui avete descritto (con il comando mc edit giusto?) non riesco a far partire l'interfaccia grafica.
      Che comandi devo dare da terminale? scusate ma mi serve perchè in università utilizzano una connessione con wpa-enterprise e, non so perché, il network manager non me la fa selezionare al momento della creazione della nuova rete.
      scusate la noobità XD

      RispondiElimina
    4. @sbronzolo_89
      Ciao sbronzolo!
      Benvenuto sul blog di Linux sui netbook!!! ;)

      TI ricordo che questa guida è stata scritta per Debian e ArchLinux. Questo non significa che non possa essere valida pure per OpenSuse, ma io non ho esperienze diretta di quel sistema operativo.

      Comunque sia avrai sicuramente letto che la procedura non è ne facile e ne immediata, questo significa che non è consigliata per chi è alle prime armi e da quel che mi dici mi sembra chiaro che invece tu lo sia. Quindi il mio consiglio è quello di lavorare a risolvere il problema con NetworkManager (NM) che molto probabilmente sarà roba alla portata di tutti.

      Se invece sei sicuro di seguitare senza NM allora bisogna che tu sia più preciso.
      Dimmi precisamente cosa hai fatto, quali file hai editato, postami il contenuto di tali file e quello che ti dice il comaNdo "sudo iwlist scan". Ma usa pastbin che altrimenti è un papiro di roba ;)
      Se non sai cos'è pastbin sentiamoci in privato tramite e-mail netbookteam [at] gmail [dot] com.

      Per quanto riguarda il comando per far partire wpa_gui lo devi dare con i privilegi di amministratore, cioè per Debian "sudo wpa_gui", per OpenSuse non ne ho idea!

      Ho trovato questa wiki per OpenSuse http://en.opensuse.org/SDB:WiFi ci son tutte le informazioni che ti servono!!! ;) Fammi sapere come va a finire, ok?

      RispondiElimina
    5. Herr vecchio mio, la connessione via wpa_supplicant mi sta piacendo sempre più e mi ha salvato le chiappine in più di un'occasione oramai.
      Purtroppo però wpa_gui mi pare un'applicazione un po' taroccata...a te funziona bene?

      Tuttavia, pensavo avrei guadagnato molto di più, in termini di RAM, nel togliere NM.

      RispondiElimina
    6. @Milozzy
      Ciao giovane Milo... :/

      Bene, vedo che hai colto lo spirito salva chiappe del wpa_supplicant! :)

      Per quanto riguarda la leggerezza ora non ricordo in termini di ram, sicuramente però avrai apprezzato la rapidità della connessione all'avvio.

      Cosa intendi per taroccato?
      A me wpa-gui funziona bene si! Però ricordati che quell'interfaccia va a scrivere il wpa_supplicant e devi avergli dato l'abilitazione a farlo proprio editando lo stesso wpa_supplicant.
      Rileggendo la guida forse non è troppo chiaro questo concetto, ma se ci fai caso dico che per usare l'interfaccia wpa-gui devi editare il file con queste istruzioni:
      ctrl_interface=/var/run/wpa_supplicant
      ctrl_interface_group=network
      update_config=1
      Comunque per essere una GUI è piuttosto ostica.

      RispondiElimina
    7. @Herr Affe
      Guarda adesso non ricordo di preciso, ma ad esempio, una delle cose che mi faceva storcere il naso era il fatto che la disconnessione e riconnessione da una rete non andava a buon fine, nel senso che non si riconnette!

      RispondiElimina
    8. @Milozzy
      Ho riprovato pure io, a me la riconnessione mi va a buon fine.
      Però effettivamente la nuova connessione presenta un po' di instabilità.

      Io ho risolto uccidendo e riavviando il processo wpa_supplicant prima di riconnettermi. Vedi se anche tu risolvi così e fammi sapere.

      Non ci avevo mai fatto caso a questa instabilità, effettivamente è un po' noiosa, grazie della segnalazione!

      Ciao!

      RispondiElimina
    9. @Herr Affe

      Herruccio, alla fine mi sto trovando abbastanza bene anche con wpagui, lo lancio raramente poichè mi connetto quasi sempre in automatico alle solite due reti, ma quelle volte che ho avuto necessità di "scovare" nuove reti non ho avuto problemi.

      Tuttavia, rimane sempre la necessità di dare a manina il dhclient xxx per completare la connessione alla rete configurata via wpagui.

      Confermi? Qualcuno conosce qualche trucchetto per evitare?

      GraziE!

      RispondiElimina
    10. @Milozzy

      Non mi sembra, in questo momento non posso provare, ma a memoria wpagui è sufficiente.
      Comunque poco male dai! Tiri giù il terminale di stjerm con [F12] e poi:
      sudo dhc[TAB] w[TAB] [INVIO]. Fatta! :P

      RispondiElimina
    11. @Herr Affe

      Certo, certo...non è sicuramente un problema insormontabile, ma visto che in guida non lo citi volevo capire se era problema solo mio. Ti confermo che da me è necessario il dhclient.

      In wpa_supplicant.conf, tuttavia, io ho messo
      ctrl_interface_group=0 e non =network , perchè altrimenti non mi partiva wpa_supplicant.

      RispondiElimina
    12. @Milozzy
      Ueh Milo!
      Ho controllato il mio wpa_supplicant e ho scoperto che è differente da quello che ho messo in guida! Non saprei dire perchè, forse a causa di un aggiornamento?
      In ogni caso adesso le prime tre righe sono così:

      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1



      provalo e dimmi se così non è più necessario dare dhclient xxx, perchè a me wpagui fa tutto da solo!

      RispondiElimina
    13. Per chiarezza riscrivo le DUE righe:
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1

      RispondiElimina
    14. Grazie mille!
      un bel sollievo wpa_supplicant :D

      RispondiElimina
    15. Bene, sono felice che ti sia stato utile!

      RispondiElimina

    EDIT 30/12/2017: abbiamo deciso di chiudere i commenti ma lasciare le guide intatte.

    Nota. Solo i membri di questo blog possono postare un commento.