Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
(rm temporary i18n template)
Line 1: Line 1:
[[en:WPA supplicant]]
 
[[es:WPA Supplicant]]
 
[[ru:WPA Supplicant]]
 
[[zh-CN:WPA Supplicant]]
 
[[Category:Wireless Networking (Italiano)]]
 
 
Una rete protetta da una chiave WEP (sia statica che dinamica), può essere facilmente compromessa da un utente malevolo. WPA risolve il problema della chiave statica, cambiandola dopo un certo numero di pacchetti trasmessi/ricevuti, oppure dopo un certo lasso di tempo: questa operazione è svolta da un demone che è strettamente legato all'hardware wireless di cui si dispone.
 
 
Drivers di scarsa qualità (ad esempio quelli usati attraverso ndiswrapper), possono dar luogo a fastidiosi problemi, se usati assieme a [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant]. E' quindi consigliabile, se possibile, usare hardware con un supporto adeguato e munito di driver di qualità.
 
 
==Considerazioni==
 
 
Questo articolo assume che si abbia familiarità con il proprio hardware, e si sia in grado di districarsi tra i files di configurazione, oltre a saper configurare il proprio sistema. E' di fondamentale importanza aver '''letto e capito''' l'articolo [[Wireless Setup (Italiano)|Wireless Setup]], poichè fungerà da base per tutto ciò che verrà spiegato qui.
 
 
Questo documento non costituisce un prerequisito se il proprio hardware funziona out-of-the-box e viene gestito attraverso un demone come [[NetworkManager (Italiano)|NetworkManager]] o similari. Se si preferisce connettersi alla rete usando un tool grafico, questo articolo non fa per voi.
 
 
==Installazione==
 
 
Si installi il demone:
 
 
# pacman -S wpa_supplicant
 
 
Il pacchetto è stato compilato con il supporto ad una larga gamma di hardware wireless. A titolo informativo, questa è la lista completa, ottenibile eseguendo {{ic|wpa_supplicant}}:
 
 
{{hc|
 
wpa_supplicant|
 
<nowiki>
 
Driver list:
 
 
*HostAP
 
*Prism54
 
*NDISWrapper
 
*AMTEL
 
*IPW (both 2100 and 2200 drivers)
 
*WEXT (Generic Linux wireless extensions)
 
*Wired ethernet
 
</nowiki>
 
}}
 
 
La maggior parte dell'hardware wireless è già supportato da wpa_supplicant. Anche se il produttore del vostro Chipset non è nell'elenco (il che, a dire il vero, è molto probabile), è possibile utilizzare la Generic Wireless Extension (WEXT) per connettersi a reti utilizzanti il sistema di cifratura WPA. Circa il 75% dell'hardware è supportato da WEXT; un 20% può funzionare ricompilando wpa_supplicant e/o drivers, mentre  il restante 5% è definitivamente incompatibile. Il PKGBUILD per wpa_supplicant è disponibile in {{ic|/var/abs/core/support/wpa_supplicant}}, se il tree di [[Arch Build System (Italiano)|ABS]] è installato.
 
 
===Opzionale: Installare l'interfaccia grafica===
 
 
Per chi preferisce disporre di un'interfaccia grafica, è possibile utilizzare una GUI creata dagli stessi sviluppatori di wpa_supplicant, e disponibile nel repository {{ic|[extra]}}:
 
 
# pacman -S wpa_supplicant_gui
 
 
 
==Configurazione e connessione==
 
==Configurazione e connessione==
  
Il file {{ic|/etc/wpa_supplicant.conf}} contiene tutte le impostazioni per {{ic|wpa_supplicant}}. Il suo contenuto è relativamente semplice, benchè il file fornito di default sia orribilmente astruso. Per semplificare il tutto, si effettui il login come root e si rinomini il file {{ic|/etc/wpa_supplicant.conf}}, poichè non è richiesto al momento.
+
WPA Supplicant è pacchettizzato con un file di configurazione d'esempio: {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, il quale è ben commentato e fornisce numerose informazioni sulle meccaniche di rete. Tutte le variabili usate in questo articolo sono descritte in questo file, che contiene inoltre molte configurazioni d'esempio già preimpostate, pertanto ne è fortemente consigliata la lettura, assieme alle pagine di manuale {{ic|man wpa_supplicant}} e {{ic|man wpa_supplicant.conf}}.
  
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
+
Il file di configurazione di WPA Supplicant contiene tutte le impostazioni relative a {{ic|wpa_supplicant}}. È possibile crearne quanti se ne vuole e posizionarli dove più vi aggrada, dal momento che è necessario specificare il file di configurazione da utilizzare ad ogni invocazione di {{ic|wpa_supplicant}}.
  
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
Il contenuto del file è molto semplice:
  
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
* La prima parte riguarda la configurazione generale. È una serie di linee contenenti coppie ''chiave-valore''.
 +
* La seconda parte è composta dai ''network blocks'', uno per ogni profilo che si desidera impostare.
  
Di seguito un semplice esempio:
+
Per semplificare, si lascerà invariato il file di configurazione d'esempio e si partirà da zero creando il file {{ic|/etc/wpa_supplicant.conf}}.
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
Ci sono molti modi per configurare {{ic|wpa_supplicant}}, ed è possibile scegliere tra quelli sotto elencati.
update_config=1
+
  
{{Nota|Per l'uso con netcfg-2.6.1-1 in {{ic|[testing]}} (dal 25-06-2011), ctrl_interface dovrebbe avere valore {{ic|/run/wpa_supplicant}} (si noti l'assenza di {{ic|/var/...}}). Tuttavia, questo causerà il mancato funzionamento di {{ic|wpa_cli}} (si utilizzi l'opzione {{ic|-p}} per forzare il valore di default). Se l'impostazione non viene cambiata, si riscontreranno errori simili a: "Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory".}}
+
===Metodo manuale===
  
La configurazione presentata sopra, permetterà agli utenti appartenenti al gruppo {{ic|network}} di controllare {{ic|wpa_supplicant}} usando i frontends wpa_gui e wpa_cli. L'opzione {{ic|1=update-config=1}} consentirà a questi due programmi di modificare automaticamente il file {{ic|/etc/wpa_supplicant.conf}}, al fine di aggiungere nuove reti o effettuare modifiche a quelle esistenti.
+
====File di configurazione====
  
Si avvii quindi wpa_supplicant:
+
Innanzitutto è necessario essere in possesso di tutti i parametri relativi alla connessione al proprio Access Point, gran parte dei quali ottenibili con il tool {{ic|iwlist}}:
  
  # wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant.conf -B
+
  # iwlist wlan0 scan
  
L'opzione {{ic|-D}} specifica il driver wireless in uso (che è quasi sempre {{ic|wext}}), {{ic|-i}} specifica l'interfaccia (si sostituisca {{ic|wlan0}} con il nome della propria interfaccia) e {{ic|-c}} indica il file di configurazione da utilizzare (solitamente {{ic|/etc/wpa_supplicant.conf}}). Infine, {{ic|-B}} forza a wpa_supplicant ad avviarsi come demone. Sarà necessario avviare wpa_supplicant come root (o con i relativi permessi usando [[sudo (Italiano)|sudo]]), benchè ogni utente appartenente al gruppo {{ic|network}} possa usare wpa_gui o wpa_cli.
+
Ulteriori dettagli sono disponibili [https://wiki.archlinux.org/index.php/Wireless_Setup_%28Italiano%29#Ricerca_degli_Access_Points qui].
  
wpa_gui e wpa_cli dovrebbero ora funzionare.
+
Ora dovreste conoscere i seguenti parametri necessari a {{ic|wpa_supplicant}} per funzionare:
  
Per ulteriori informazioni sulla modifica manuale del file di configurazione, si continui a leggere: le seguenti informazioni sono solitamente utili anche se non si stanno definendo le reti in modo manuale in {{ic|/etc/wpa_supplicant.conf}}.
+
* SSID
 +
* proto (opzionale su reti non protette)
 +
* key_mgmt
 +
* pairwise
 +
* group
  
===Metodo classico: {{ic|/etc/wpa_supplicant.conf}}===
+
Inoltre, si potrebbe aver bisogno dei parametri di autenticazione (EAP, PEAP, ecc.) se si è su reti particolari, come quelle universitarie, ad esempio.
  
Il SSID e la password per la chiave WPA devono essere codificati in una stringa esadecimale. Ottenere questo risultato è abbastanza semplice, usando l'utility {{ic|wpa_passphrase}}, che è fornita assieme a {{ic|wpa_supplicant}}. Si usi la seguente sintassi:
+
=====Primi ritocchi=====
  
* Un esercizio d'esempio:
+
È ora possibile procedere con la creazione di un network block nel file di configurazione:
  
# wpa_passphrase mywireless_ssid "secretpassphrase"
+
{{hc|wpa_supplicant.conf|
 
+
Dovrebbe venir generato qualcosa di simile:
+
 
+
{{bc|
+
 
<nowiki>
 
<nowiki>
 
network={
 
network={
      ssid="mywireless_ssid"
+
        ssid="mywireless_ssid"
      #psk="secretpassphrase"
+
        psk="secretpassphrase"
      psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
        # parametri aggiuntivi (proto, key_mgmt, etc.)
 
}
 
}
</nowiki>
+
</nowiki>}}
}}
+
  
Questa è la configurazione minima necessaria per il funzionamento di una rete protetta da WPA. La prima linea è la dichiarazione di apertura per la rete, la seconda indica il SSID del punto d'accesso wireless a cui ci si vuole connettere, la terza contiene la password e la quarta è la sua versione esadecimale, richiesta per la connessione.
+
Questo è il file di configurazione di base necessario affinchè l'autenticazione WPA funzioni. La prima riga è la dichiarazione d'apertura del network block, la seconda contiene l'SSID dell'Access Point al quale si vuole connetterti, mentre la terza è la passphrase.
  
* Usando {{ic|wpa_passphrase}}, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a {{ic|/etc/wpa_supplicant.conf}}:
+
{{Attenzione|Ci si ricordi di usare i doppi apici alle voci ssid e psk!}}
  
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf
+
=====Passphrase e PSK=====
  
Assicurarsi di modificare quanto generato in base alle informazioni di connessione di cui si è in possesso. Il comando di cui sopra, creerà un {{ic|/etc/wpa_supplicant.conf}} di base partendo dall'output del comando {{ic|wpa_passphrase}}.
+
Il lettore attento avrà notato che la PSK dovrebbe essere una stringa esadecimale. Infatti, la passphrase e la PSK non sono esattamente la stessa cosa: la passphrase è una chiave leggibile dall'utente che viene usata in combinazione con il SSID per generare la chiave di rete "machine friendly" conosciuta come "PSK". A livello di rete, la passphrase non viene mai usata, e rappresenta solamente un modo comodo per gestire la chiave da parte degli utenti.
  
Se, ad esempio, si usa il protocollo WPA2-Personal, sarà necessario aggiungere alcune linee nella corrispondente sezione "network":
+
Se si vuole risparmiare tempo, è possibile fornire direttamente la versione esadecimale della passphrase, usando l'utility {{ic|wpa_passphrase}}, che è fornita dal pacchetto {{Pkg|wpa_supplicant}} stesso. Si utilizzi la sintassi {{ic|wpa_passphrase [ssid] [passphrase]}}.
  
{{bc|
+
* Un esempio:
<nowiki>
+
network={
+
      ssid="mywireless_ssid"
+
      proto=RSN
+
      key_mgmt=WPA-PSK
+
      pairwise=CCMP TKIP
+
      group=CCMP TKIP
+
      psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
}
+
</nowiki>
+
}}
+
  
{{Nota|Le informazioni appena immesse verranno immagazzinate in formato testo: per questo motivo potrebbe essere preferibile cambiare i permessi del file {{ic|/etc/wpa_supplicant.conf}} (es. {{ic|chmod 600 /etc/wpa_supplicant.conf}} per rendere il file leggibile solo da root), a seconda di quanta importanza si da alla sicurezza del proprio sistema.}}
+
# wpa_passphrase mywireless_ssid "secretpassphrase"
  
È possibile aggiungere altre reti WPA con il seguente comando:
+
Il comando dovrebbe generare il seguente network block:
  
  # wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf
+
  network={
 +
        ssid="mywireless_ssid"
 +
        #psk="secretpassphrase"
 +
        psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
 +
}
  
Il {{ic|>>}} redirigerà l'output, appenendolo in coda al file {{ic|/etc/wpa_supplicant.conf}} preesistente, senza sovrascriverlo.
+
La terza linea è la passphrase (la chiave leggibile dall'utente) e la quarta la PSK (la chiave esadecimale), che è richiesta per la connessione. Il {{ic|#}} commenta la linea relativa alla passphrase, dal momento che utilizzeremo la PSK per la connessione.
  
Sono disponibili molte altre opzioni da impostare nella sezione network, ottenibili leggendo il file di configurazione fornito di default, anche se, nella maggioranza dei casi, è possibile utilizzare le impostazioni predefinite senza specificare altro; almeno per il momento.
+
{{Nota|La PSK esadecimale non deve essere inclusa tra doppi apici.}}
  
CInfine, si aggiungano le seguenti linee in cima al proprio {{ic|/etc/wpa_supplicant.conf}}:
+
* Utilizzando {{ic|wpa_passphrase}} si specifichi il proprio SSID reale e la propria passphrase, e si rediriga l'output su {{ic|/etc/wpa_supplicant.conf}}:
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
+
  # wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf
 
+
{{Nota|Per l'uso con netcfg-2.6.1-1 in {{ic|[testing]}} (dal 25-06-2011), ctrl_interface dovrebbe avere valore {{ic|/run/wpa_supplicant}} (si noti l'assenza di {{ic|/var/...}}). Tuttavia, questo causerà il mancato funzionamento di {{ic|wpa_cli}} (si utilizzi l'opzione {{ic|-p}} per forzare il valore di default). Se l'impostazione non viene cambiata, si riscontreranno errori simili a: "Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory".}}
+
 
+
Se si ha la necessità di connettersi a più reti, si definisca semplicemente un altra sezione network nel file di configurazioni. Si cambi la priorità come più si ritiene consono, tenendo in mente che le reti con un valore più alto vengono utilizzate per prime.
+
 
+
È ora possibile provare a collegarsi manualmente.
+
Innanzitutto, si attivi l'interfaccia Wi-Fi. Per questo esempio utilizzeremo ''wlan0'' come interfaccia:
+
 
+
  # ip link set wlan0 up
+
 
+
Sarà solitamente possibile utilizzare il driver '''W'''ireless '''EXT'''tensions (wext) con wpa_supplicant. Qualora questo non dovesse funzionare, si cerchi su internet come risolvere.
+
 
+
Si dia il seguente comando da root:
+
 
+
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
+
 
+
Il comando appena scritto indica a wpa_supplicant di utilizzare la configurazione hardware di default (WEXT - Linux '''W'''ireless '''EXT'''ensions) e di associarsi con il SSID specificato in {{ic|/etc/wpa_supplicant.conf}}. Inoltre, l'associazione dovrà essere effettuata con il device ''wlan0'', e il processo dovrà essere spostato in background ({{ic|-B}}). Per avere un output più prolisso, si specifichino le opzioni {{ic|-d}} o {{ic|-dd}} (per il debug). È possibile trovare ulteriori esempi [http://www.examplenow.com/wpa_supplicant qui].
+
 
+
Nell'output stampato a console, dovrebbe esserci una linea che contiene ''''Associated:'''', seguita da u n MAC Address. È ora sufficiente richiedere un indirizzo IP valido.
+
 
+
Si esegua, come root:
+
 
+
# dhcpcd wlan0
+
 
+
{{Nota|Non si richieda un indirizzo IP immediatamente! È consigliabile attendere per assicurarsi che l'associazione con l'access point sia avvenuta con successo. Se si usa uno script, è possibile utilizzare {{ic|sleep 10}} per aspettare 10 secondi.}}
+
 
+
Si verifichi che l'interfaccia abbia un indirizzo IP usando il pacchetto {{ic|iproute}}:
+
 
+
{{hc|
+
# ip addr show wlan0|
+
<nowiki>
+
  wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
+
  link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
+
  inet 192.168.0.62/24 brd 192.168.0.255 scope global eth0
+
  inet6 fe80::224:2bff:fed3:759e/64 scope link
+
      valid_lft forever preferred_lft forever
+
</nowiki>
+
}}
+
 
+
Se l'output è simile a quanto visto sopra, la connessione è stata effettuata con successo. In questo caso, è possibile utilizzre {{Pkg|netcfg2}} per rendere la configurazione permanente, oltre che avviare la connessione alla rete quando si accende la macchina. A seconda dell'approccio scelto nella configurazione dell'adattatore di rete wireless, è possibile scegliere di utilizzare un tool grafico, ma non invasivo come [[Wicd (Italiano)|Wicd]] o affidarsi ai profili di rete forniti da [[Netcfg (Italiano)|netcfg]].
+
 
+
Configurazioni più sofisticate come l'autenticazione attraverso EAPOL o server RADIUS sono descritte dettagliatamente nella pagina di manuale di {{ic|wpa_supplicant}} ({{ic|man wpa_supplicant.conf}}) ed esulano dallo scopo di questo articolo.
+
 
+
===Fallback: ricompilazione di wpa_supplicant===
+
 
+
Procurarsi una copia del sorgente di wpa_supplicant scaricandolo dalla relativa home page o da [[Arch Build System (Italiano)|ABS]]. Una volta scaricato ed estratto il sorgente, si controlli il contenuto del file {{ic|.config}} (sì, è nascosto), la cui struttura ricorda quella di un file di configurazione del kernel, anche se in scala ridotta. Si controlli la sezione chiamata {{ic|CONFIG_DRIVER_''NOMEDRIVER''}} e si scelga tra "y" o "n", a seconda del driver che si desidrera utilizzare.
+
Si presti attenzione nello scegliere le opzioni, poichè sarà necessario specificare il percorso ai sorgenti del driver wireless per compilare correttamente i componenti di basso livello necessari per l'associazione. Ad esempio, alcuni strani chipsets Atheros, hanno bisogno di una build pulita di wpa_supplicant, compilata sull'ultima release disponibiele dei driver {{ic|madwifi-svn}}.
+
Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione.
+
 
+
'''Esempio per driver madwifi''': Si modifichino le seguenti linee del file {{ic|.config}} nei sorgenti di wpa_supplicant, in modo che siano uguali a queste. Si assume che i driver madwifi siano stati compilati con ABS, e che il codice sorgente sia posizionato in {{ic|/var/abs/local/madwifi/src}}.
+
 
+
#Driver interface for madwifi driver
+
CONFIG_DRIVER_MADWIFI=y
+
#Change include directories to match with the local settings
+
CFLAGS += -I/var/abs/local/madwifi/src/madwifi
+
 
+
==Gestione==
+
 
+
===Semplice soluzione con wpa_cli===
+
 
+
Se siete tra coloro che si trovano a disagio con la complessità e i bugs di [[Netcfg (Italiano)|netcfg]], o volete ottenere delle conoscenze riapplicabili su altri sistemi operativi Linux, il pacchetto {{Pkg|wpa_supplicant}} include {{ic|wpa_cli}}, che consente di connettersi e modificare le impostazioni dell'interfaccia wireless in modo semplice.
+
 
+
Si scriva uno script simile al seguente:
+
 
+
{{hc|
+
~/libexec/wpa_cli-action.sh|
+
<nowiki>
+
case $2 in
+
CONNECTED)
+
dhcpcd -x $1 >/dev/null
+
dhcpcd $1 >/dev/null
+
;;
+
esac
+
</nowiki>
+
}}
+
 
+
Lo si renda eseguibile e si lanci {{ic|wpa_supplicant}} con il file di configurazione predefinito:
+
 
+
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+
 
+
{{Nota|È necessario che il file di configurazione abbia l'impostazione {{ic|ctrl_interface}} affinchè {{ic|wpa_cli}} funzioni.}}
+
 
+
Si lanci ora {{ic|wpa_cli}} in modalità demone, indicandogli lo script appena scritto:
+
 
+
# wpa_cli -B -a ~/libexec/wpa_cli-action.sh
+
 
+
Per avviare automatcamente {{ic|wpa_supplicant}} e {{ic|wpa_cli}} al boot, si aggiungano le seguenti linee al file {{ic|/etc/rc.local}}:
+
 
+
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
+
wpa_cli -B -a  /path/al/proprio/wpa_cli-action.sh
+
 
+
===netcfg===
+
 
+
Si installi netcfg:
+
 
+
# pacman -S netcfg
+
 
+
Si crei un profilo di rete copiando il file di esempio:
+
 
+
# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
+
 
+
Si modifichi il file appena creato, assicurandosi che usi l'interfaccia corretta:
+
 
+
INTERFACE="wlan0"
+
 
+
Il resto del file dovrebbe rimanere inalterato.
+
 
+
Si modifichi ora {{ic|/etc/rc.conf}}, e si aggiunga il profilo di rete all'array NETWORKS:
+
 
+
NETWORKS=(wpa_suppl)
+
 
+
Infine, si aggiunga il demone net-profiles  all'array DAEMONS, per falo partire al boot:
+
 
+
DAEMONS=(... @net-profiles)
+
 
+
Al prossimo riavvio, l'interfaccia wireless verrà attivata e wpa_supplicant sarà avviato e se una rete conosciuta è disponibile, verrà stabilita una connessione.
+
 
+
Per ulteriori informazioni si veda la pagina del wiki relativa a [[Netcfg (Italiano)|netcfg]].
+
 
+
===Sola gestione delle reti wireless===
+
 
+
Come menzionato sopra, esistono due frontends a wpa_supplicant scritti dagli sviluppatori dello stesso: {{ic|wpa_cli}} e {{ic|wpa_gui}}. wpa_cli è, come ci si aspetterebbe, un frontend a linea di comando, mentre "wpa_gui" è un'interfaccia a wpa_supplicant che utilizza le librerie Qt. wpa_cli è inclusa nel pacchetto wpa_supplicant, mentre {{Pkg|wpa_supplicant_gui}} è fornito separatamente.
+
I dettagli relativi all'impostazione di wpa_supplicant per funzionare con l'uno o l'altro frontend sono riportati in [[#Metodo dinamico: 'wpa_gui', 'wpa_cli']]
+
 
+
Quando si invoca {{ic|wpa_cli}} senza argomenti, verrà avviato un prompt specifico. Si scriva {{ic|help}} per ricevere aiuto.
+
 
+
L'interfaccia wpa_gui è abbastanza intuitiva. Se si preme il bottone "Scan", verrà visualizzata una lista degli SSID rilevati. Se si effettua un doppio click su uno di questi, comparirà una finestra di dialogo che consentirà di inserire le informazioni richieste per l'associazione alla rete. Nella maggior parte dei casi, si dovrà inserire la pre-shared key (PSK) se si sta utilizzando WPA/WPA2, o la propria {{ic|key0}} se si utilizza WEP. Il protocollo utilizzato dalla rete dovrebbe essere rilevato automaticamente. Altre cose, come l'autenticazione 802.1X richiederanno configurazioni aggiuntive.
+
 
+
{{Attenzione|Il protocollo WEP è compromesso e non dovrebbe venir utilizzato al di fuori di ambienti di laboratorio o di test. Si utilizzi ''almeno'' WPA (WPA2 è raccomandato) per una rete più sicura.}}
+
 
+
Dopo aver aggiunto una rete, è possibile modificarla se ad esempio si è  cambiata la PSK (Pre-shared Key). Si clicchi sul tab "Manage Networks" e si selezioni la rete da modificare/rimuovere. È inoltre possibile aggiungere una rete anche senza effettuare la scansione; operazione obbligatoria se il proprio access point non effettua il broadcast del SSID.
+
 
+
{{Nota|Impostare il proprio access point per non effettuare il broadcast del SSID '''non''' aumenterà la sicurezza della propria rete wireless. È infatti molto semplice identificare SSID nascosti.}}
+
 
+
{{Nota|wpa_cli e wpa_gui non richiedono un indirizzo IP, né creano una tabella di routing: servono infatti solo per l'associazione all'access point. È possibile utilizzare lo script {{AUR|wpa_auto}}, disponibile su [[AUR (Italiano)|AUR]], per avviare  {{ic|wpa_supplicant}} al boot ed avviare automaticamente un client DHCP per configurare la propria connessione una volta che ci si è associati alla rete wireless, oppure è possibile scrivere uno script di proprio pugno. Utility per la gestione della rete di più alto livello sono in grado di gestire sia reti cablate che wireless.}}
+
 
+
===Wicd===
+
 
+
Si installi Wicd:
+
 
+
# pacman -S wicd
+
 
+
L'utilizzo di Wicd è molto semplice; si effettui la scansione delle reti, si inseriscano i dati necessari e si effettui la connessione. Potrebbe essere necessario aggiungere {{ic|/usr/lib/wicd/autoconnect.py}} agli script di init e power management per riconnettersi alle proprie reti, se si è impostata la connessione automatica alle stesse.
+
 
+
==Risoluzione dei problemi==
+
 
+
La maggior parte dei problemi è riscontrabile nel processo di associazione, perciò si dovrebbe controlalre attentamente l'output di wpa_supplicant se si sospetta che non stia funzionando a dovere. Si aggiunga {{ic|-d}} (per il debug) per aumentare la verbosità. Solitamente {{ic|-dd}} è abbastanza, mentre {{ic|-dddd}} potrebbe essere eccessivo.
+
 
+
Mentre si controlla il log, si cerchino voci simili a questa:
+
 
+
ioctl[QUALCOSA]: Operation not supported
+
 
+
Se è apparso un messaggio del genere, significa che ci sono problemi con i driver: si provi ad aggiornarli, oppure a cambire il parametro {{ic|-D}} di wpa_supplicant.
+
 
+
Un altro problema comune sono i messaggi: {{ic|No suitable AP found}}. In questo caso, wpa_supplicant potrebbe avere problemi a trovare reti con SSID nascosto. Solitamente aggiungere {{ic|1=scan_ssid=1}} al proprio blocco {{ic|network}} risolverà il problema.
+
 
+
===Non è possibile usare wpa_gui per configurare nuove reti===
+
 
+
Di default, la variabile {{ic|ap_scan}} ha valore {{ic|0}}, il che significa che wpa_supplicant delega al driver LAN il compito di effettuare la scansione degli access points. Se il proprio driver non supporta questa operazione, wpa_supplicant terminerà quando gli verrà richiesta la scansione. Si aggiunga quindi:
+
 
+
ap_scan=1
+
 
+
al proprio {{ic|/etc/wpa_supplicant.conf}}
+
 
+
===Impossibile ottenere un indirizzo IP dal server DHCP===
+
 
+
Quanto segue è frutto di un'esperienza personale. Non so perchè il tutto funziona in questo modo, ma forse altri utenti hanno lo stesso problema. Dopo i seguenti comandi, non mi viene assegnato un IP dal server DHCP:
+
 
+
ifconfig wlan0
+
iwconfig wlan0 essid "myEssid"
+
wpa_supplicant -B -D wext  -i wlan0 -c /etc/wpa_supplicant.conf
+
sleep 15; dhcpcd wlan0 #oppure dhclient wlan0
+
 
+
Per aggirare il problema, uso questo workaround:
+
 
+
killall wpa_supplicant -SIGHUP
+
iwconfig wlan0 essid "myEssid" key on #forse "key on" è opzionale
+
sleep 15; dhcpcd wlan0
+
 
+
Quando scrivo:
+
 
+
ps aux | grep wpa
+
  
Noto un processo di {{ic|wpa_supplicant}} attivo benchè l'abbia appena ucciso. Sembrerebbe che {{ic|iwconfig}} avvii il servizio per me.
+
Il {{ic|>>}} redirigerà l'output su {{ic|/etc/wpa_supplicant.conf}}, aggiungendolo ad eventuali righe preesistenti. È possibile aggiungere un numero illimitato di network blocks, e wpa_supplicant saprà quale utilizzare in base agli SSID trovati nell'area.
  
La mia scheda wireless è:
+
=====Opzioni del network block=====
  
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
+
Tutti i parametri di sicurezza devono essere specificati qui. Si noti che se si è insicuri sui valori richiesti dal proprio Access Point, è possibile utilizzarne diversi contemporaneamente, e {{ic|wpa_supplicant}} sceglierà automaticamente quello funzionante.
  
===Errore di associazione al boot con netcfg===
+
Ad esempio, è possibile aggiungere:
  
Quanto segue è un'esperienza personale. La mia scheda di rete Broadcom BCM4322 è abbastanza lenta nella fase di associazione durante l'avvio del sistema. Si provi quindi ad aggiungere la seguente lina in {{ic|/etc/network.d/<vosto profilo>}}:
+
proto=WEP WPA
  
TIMEOUT=30
+
in modo che il se prorpio Access Point utilizza WEP o WPA, il tutto funzionerà in entrambi i casi. Se però lo stesso utilizza RSN (ovvero WPA2), sarà necessario aggiungerlo agli altri valori.
  
Si riavvii per applicare i cambiamenti.
+
Se il SSID è nascosto, si aggiunga la seguente opzione al network block:
  
{{Nota|{{ic|1=TIMEOUT=30}} potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.}}
+
scan_ssid=1
  
===La connessione wireless cade spesso===
+
Se è necessario connettersi a più reti, si definisca un altro network block nello stesso file. È possibile specificare la priorità per ognuno di essi:
  
Se la propria connessione cade spesso e dmesg mostra questo messaggio:
+
priority=17
  
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
+
Si cambi la priorità a piacere, ricordandosi che i numeri più grandi avranno la precedenza.
  
una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.
+
Ci sono inoltre numerose altre opzioni di configurazioni impostabili nel network block che è possibile trovare nel file di configurazione originale.
 +
Nella maggior parte dei casi non si avrà bisogno di specificare nulla oltre ai paremetri di default.

Revision as of 16:40, 9 July 2012

Configurazione e connessione

WPA Supplicant è pacchettizzato con un file di configurazione d'esempio: /etc/wpa_supplicant/wpa_supplicant.conf, il quale è ben commentato e fornisce numerose informazioni sulle meccaniche di rete. Tutte le variabili usate in questo articolo sono descritte in questo file, che contiene inoltre molte configurazioni d'esempio già preimpostate, pertanto ne è fortemente consigliata la lettura, assieme alle pagine di manuale man wpa_supplicant e man wpa_supplicant.conf.

Il file di configurazione di WPA Supplicant contiene tutte le impostazioni relative a wpa_supplicant. È possibile crearne quanti se ne vuole e posizionarli dove più vi aggrada, dal momento che è necessario specificare il file di configurazione da utilizzare ad ogni invocazione di wpa_supplicant.

Il contenuto del file è molto semplice:

  • La prima parte riguarda la configurazione generale. È una serie di linee contenenti coppie chiave-valore.
  • La seconda parte è composta dai network blocks, uno per ogni profilo che si desidera impostare.

Per semplificare, si lascerà invariato il file di configurazione d'esempio e si partirà da zero creando il file /etc/wpa_supplicant.conf.

Ci sono molti modi per configurare wpa_supplicant, ed è possibile scegliere tra quelli sotto elencati.

Metodo manuale

File di configurazione

Innanzitutto è necessario essere in possesso di tutti i parametri relativi alla connessione al proprio Access Point, gran parte dei quali ottenibili con il tool iwlist:

# iwlist wlan0 scan

Ulteriori dettagli sono disponibili qui.

Ora dovreste conoscere i seguenti parametri necessari a wpa_supplicant per funzionare:

  • SSID
  • proto (opzionale su reti non protette)
  • key_mgmt
  • pairwise
  • group

Inoltre, si potrebbe aver bisogno dei parametri di autenticazione (EAP, PEAP, ecc.) se si è su reti particolari, come quelle universitarie, ad esempio.

Primi ritocchi

È ora possibile procedere con la creazione di un network block nel file di configurazione:

wpa_supplicant.conf

network={
        ssid="mywireless_ssid"
        psk="secretpassphrase"
        # parametri aggiuntivi (proto, key_mgmt, etc.)
}

Questo è il file di configurazione di base necessario affinchè l'autenticazione WPA funzioni. La prima riga è la dichiarazione d'apertura del network block, la seconda contiene l'SSID dell'Access Point al quale si vuole connetterti, mentre la terza è la passphrase.

Attenzione: Ci si ricordi di usare i doppi apici alle voci ssid e psk!
Passphrase e PSK

Il lettore attento avrà notato che la PSK dovrebbe essere una stringa esadecimale. Infatti, la passphrase e la PSK non sono esattamente la stessa cosa: la passphrase è una chiave leggibile dall'utente che viene usata in combinazione con il SSID per generare la chiave di rete "machine friendly" conosciuta come "PSK". A livello di rete, la passphrase non viene mai usata, e rappresenta solamente un modo comodo per gestire la chiave da parte degli utenti.

Se si vuole risparmiare tempo, è possibile fornire direttamente la versione esadecimale della passphrase, usando l'utility wpa_passphrase, che è fornita dal pacchetto wpa_supplicant stesso. Si utilizzi la sintassi wpa_passphrase [ssid] [passphrase].

  • Un esempio:
# wpa_passphrase mywireless_ssid "secretpassphrase"

Il comando dovrebbe generare il seguente network block:

network={
       ssid="mywireless_ssid"
       #psk="secretpassphrase"
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}

La terza linea è la passphrase (la chiave leggibile dall'utente) e la quarta la PSK (la chiave esadecimale), che è richiesta per la connessione. Il # commenta la linea relativa alla passphrase, dal momento che utilizzeremo la PSK per la connessione.

Nota: La PSK esadecimale non deve essere inclusa tra doppi apici.
  • Utilizzando wpa_passphrase si specifichi il proprio SSID reale e la propria passphrase, e si rediriga l'output su /etc/wpa_supplicant.conf:
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf

Il >> redirigerà l'output su /etc/wpa_supplicant.conf, aggiungendolo ad eventuali righe preesistenti. È possibile aggiungere un numero illimitato di network blocks, e wpa_supplicant saprà quale utilizzare in base agli SSID trovati nell'area.

Opzioni del network block

Tutti i parametri di sicurezza devono essere specificati qui. Si noti che se si è insicuri sui valori richiesti dal proprio Access Point, è possibile utilizzarne diversi contemporaneamente, e wpa_supplicant sceglierà automaticamente quello funzionante.

Ad esempio, è possibile aggiungere:

proto=WEP WPA

in modo che il se prorpio Access Point utilizza WEP o WPA, il tutto funzionerà in entrambi i casi. Se però lo stesso utilizza RSN (ovvero WPA2), sarà necessario aggiungerlo agli altri valori.

Se il SSID è nascosto, si aggiunga la seguente opzione al network block:

scan_ssid=1

Se è necessario connettersi a più reti, si definisca un altro network block nello stesso file. È possibile specificare la priorità per ognuno di essi:

priority=17

Si cambi la priorità a piacere, ricordandosi che i numeri più grandi avranno la precedenza.

Ci sono inoltre numerose altre opzioni di configurazioni impostabili nel network block che è possibile trovare nel file di configurazione originale. Nella maggior parte dei casi non si avrà bisogno di specificare nulla oltre ai paremetri di default.