Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
m (Risoluzione dei problemi)
(45 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{i18n|WPA supplicant}}
 
 
[[Category:Wireless Networking (Italiano)]]
 
[[Category:Wireless Networking (Italiano)]]
 +
[[es:WPA supplicant]]
 +
[[en:WPA supplicant]]
 +
[[ru:WPA Supplicant]]
 +
[[zh-CN:WPA Supplicant]]
  
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.
+
{{Article summary start}}
 +
{{Article summary text|Installazione ed utilizzo di wpa_supplicant}}
 +
{{Article summary heading|Argomenti correlati}}
 +
{{Article summary wiki|Configuring Network (Italiano)|Configurazione della rete}}
 +
{{Article summary wiki|Wireless Setup (Italiano)|Installazione dispositivi wireless}}
 +
{{Article summary end}}
  
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à.
+
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] è un [[Wikipedia:Supplicant_(computer) | Supplicant]] WPA con supporto a WEP, WPA e WPA2 ([[Wikipedia:IEEE_802.11i|IEEE 802.11i]] / RSN (Robust Secure Network)) adatto all'uso con PC desktop, portatili e persino in sistemi embedded. {{ic|wpa_supplicant}} è il componente IEEE 802.1X/WPA utilizzato dai client, implementa la negoziazione della chiave con un WPA Authenticator, controlla il roaming e l'associazione / autenticazione del driver wireless.
 
+
==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==
 
==Installazione==
  
Si installi il demone:
+
Si installi {{Pkg|wpa_supplicant}} dai [[Official Repositories (Italiano)|repository ufficiali]].
  
# pacman -S wpa_supplicant
+
È inoltre possibile installare {{Pkg|wpa_supplicant_gui}}; un frontend grafico per {{ic|wpa_supplicant}} che utilizza il toolkit {{Pkg|qt4}}.
  
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}}:
+
==Associazione==
  
{{hc|
+
Per associarsi ad un Access Point wireless utilizzando {{ic|wpa_supplicant}}, utilizzare il tool a riga di comando {{ic|wpa_cli}}, incluso nel pacchetto. Per utilizzare {{ic|wpa_cli}} è necessario specificare una interfaccia di controllo nel file di configurazione, aggiungendo una linea simile a {{ic|1=ctrl_interface=/var/run/wpa_supplicant}}.
wpa_supplicant|
+
<nowiki>
+
Driver list:
+
  
*HostAP
+
Per abilitare il salvataggio delle modifiche effettuate tramite {{ic|wpa_cli}}, si aggiunga {{ic|1=update_config=1}} al file di configurazione, quindi si avvii {{ic|wpa_supplicant}} come segue:
*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.
+
# wpa_supplicant -B -i ''interface'' -c ''/percorso/al/file/di/configurazione''
  
===Opzionale: Installare l'interfaccia grafica===
+
Si invochi {{ic|wpa_cli}} senza argomenti per ottenere un prompt interattivo ({{ic|>}}). Il prompt supporta la tab completion e contiene le descrizioni dei comandi autocompletati. Ad esempio, il comando {{ic|scan}} avvia una scansione delle reti wireless vicine ed invia una notifica una volta che l'operazione è stata completata.
  
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]}}:
+
Si esegua quindi:
  
# pacman -S wpa_supplicant_gui
+
{{bc|<nowiki>
 +
> scan_results
 +
bssid / frequency / signal level / flags / ssid
 +
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID
 +
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID
 +
</nowiki>}}
  
==Configurazione e connessione==
+
Per associarsi con ''MYSSID'' sarà necessario informare {{ic|wpa_supplicant}}. Ogni rete è numerata a partire da zero ed è possibile inserire la [http://en.wikipedia.org/wiki/Pre-shared_key PSK] senza apici, alternativamente all'inserimento della passphrase proposto nell'esempio sotto:
  
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.
+
{{bc|<nowiki>
 +
> add_network
 +
0
 +
> set_network 0 ssid "MYSSID"
 +
> set_network 0 psk "passphrase"
 +
> enable_network 0
 +
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
 +
</nowiki>}}
  
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
+
Il messaggio di notifica indica l'avvenuta associazione con l'Access Point scelto: sarà ora possibile ottenere un indirizzo IP tramite {{Pkg|dhcpcd}} o {{Pkg|iproute2}}.
  
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
Si leggano gli articoli correlati per ulterori informazioni.
  
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
Per salvare le informazioni di rete nel file di configurazione si esegua:
  
Di seguito un semplice esempio:
+
> save_config
 +
OK
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
==Configurazione==
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".}}
+
{{Pkg|wpa_supplicant}} fornisce un file di configurazione d'esempio situato in {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} che documenta in modo dettagliato tutte le opzioni disponibili e relative configurazioni.
  
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 automanticamente il file {{ic|/etc/wpa_supplicant.conf}}, al fine di aggiungere nuove reti o effettuare modifiche a quelle esistenti.
+
Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:
  
Si avvii quindi wpa_supplicant:
+
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 
+
# wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant.conf -B
+
 
+
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.
+
 
+
wpa_gui e wpa_cli dovrebbero ora 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}}.
+
 
+
===Metodo classico: {{ic|/etc/wpa_supplicant.conf}}===
+
 
+
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:
+
 
+
* Un esercizio d'esempio:
+
 
+
# wpa_passphrase mywireless_ssid "secretpassphrase"
+
 
+
Dovrebbe venir generato qualcosa di simile:
+
 
+
{{bc|
+
<nowiki>
+
 
network={
 
network={
      ssid="mywireless_ssid"
+
    ssid="..."
      #psk="secretpassphrase"
+
  }
      psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
</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.
+
Quanto sopra può essere facilmente generato utilizzando il tool {{ic|wpa_passphrase}}:
  
* Usando {{ic|wpa_passphrase}}, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a {{ic|/etc/wpa_supplicant.conf}}:
+
{{hc|$ wpa_passphrase ''essid'' ''passphrase''|2=
 
+
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf
+
 
+
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}}.
+
 
+
Se, ad esempio, si usa il protocollo WPA2-Personal, sarà necessario aggiungere alcune linee nella corrispondente sezione "network":
+
 
+
{{bc|
+
<nowiki>
+
 
network={
 
network={
      ssid="mywireless_ssid"
+
  ssid=''essid''
      proto=RSN
+
  #psk=''passphrase''
      key_mgmt=WPA-PSK
+
  psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
      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.}}
+
{{Suggerimento|È possibile utilizzare un file di testo come input per l'inserimento di alcune passphrase particolarmente complesse:
 
+
  # wpa_passphrase essid < ''passphrase''.txt > /etc/wpa_supplicant/wpa_supplicant-''interfaccia''.conf
È possibile aggiungere altre reti WPA con il seguente comando:
+
 
+
# wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf
+
 
+
Il {{ic|>>}} redirigerà l'output, appenendolo in coda al file {{ic|/etc/wpa_supplicant.conf}} preesistente, senza sovrascriverlo.
+
 
+
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.
+
 
+
CInfine, si aggiungano le seguenti linee in cima al proprio {{ic|/etc/wpa_supplicant.conf}}:
+
 
+
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
+
 
+
{{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]].
+
Una volta ottenuto un file di configurazione, sarà possibile avviare il demone ''wpa_supplicant'' e collegarsi alla rete wireless richiesta:
  
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.
+
# wpa_supplicant -B -i ''interfaccia'' -c ''file_di_configurazione''
  
===Fallback: ricompilazione di wpa_supplicant===
+
Potrebbe essere necessario specificare il driver da utilizzare: per una lista di quelli supportati, eseguire il comando {{ic|wpa_supplicant -h}}. Si noti che il driver {{ic|nl80211}} è da preferirsi rispetto al vecchio {{ic|wext}}, da ritenersi deprecato.
 +
Il driver viene specificato tramite il parametro {{ic|-D}}:
  
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.
+
# wpa_supplicant -B -i ''interfaccia'' -c ''file_di_configurazione'' -D ''driver''
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}}.
+
{{Suggerimento|È possibile combinare l'utilizzo di ''wpa_supplicant'' e ''wpa_passphrase'' per connettersi a quasi tutte le reti WPA2 (Personal):
 
+
  # wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase ''essid'' ''passphrase'')
  #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:
+
Una volta autenticati, non rimane che connettersi utilizzando un [[Configuring Network (Italiano)#Indirizzo_IP_Statico|IP statico]] oppure tramite [[Configuring Network (Italiano)#Indirizzo_IP_dinamico|DHCP]]. Ad esempio:
 
+
# 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 #or 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.
+
  
La mia scheda wireless è:
+
# dhcpcd ''interfaccia''
  
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
+
==Avvio tramite systemd==
  
===Errore di associazione al boot con netcfg===
+
Una possibile configurazione consiste nell'abilitazione di ''wpa_supplicant'' e ''dhcpcd'' su un'interfaccia specifica (si veda a tal proposito [[Systemd (Italiano)#Usare le unità]]):
  
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>}}:
+
# systemctl enable wpa_supplicant@''interfaccia''
 +
# systemctl enable dhcpcd@''interfaccia''
  
TIMEOUT=30
+
La sezione {{ic|[Install]}} del servizio di systemd fornito da ''wpa_supplicant'' è sbagliata (si veda [http://w1.fi/bugz/show_bug.cgi?id=477 questo] bug report). Se la propria interfaccia di rete non si chiama {{ic|wlan0}}, sarà necessario copiare il servizio in {{ic|/etc/systemd/system}} e modificare la sezione {{ic|[Install]}} in questo modo:
  
Si riavvii per applicare i cambiamenti.
+
[Install]
 +
WantedBy=multi-user.target
  
{{Nota|{{ic|TIMEOUT=30}} potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.}}
+
Si consulti [[Systemd (Italiano)#Rimpiazzare le unità fornite]] per ulteriori informazioni sulla modifica delle unità.
  
===La connessione wireless cade spesso===
+
{{Nota|Se si utilizza il servizio {{ic|dhcpcd@.service}} è possibile sostituire il parametro {{ic|-w}} con {{ic|-b}}, in modo che {{ic|dhcpcd}} non aspetti di ricevere un indirizzo prima di essere messo in background.}}
  
Se la propria connessione cade spesso e dmesg mostra questo messaggio:
+
{{Suggerimento|{{Pkg|dhcpcd}} contiente un hook (abilitato di default) per l'avvio automatico di ''wpa_supplicant'' su tutte le interfacce wireless, che viene attivato solamente se è presente il file di configurazione {{ic|/etc/wpa_supplicant.conf}} e se non vi è nessun processo di ''wpa_supplicant'' in ascolto su quella specifica interfaccia. Per questo motivo è possibile utilizzare semplicemente il servizio {{ic|dhcpcd@''interfaccia''}} per la configurazione della rete, senza abilitare {{ic|wpa_supplicant@''interfaccia''}}.}}
  
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
+
==Link correlati==
  
una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.
+
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant documentazione di wpa_supplicant su kernel.org]

Revision as of 18:41, 16 October 2013

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

wpa_supplicant è un Supplicant WPA con supporto a WEP, WPA e WPA2 (IEEE 802.11i / RSN (Robust Secure Network)) adatto all'uso con PC desktop, portatili e persino in sistemi embedded. wpa_supplicant è il componente IEEE 802.1X/WPA utilizzato dai client, implementa la negoziazione della chiave con un WPA Authenticator, controlla il roaming e l'associazione / autenticazione del driver wireless.

Installazione

Si installi wpa_supplicant dai repository ufficiali.

È inoltre possibile installare wpa_supplicant_gui; un frontend grafico per wpa_supplicant che utilizza il toolkit qt4.

Associazione

Per associarsi ad un Access Point wireless utilizzando wpa_supplicant, utilizzare il tool a riga di comando wpa_cli, incluso nel pacchetto. Per utilizzare wpa_cli è necessario specificare una interfaccia di controllo nel file di configurazione, aggiungendo una linea simile a ctrl_interface=/var/run/wpa_supplicant.

Per abilitare il salvataggio delle modifiche effettuate tramite wpa_cli, si aggiunga update_config=1 al file di configurazione, quindi si avvii wpa_supplicant come segue:

# wpa_supplicant -B -i interface -c /percorso/al/file/di/configurazione

Si invochi wpa_cli senza argomenti per ottenere un prompt interattivo (>). Il prompt supporta la tab completion e contiene le descrizioni dei comandi autocompletati. Ad esempio, il comando scan avvia una scansione delle reti wireless vicine ed invia una notifica una volta che l'operazione è stata completata.

Si esegua quindi:

> scan_results
bssid / frequency / signal level / flags / ssid
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID

Per associarsi con MYSSID sarà necessario informare wpa_supplicant. Ogni rete è numerata a partire da zero ed è possibile inserire la PSK senza apici, alternativamente all'inserimento della passphrase proposto nell'esempio sotto:

> add_network
0
> set_network 0 ssid "MYSSID"
> set_network 0 psk "passphrase"
> enable_network 0
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]

Il messaggio di notifica indica l'avvenuta associazione con l'Access Point scelto: sarà ora possibile ottenere un indirizzo IP tramite dhcpcd o iproute2.

Si leggano gli articoli correlati per ulterori informazioni.

Per salvare le informazioni di rete nel file di configurazione si esegua:

> save_config
OK

Configurazione

wpa_supplicant fornisce un file di configurazione d'esempio situato in /etc/wpa_supplicant/wpa_supplicant.conf che documenta in modo dettagliato tutte le opzioni disponibili e relative configurazioni.

Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:

/etc/wpa_supplicant/foobar.conf
network={
    ssid="..."
  }

Quanto sopra può essere facilmente generato utilizzando il tool wpa_passphrase:

$ wpa_passphrase essid passphrase
network={
   ssid=essid
   #psk=passphrase
   psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}
Suggerimento: È possibile utilizzare un file di testo come input per l'inserimento di alcune passphrase particolarmente complesse:
# wpa_passphrase essid < passphrase.txt > /etc/wpa_supplicant/wpa_supplicant-interfaccia.conf

Una volta ottenuto un file di configurazione, sarà possibile avviare il demone wpa_supplicant e collegarsi alla rete wireless richiesta:

# wpa_supplicant -B -i interfaccia -c file_di_configurazione

Potrebbe essere necessario specificare il driver da utilizzare: per una lista di quelli supportati, eseguire il comando wpa_supplicant -h. Si noti che il driver nl80211 è da preferirsi rispetto al vecchio wext, da ritenersi deprecato. Il driver viene specificato tramite il parametro -D:

# wpa_supplicant -B -i interfaccia -c file_di_configurazione -D driver
Suggerimento: È possibile combinare l'utilizzo di wpa_supplicant e wpa_passphrase per connettersi a quasi tutte le reti WPA2 (Personal):
# wpa_supplicant -B -i interfaccia -c <(wpa_passphrase essid passphrase)

Una volta autenticati, non rimane che connettersi utilizzando un IP statico oppure tramite DHCP. Ad esempio:

# dhcpcd interfaccia

Avvio tramite systemd

Una possibile configurazione consiste nell'abilitazione di wpa_supplicant e dhcpcd su un'interfaccia specifica (si veda a tal proposito Systemd (Italiano)#Usare le unità):

# systemctl enable wpa_supplicant@interfaccia
# systemctl enable dhcpcd@interfaccia

La sezione [Install] del servizio di systemd fornito da wpa_supplicant è sbagliata (si veda questo bug report). Se la propria interfaccia di rete non si chiama wlan0, sarà necessario copiare il servizio in /etc/systemd/system e modificare la sezione [Install] in questo modo:

[Install]
WantedBy=multi-user.target

Si consulti Systemd (Italiano)#Rimpiazzare le unità fornite per ulteriori informazioni sulla modifica delle unità.

Nota: Se si utilizza il servizio dhcpcd@.service è possibile sostituire il parametro -w con -b, in modo che dhcpcd non aspetti di ricevere un indirizzo prima di essere messo in background.
Suggerimento: dhcpcd contiente un hook (abilitato di default) per l'avvio automatico di wpa_supplicant su tutte le interfacce wireless, che viene attivato solamente se è presente il file di configurazione /etc/wpa_supplicant.conf e se non vi è nessun processo di wpa_supplicant in ascolto su quella specifica interfaccia. Per questo motivo è possibile utilizzare semplicemente il servizio dhcpcd@interfaccia per la configurazione della rete, senza abilitare wpa_supplicant@interfaccia.

Link correlati