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.