Guida di base per ottenere una rete wireless funzionante - WiFi

A causa della complessità della legge, aptosid fornirà solo software dfsg-free, vedere questo collegamento per ulteriori informazioni sulle sorgenti non-free aggiuntive per i firmware.

Per far funzionare una wireless lan WiFi, è necessaria una connessione via cavo per alcuni minuti per scaricare il firmware appropriato.

Se una connessione via cavo non è possibile si dovrà mettere il firmware in una periferica rimovibile (ad es. una chiavetta USB) ed installarlo come root da lì utilizzando:

#dpkg -i <firmware.deb>

Per trovare il firmware corretto senza sapere il produttore o la marca del chip wireless si può usare il comando:

#fw-detect

questo darà le seguenti informazioni:

#apt-get update
#apt-get install <name of firmware>
#modprobe -r <modulename>
#modprobe <modulename>

Usare la linea apt-get install data dal comando fw-detect. Dopo aver fatto questo è necessario scrivere alcuni comandi nella console prima di configurare la periferica.

Adesso si deve caricare il modulo per poter configurare la periferica.

Come root nella console eseguire:

modprobe -r <modulename>

modprobe <modulename>

Al posto di <nomemodulo> utilizzare l'informazione data in precedenza da fw-detect. Qui può essere usata una funzione utile di Konsole: bash completion.
Se si scrivono solo le prime lettere di <nomemodulo> e quindi si preme il tasto TAB, il nome del modulo verrà completato (ad es. modprobe ipw e tasto TAB). Questo evita anche errori di battitura.

Entrambi i comandi modprobe non danno nessun responso se non ci sono errori, quindi se ritorna il prompt normale il modulo è stato caricato correttamente.

Si può controllare con:

#lsmod | grep <module>

Adesso avviare Ceni dal Menu K - Internet oppure avviarlo da console come root con Attivare una connessione di rete con "Ceni". La periferica wireless WiFi adesso dovrebbe essere visualizzata e pronta per essere configurata.

Per configurare con Wlan WiFi GUI vedere WiFi - roaming WPA-GUI

Modalità operative in wpasupplicant per Debian

A causa della complessità della legge, aptosid fornirà solo software dfsg-libero, leggere il link seguente per informazioni addizionali sulle fonti di software non-libero per il firmware

Il pacchetto Debian di wpa supplicant fornisce due (2) convenienti modalità operative che sono strettamente integrate nel nucleo della struttura di rete; ifupdown.

Argomenti trattati

2. Modo #1: Managed Mode

* Esempi
* Tabella delle opzioni comuni
* Note importanti riguardo al Managed Mode
* Come funziona

3. Modo #2: Roaming Mode

* wpa_supplicant.conf
* /etc/network/interfaces
* Controllare il demone Roaming con wpa_action
* Regolare con precisione le impostazioni di Roaming
* Il file di log
* Usare gli script di mappatura esterna (ad esempio: guessnet)
* /etc/network/interfaces con mappatura esterna

4. Soluzioni di problemi

* ssid nascosti

5. Considerazioni sulla sicurezza

* Configurazione dei permessi dei file

2. Modo #1: Managed Mode

Questa modalità permette di stabilire una connessione via wpa_supplicant ad una rete conosciuta. Lavora in modo similare al pacchetto wireless-tools. Ogni elemento richiesto per stabilire la connessione con wpa_supplicant è stabilito con "wpa-" seguito dal valore che sarà usato per quell'elemento.

Esempi di un file wpa.conf in Modo #1 - Esempio 1.
Esempio di un file wpa.conf in Modo #1 - Esempio 1.
NOTA: Il valore "wpa-psk" è valido solo se:

   1. È una stringa di puro testo (ASCII) lunga tra 8 e 63 caratteri
   2. È una stringa esadecimale di 64 caratteri

# Si connette all'accesspoint con ssid "NETBEER" con crittografia
# WPA-PSK/WPA2-PSK. Assume che il driver userà il driver backend "wext"
# di wpa_supplicant in quanto non è specificata nessuna opzione wpa-driver.
# La password o passphrase è data come una stringa di puro testo ASCII. Viene
# utilizzato DHCP per ottenere un indirizzo di rete.
#
iface wlan0 inet dhcp

        wpa-ssid NETBEER
        # passphrase in puro testo
        wpa-psk fraseinpurotesto

# Si connette ad un access point con ssid "homezone" con crittografia
# WPA-PSK/WPA2-PSK, usando il driver backend "wext" di wpa_supplicant.
# Il psk è dato come una stringa esadecimale codificata.
# Viene utilizzato DHCP per ottenere un indirizzo di rete.
#
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid homezone
# il psk esadecimale è codificato da una passphrase in puro testo
wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

# Si connette ad un access point con ssid "HotSpot1" e bssid of "00:1a:2b:3c:4d:5e"
# con crittografia WPA-PSK/WPA2-PSK, usando il backend driver "madwifi"
# di wpa_supplicant. La password o passphrase è data come una stringa di puro testo.
# Viene utilizzato un indirizzo di rete statico.
#
iface ath0 inet static

        wpa-driver madwifi
        wpa-ssid HotSpot1
        wpa-bssid 00:1a:2b:3c:4d:5e
        # plaintext passphrase
        wpa-psk madhotspot
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA RSN
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

# Per eth1 è usato un file wpa_supplicant.conf fornito dall'utente. Tutte le informazioni sulla rete
# sono contenute nel file wpa_supplicant.conf fornito dall'utente. Se non è specificato
# nessun tipo di wpa-driver, verrà usato wext. Viene utilizzato DHCP per ottenere un indirizzo di rete.
#
iface eth1 inet dhcp

wpa-conf /path/to/wpa_supplicant.conf

Tabella delle opzioni comuni

Un breve riassunto delle opzioni comuni di "wpa-" che possono essere usate nel file "/etc/network/interfaces" per un dispositivo wireless. Leggere la sezione "Note importanti riguardo al Managed Mode" per informazioni sui valori "wpa-" validi e non validi.

NOTA: TUTTI i valori sono sensibili al maiuscolo/minuscolo

Elemento	Valore d'esempio	Descrizione
========        ================        ===========
wpa-ssid        nomeinpurotesto         imposta l'ssid della rete
wpa-bssid       00:1a:2b:3c:4d:5e       è il bssid dell'access point
wpa-psk         0123456789......        la chiave wpa (preshared). Usare
                                        wpa_passphrase(8) per generare psk dall'accoppiata
                                        passphrase e ssid
wpa-key-mgmt    NONE, WPA-PSK, WPA-EAP, lista delle chiavi di autenticazione accettate
                IEEE8021X               protocolli di gestione
wpa-group       CCMP, TKIP, WEP104,     lista dei gruppi cifrati accettati per WPA
                WEP40
wpa-pairwise    CCMP, TKIP, NONE        lista dei pairwise cifrati accettati per WPA
wpa-auth-alg    OPEN, SHARED, LEAP      lista degli algoritmi di autenticazione
                                        IEEE 802.11 permessi
wpa-proto       WPA, RSN                lista dei protocolli accettati
wpa-identity    mionomeinpurotesto      username fornito dall'amministratore
                                        (autenticazione EAP)
wpa-password    miapasswordinpurotesto  password (autenticazione EAP)
wpa-scan-ssid   0 o 1                   commuta la scansione di una ssid con specifici
                                        frame Probe Request
wpa-ap-scan     0 o 1 o 2               regola la logica di scansione di
                                        wpa_supplicant

Dovrebbe essere implementata la completa funzionalità di wpa_cli(8), qualsiasi mancanza è considerata un errore e dovrebbe essere riportata come tale. Eventuali patch di correzione sono sempre benvenute.

Note importanti riguardo al Managed Mode

Quasi tutte le opzioni "wpa-" richiedono che si sia specificato almeno un ssid. Solo poche opzioni hanno un effetto globale. Queste sono: "wpa-ap-scan" e "wpa-preauthenticate".

Ogni opzione "wpa-" data per un dispositivo nel file interfaces(5) è sufficiente ad innescare un'azione del demone di wpa_supplicant.

Lo script ifupdown di wpa supplicant fa delle supposizioni riguardo al "tipo" di input che è valido per ogni opzione. Ad esempio, assume che alcuni siano in testo puro e avvolge le virgolette attorno all'input prima di passarlo al wpa_cli, che quindi aggiunge l'input al blocco di rete in fase di formazione con il socket wpa_supplicant ctrl_interface.

L'avvio manuale di ifup con l'opzione "--verbose" mostrerà tutti i comandi usati per formare il blocco di rete via wpa_cli. Se il valore che si è usato per qualsiasi opzione "wpa-*" nel file "/etc/network/interfaces" appare virgolettato, significa che è stato sottinteso come un input di tipo "puro testo" o "ASCII".

Alcuni input sono assunti come se fossero stringhe esadecimali (ad esempio la chiave wpa-wep*). Il valore "tipo" della opzione "wpa-psk" comunque, è determinato tramite un semplice controllo su più di un carattere non esadecimale.

Come funziona

Come già menzionato, ogni specifico elemento di wpa_supplicant ha come prefisso "wpa-". Ogni elemento è correlato ad una proprietà di wpa_supplicant descritta nelle pagine manuale di wpa_supplicant.conf(5), wpa_supplicant(8) e wpa_cli(8).

Il supplicant viene avviato senza alcuna pre-configurazione, e wpa_cli crea una configurazione di rete a partire dall'input fornito dalle righe di "wpa-*". Inizialmente, wpa_supplicant/wpa_cli non imposta direttamente le proprietà del dispositivo (come impostare un essid con iwconfig, per esempio), piuttosto informa il dispositivo quale access point è disponibile ad associarsi. Una volta che il dispositivo ha eseguito la scansione dell'area e trovato che l'access point è disponibile all'uso, verranno impostate quelle proprietà.

Lo script che fa tutto il lavoro è localizzato in:

/etc/wpa_supplicant/ifupdown.sh
/etc/wpa_supplicant/functions.sh

ifupdown.sh viene eseguito da run-parts, che a sua volta viene invocato da ifupdown durante le fasi "pre-up", "pre-down" e "post-down".

Nella fase "pre-up", viene avviato un demone wpa_supplicant seguito da una serie di comandi wpa_cli che impostano una configurazione di rete in base alle opzioni "wpa-" che sono state usate in /etc/network/interfaces per il dispositivo fisico.

Se è usato wpa-roam, viene avviato un demone wpa_cli nella fase "post-up".

Nella fase "pre-down", il demone wpa_cli se esiste viene sottoposto a kill.

Nella fase "post-down" il demone wpa_supplicant viene sottoposto a kill.

3. Modo #2: Roaming Mode

In questo pacchetto viene fornito un semplice meccanismo di roaming. È nella forma di uno script wpa_cli action, /sbin/wpa_action, e assume il controllo di ifupdown quando attivato. La manpage di wpa_action(8) descrive in profondità i suoi dettagli tecnici.

Per attivare una interfaccia roaming, adattare la seguente sezione interfaces(5) di esempio:

iface eth1 inet manual
	wpa-driver wext
        wpa-roam /percorso/verso/wpa_supplicant.conf

Nell'esempio sopra vengono richiamati due demoni; wpa_supplicant e wpa_cli. È necessario fornire un file wpa_supplicant.conf. Un buon punto di partenza è fornito da un file di configurazione di esempio:

 # copiare il modello in /etc/wpa_supplicant/
        cp /usr/share/doc/wpasupplicant/examples/wpa-roam.conf \
                /etc/wpa_supplicant/wpa_supplicant.conf
        # impostare i permessi perché solo root possa leggere e scrivere il file
        chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

NOTE: è di importanza critica che il wpa_supplicant.conf usato definisca la locazione di
      "ctrl_interface" in modo che un socket per la comunicazione venga creato per attaccare 
      wpa_cli (demone wpa-roam). L'esempio di configurazione menzionato,
      /usr/share/doc/wpasupplicant/examples/wpa-roam.conf, è stato impostato
      come ragionevole default.

È necessario modificare questo file di configurazione ed aggiungere i blocchi di rete per tutte le reti note. Se non si sa cosa significa, leggere adesso la manpage di wpa_supplicant.conf(5).

Per ogni rete si deve specificare una opzione speciale chiamata "id_str". Dovrebbe essere impostata come stringa di testo puro. Questa stringa forma le basi per i profili di rete; è correlata ad una interfaccia logica definita nel file interfaces(5). Quando questa stringa non viene data per una rete, wpa_action presume che userà la interfaccia logica di "default". Questa può essere scelta mediante l'opzione "wpa-default-iface".

Che significa tutto questo? Illustriamolo con un piccolo esempio preso dalla manapage di wpa_action(8).

Esempio di wpa_supplicant.conf
esempio di wpa_supplicant.conf:
network={
        ssid="foo"
        key_mgmt=NONE
        # questa id_str notificherà /sbin/wpa_action a "ifup uni"
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # questa id_str notificherà /sbin/wpa_action a "ifup home_static"
        id_str="home_static"
}

network={
        ssid=""
        key_mgmt=NONE
        # se non viene dato nessun parametro id_str, /sbin/wpa_action farà "ifup default"
}
Esempio di /etc/network/interfaces
esempio di /etc/network/interfaces:
# l'interfaccia roaming DEVE usare il metodo inet manuale
# "allow-hotplug" o "auto" che assicura la partenza automatica del demone
allow-hotplug eth1
iface eth1 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


# se non è specificato un id_str, verrà utilizzato "default"
iface default inet dhcp


# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0

        broadcast 192.168.0.255
        gateway 192.168.0.1

Una interfaccia logica viene acquisita con ifup, e spenta con ifdown, wpa_supplicant associa e de-associa la rete ad esso tramite l'opzione "id_str" usata nel file di configurazione di wpa_supplicant.conf.

Un log delle attività di /sbin/wpa_action viene creato in /var/log/wpa_action.log, quindi inviare questo log quando si fa un rapporto su eventuali problemi.

Interagire con wpa_supplicant con wpa_cli e wpa_gui

I membri del gruppo "netdev" possono interagire con il processo di wpa_supplicant se l'esempio di file di configurazione roaming viene usato così com'è (o da qualsiasi gruppo di utenti specificato dai parametri GROUP= crtl_interface).

# È stata fornita l'opzione usata nel file di esempio
	# /usr/share/doc/wpasupplicant/examples/wpa-roam.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

per interagire con supplicant, wpa_cli (command line) e wpa_gui (QT).
Con queste ci si può connettere, disconnettere, aggiungere/eliminare nuovi
blocchi di rete, fornire le informazioni di sicurezza interattive richieste e così via.

Controllare il Roaming Daemon con wpa_action

Una volta che il demone roaming è avviato, esso assume il controllo di ifupdown; wpa_cli chiama ifup quando wpa_supplicant è associato con successo ad una access point e chiama ifdown quando la connessione viene persa o terminata. Mentre il demone roaming è attivo, ifupdown non dovrebbe venire controllato direttamente mediante immissione di comandi manuali, piuttosto viene fornito /sbin/wpa_action per fermare e ricaricare il demone roaming. Per esempio, per fermare il demone roaming sul dispositivo "eth1":

wpa_action eth1 stop

Si può anche aggiornare il demone roaming con nuovi dettagli delle reti senza il bisogno di fermarlo. Modificare il file wpa_supplicant.conf che viene usato dal demone con i nuovi dettagli delle reti, aggiungere le impostazioni opzionali della rete in /etc/network/interfaces che sono specifici della nuova rete (collegati mediante l'indicazione "id_str") e poi ricaricare il demone come segue:

wpa_action eth1 reload

Per i dettagli tecnici completi di quello che wpa_action può fare, leggere la manpage di wpa_action(8).

Regolare con precisione le impostazioni di Roaming

Ci si può trovare in situazioni dove diversi e conosciuti access point sono in stretta vicinanza. Si può scegliere manualmente il preferito con wpa_cli o wpa_gui, o si può dare ad ogni rete la propria priorità. Questa possibilità è data dall'opzione "priority" di wpa_supplicant.conf.

Il file di log

Tutte le attività del demone roaming sono scritte in /var/log/wpa_action.log. Vengono scritte le seguenti informazioni:

* ora e data
* nome dell'interfaccia e dell'evento in corso
* valori delle variabili di ambiente (WPA_ID, WPA_ID_STR, WPA_CTRL_DIR)
* ifupdown eseguito
* stato di wpa_cli (basato su WPA-PSK, la rete può visualizzare informazioni diverse)
* bssid
* ssid
* id
* id_str
* pairwise_cipher
* group_cipher
* key_mgmt
* wpa_state
* ip_address

Usare script di mappatura esterni (ad esempio: guessnet)

In aggiunta alla mappatura interna delle interfacce logiche via "id_str", wpa_action può chiamare degli script esterni di mappatura. Uno script di mappatura dovrebbe mostrare il nome dell'interfaccia logica che dovrebbe essere avviata. Qualsiasi script di mappatura che lavori dal meccanismo di mappatura di ifupdown (vedi man interfaces) dovrebbe lavorare anche quando viene chiamato da wpa_action.

Per chiamare uno script di mappatura aggiungere una linea "wpa-mapping-script nome-dello-script" alla sezione interfaces del dispositivo fisico di roaming (potrebbe essere necessario specificare il percorso assoluto che porta allo script di mappatura).

Il contenuto delle stringhe che iniziano con wpa-map viene passato a stdin dello script di mappatura. Poiché ifupdown permette solo una linea wpa-map si può aggiungere qualsiasi numero al wpa-map per linee addizionali. Per esempio:

iface wlan0 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-mapping-script guessnet-ifupdown
        wpa-map0 home
        wpa-map1 work
        wpa-map2 school
        # ...linee wpa-mapX aggiuntive se necessarie

Per default lo script di mappatura sarà usato solo quando non è disponibile un "id_str" per la rete corrente. Se si vuole disabilitare completamente la funzione "id_str" e usare solo uno script di mappatura esterno, usare l'opzione "wpa-mapping-script-priority 1" per sovrascrivere il comportamento di default.

Se lo script di mappatura emette una stringa vuota, wpa_action tornerà ad usare l'interfaccia di "default", a meno che sia definita una alternativa dall'opzione "wpa-roam-default-iface".

Sotto si trova un esempio avanzato che usa guessnet-ifupdown come script di mappatura esterno.

/etc/network/interfaces con esempio di mappatura esterna
/etc/network/interfaces con esempio di mappatura esterna:

allow-hotplug wlan0
iface wlan0 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface default-wparoam
        wpa-mapping-script guessnet-ifupdown
        wpa-map default: default-guessnet
        wpa-map0 home_static
        wpa-map1 work_static


# school può essere scelta attraverso un confronto con "id_str"
iface school inet dhcp

        # resolvconf
        dns-nameservers 11.22.33.44 55.66.77.88

iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        test peer address 192.168.0.1 mac 00:01:02:03:04:05


iface work_static inet static

        address 192.168.3.200
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255
        gateway 192.168.3.1
        test peer address 192.168.3.1 mac 00:01:02:03:04:05


iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

In questo esempio wpa_action userà lo script guessnet per la selezione di una interfaccia logica disponibile solo quando nessuna opzione "id_str" viene fornita per la rete corrente nel file wpa_supplicant.conf fornito.

Le linee "wpa-map" danno a guessnet le interfacce logiche che devono essere provate, oltre all'interfaccia di default che deve essere usata se tutte le prove falliscono. Le linee "test" di ogni interfaccia logica sono usate da guessnet per determinare se sono realmente connesse alla rete. Per esempio, guessnet sceglierà l'interfaccia logica "home_static" se c'è un dispositivo con un indirizzo IP di 192.168.0.1 e MAC di 00:01:02:03:04:05 sulla rete corrente. Se tutte le prove falliscono, verrà configurata l'interfaccia "default-guessnet".

Per maggiori informazioni leggere la guessnet(8) manpage.

4. Soluzione di problemi

Per risolvere problemi di connessione, associazione e autenticazione, suggeriamo di avviare "wpa_cli -i <interfaccia>" in una console differente, prima di avviare l'interfaccia. Usare il comando "level 0" per primo, per ottenere tutti i messaggi di debug. Poi usare "ifup --verbose <interfaccia>" per ottenere messaggi completi di debug da parte dello script che avvia wpasupplicant.

ssid nascosti

Come riferimento vedere #358137. Per riuscire ad associarsi ad una rete con degli ssid nascosti, cercare di impostare l'opzione "ap_scan=1" nella sezione global, e "scan_ssid=1" nella sezione del blocco di rete del file wpa_supplicant.conf. Se si sta usando il managed mode, si può farlo in queste sezioni:

iface eth1 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
# opzioni aggiuntive per la configurazione

In accordo a #368770, può servire un tempo lungo per associarsi a reti protette con WEP. In alcuni casi, impostare il parametro "ap_scan=2" nel config file, (o usare una sezione "wpa-ap-scan 2", che è equivalente) può velocizzare molto il processo di associazione.

Notare che impostare "ap_scan" al valore 2 richiede anche che tutte le reti abbiano norme di sicurezza precisamente definite per le variabili key_mgmt, pairwise, group e proto network.

5. Considerazioni sulla sicurezza

Configurazione dei permessi dei file

È importante tenere private le informazioni PSK e le altre di tipo sensibile riguardanti le impostazioni della rete, quindi assicurarsi che quei file importanti che contengono tali dati siano leggibili solo dal proprietario. Per esempio:

chmod 0600 /etc/network/interfaces

# sostituisce il percorso del file wpa_supplicant.conf

chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

Per default il file "/etc/network/interfaces" è leggibile da tutti e quindi non è idoneo a contenere chiavi segrete e password.

Page last revised 14/08/2010 0100 UTC