Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
(flagged broken section links)
(Tag: wiki-scripts)
 
(62 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
[[Category:Wireless networking (Italiano)]]
 
[[en:WPA supplicant]]
 
[[en:WPA supplicant]]
 
[[es:WPA supplicant]]
 
[[es:WPA supplicant]]
[[ru:WPA Supplicant]]
+
[[ja:WPA supplicant]]
[[zh-CN:WPA Supplicant]]
+
[[ru:WPA supplicant]]
[[Category:Wireless Networking (Italiano)]]
+
[[zh-cn:WPA supplicant]]
 +
{{Related articles start (Italiano)}}
 +
{{Related|Network configuration (Italiano)}}
 +
{{Related|Wireless Setup (Italiano)}}
 +
{{Related articles end}}
  
{{Out of date|[https://www.archlinux.org/news/deprecation-of-net-tools net-tools] e wireless-tools sono deprecati.}}
+
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] è un [[Wikipedia:Supplicant_(computer)|Supplicant]] WPA multipiattaforma 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 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.
{{Poor writing|Uso non corretto dei template, stile non enciclopedico.}}
+
  
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.
+
==Installazione==
  
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à.
+
Si [[Install|installi]] il pacchetto {{Pkg|wpa_supplicant}}.
  
==Considerazioni==
+
È inoltre possibile installare {{Pkg|wpa_supplicant_gui}} che fornisce ''wpa_gui'', un frontend grafico per ''wpa_supplicant''.
  
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.
+
==Panoramica==
  
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.
+
Affinchè ''wpa_supplicant'' possa connettersi ad una rete wireless, dovrà prima essere autenticato da un WPA authenticator attraverso l'inserimento delle credenziali corrette.
  
==Installazione==
+
Una volta che l'associazione con l'access point è completa è possibile collegarsi alla rete ottenendo un indirizzo IP, manualmente tramite la suite [[Core utilities#ip|iproute2]] o tramite programmi appositi, come [[systemd-networkd]] o [[dhcpcd]], per l'assegnazione automatica di un indirizzo IP tramite DHCP. Si vedano anche gli articoli relativi ad interfacce [[Wireless_network_configuration#Systemd_with_wpa_supplicant_and_static_IP|wireless]]{{Broken section link}} o [[Configuring_Network_(Italiano)#Configurare_l.27indirizzo_IP|via cavo]].
  
E' possibile installare WPA Supplicant tramite il pacchetto {{Pkg|wpa_supplicant}}, disponibile nei [[Official Repositories (Italiano)|repository ufficiali]].
+
==Connessione tramite wpa_cli==
  
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}}:
+
Questo metodo consente di effettuare una scansione delle reti disponibili utilizzando ''wpa_cli'', un tool a riga di comando che è in grado di configurare ''wpa_supplicant'' a runtime. Si veda [http://linux.die.net/man/8/wpa_cli wpa_cli(8)] per ulteriori informazioni.
  
{{hc|
+
Per utilizzare ''wpa_cli'', sarà necessario specificare un'interfaccia di controllo per ''wpa_supplicant'' e dotarla dei permessi per modificare il relativo file di configurazione.
wpa_supplicant|
+
<nowiki>
+
Driver list:
+
  
*HostAP
+
Si crei quindi un file di configurazione minimale:
*Prism54
+
 
*NDISWrapper
+
{{hc|/etc/wpa_supplicant/esempio.conf|2=
*AMTEL
+
ctrl_interface=/run/wpa_supplicant
*IPW (both 2100 and 2200 drivers)
+
update_config=1
*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.
+
Si avvii ''wpa_supplicant'' come segue:
  
===Opzionale: Installare l'interfaccia grafica===
+
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/esempio.conf
  
Gli utenti che preferiscono disporre di un'interfaccia grafica possono installare il pacchetto {{Pkg|wpa_supplicant-gui}}, una GUI creata dagli stessi sviluppatori di wpa_supplicant e disponibile nei repository ufficiali.
+
{{Suggerimento|Per scoprire il nome della propria interfaccia di rete wireless, si esegua il comando {{ic|ip link}}.}}
  
==Configurazione e connessione==
+
Si esegua:
  
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}}.
+
# wpa_cli
  
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}}.
+
Verrà visualizzato un prompt interattivo ({{ic|>}}) che dispone di tab completion e descrizione dei comandi completati.
  
Il contenuto del file è molto semplice:
+
{{Suggerimento|Il percorso predefinito del socket di controllo è {{ic|/var/run/wpa_supplicant/}}. È possibile impostare un percorso personalizzato tramite il parametro {{ic|-p}}, in modo che corrisponda a quanto contenuto nel file di configurazione. Si può altresì specificare l'interfaccia da configurare con l'opzione {{ic|-i}}. Se non specificata, ''wpa_supplicant'' sceglierà la prima interfaccia disponibile.}}
  
* La prima parte riguarda la configurazione generale. È una serie di linee contenenti coppie ''chiave-valore''.
+
Si utilizzino i comandi {{ic|scan}} e {{ic|scan_results}} per vedere le reti disponibili:
* 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 {{ic|/etc/wpa_supplicant.conf}}.
+
> scan
 +
OK
 +
<3>CTRL-EVENT-SCAN-RESULTS
 +
> scan_results
 +
bssid / frequency / signal level / flags / ssid
 +
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MIOSSID
 +
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ALTROSSID
  
Ci sono molti modi per configurare {{ic|wpa_supplicant}}, ed è possibile scegliere tra quelli sotto elencati.
+
Per associarsi con {{ic|MIOSSID}} si aggiunga la rete, si specifichino le credenziali e la si abiliti:
  
===Metodo manuale===
+
> add_network
 +
0
 +
> set_network 0 ssid "MIOSSID"
 +
> 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=]
  
====File di configurazione====
+
Se il SSID a cui ci si connette non utilizza l'autenticazione tramite password sarà necessario configurare la rete come aperta, sostituendo il comando {{ic|set_network 0 psk "passphrase"}} con {{ic|set_network 0 key_mgmt NONE}}.
  
Innanzitutto è necessario essere in possesso di tutti i parametri relativi alla connessione al proprio Access Point:
+
{{Nota|
 +
* Ogni rete viene identificata da un numero crescente: la prima avrà pertanto indice 0.
 +
* La [[wikipedia:Pre-shared_key|PSK]] viene ottenuta dalla stringa "passphrase" immessa sopra e compresa tra doppi apici, come mostrato dal comando [[#Connessione tramite wpa_passphrase|wpa_passphrase]]. In ogni caso è possibile immettere la PSK direttamente passandola al comando {{ic|psk}} ''senza'' raccoglierla tra doppi apici.}}
  
# iw wlan0 scan
+
Si salvi infine la rete nel file di configurazione:
  
Ulteriori dettagli sono disponibili [https://wiki.archlinux.org/index.php/Wireless_Setup_%28Italiano%29#Ricerca_degli_Access_Points qui].
+
>save_config
 +
OK
  
Ora dovreste conoscere i seguenti parametri necessari a {{ic|wpa_supplicant}} per funzionare:
+
Una volta che l'assiociazione è stata effettuata, non resta che ottenere un indirizzo IP, come indicato nella sezione [[#Panoramica]]; ad esempio:
  
* SSID
+
# dhcpcd ''interfaccia''
* 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.
+
==Connessione tramite wpa_passphrase==
  
'''Primi ritocchi'''
+
Questo metodo consente di collegarsi rapidamente ad una rete di cui si conosce già il SSID tramite ''wpa_passphrase'', un tool a riga di comando che genera un file di configurazione minimale per ''wpa_supplicant''.
  
È ora possibile procedere con la creazione di un network block nel file di configurazione:
+
Ad esempio:
  
{{hc|wpa_supplicant.conf|
+
{{hc|$ wpa_passphrase MIOSSID passphrase|2=
<nowiki>
+
 
network={
 
network={
        ssid="mywireless_ssid"
+
    ssid="MIOSSID"
        psk="secretpassphrase"
+
    #psk="passphrase"
        # parametri aggiuntivi (proto, key_mgmt, etc.)
+
    psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
 
}
 
}
</nowiki>}}
+
}}
  
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.
+
È quindi possibile associarsi alla rete tramite ''wpa_passphrase'' e ''wpa_supplicant'' in questo modo:
  
{{Attenzione|Ci si ricordi di usare i doppi apici alle voci ssid e psk!}}
+
# wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase SSID passphrase)
  
'''Passphrase e PSK'''
+
{{Nota|A causa della sostituzione di processo, '''non è possibile''' eseguire il comando di cui sopra tramite [[Sudo (Italiano)|sudo]], bensì è necessario usare una shell di root. Si veda anche [[Help:Reading#Regular user or root]].}}
  
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.
+
{{Suggerimento|
 +
* Utilizzare i doppi apici se l'input contiene spazi. Ad esempio: {{ic|"secret passphrase"}}.
 +
* Per scoprire il nome della propria interfaccia di rete wireless, si esegua il comando {{ic|ip link}}.
 +
* Alcune passphrase particolarmente complesse potrebbero dover venire immesse scrivendole prima in un file: {{ic|wpa_passphrase MIOSSID < passphrase.txt}}, o passando la stringa: {{ic|wpa_passphrase MIOSSID <<< "passphrase"}}. }}
  
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]}}.
+
Infine, non resta che ottenere un indirizzo IP, come indicato nella sezione [[#Panoramica]]; ad esempio:
  
* Un esempio:
+
# dhcpcd ''interfaccia''
  
# wpa_passphrase mywireless_ssid "secretpassphrase"
+
==Utilizzo avanzato==
  
Il comando dovrebbe generare il seguente network block:
+
Per reti di varia complessità, che utilizzino [[wikipedia:Extensible_Authentication_Protocol|EAP]] o altro, è consigliabile utilizzare un file di configurazione personalizzato.
 +
Per una panoramica del file di configurazione completa di esempi, si veda [http://linux.die.net/man/5/wpa_supplicant.conf wpa_supplicant.conf(5)]; per dettagli su tutte le opzioni di configurazione supportate si veda il file di configurazione d'esempio {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.
  
network={
+
===Configurazione===
        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 {{ic|#}} commenta la linea relativa alla passphrase, dal momento che utilizzeremo la PSK per la connessione.
+
Come già evidenziato nel paragrafo [[#Connessione tramite wpa_passphrase]], è possibile generare un file di configurazione di base con:
  
{{Nota|La PSK esadecimale non deve essere inclusa tra doppi apici.}}
+
# wpa_passphrase MIOSSID passphrase > /etc/wpa_supplicant/esempio.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}}:
+
Quanto sopra creerà un solo blocco {{ic|network}}. Un file di configurazione con le opzioni più comuni potrebbe essere simile a questo:
  
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf
+
{{hc|/etc/wpa_supplicant/esempio.conf|2=<nowiki>
 +
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
 +
update_config=1
 +
fast_reauth=1
 +
ap_scan=1
 +
network={
 +
    ssid="MIOSSID"
 +
    #psk="passphrase"
 +
    psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
 +
}</nowiki>
 +
}}
  
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.
+
È possibile aggiungere ulteriori blocchi {{ic|network}} manualmente o utilizzando ''wpa_cli'', come mostrato al paragrafo [[#Connessione tramite wpa_cli]]. Per utilizzare quest'ultimo, sarà necessario impostare una interfaccia di controllo tramite l'opzione {{ic|ctrl_interface}}. Specificare {{ic|1=GROUP=wheel}} consente a tutti gli utenti membri di quel gruppo di utilizzare ''wpa_cli''. Si aggiunga inoltre {{ic|1=update_config=1}}, per consentire al programma di salvare eventuali modifiche in {{ic|esempio.conf}}.
 +
Le opzioni {{ic|1=fast_reauth=1}} e {{ic|1=ap_scan=1}} vengono attivate globalmente: se servano o meno dipende dal tipo di rete alla quale ci si connette.
 +
Se invece si ha la necessità di specificare ulteriori opzioni globali, copiarle semplicemente da {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.
  
'''Opzioni del network block'''
+
È anche possibile utilizzare {{ic|wpa_cli set}} per visualizzare il contenuto delle opzioni o modificarlo. Possono essere inseriti più blocchi {{ic|network}} nel file di configurazione: il supplicant gestirà autonomamente l'associazione e il roaming tra di essi, connettendosi di default al blocco con il segnale più forte, benchè sia possibile utilizzare l'opzione {{ic|1=priority=}} per influenzarne il comportamento.
  
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.  
+
Uno dei vantaggi dell'utilizzare un file di configurazione personalizzato in {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} è che quest'ultimo viene letto di default da [[dhcpcd]]. Nel caso si scelga di utilizzarlo, è consigliabile fare un backup dell'originale ed eliminare i blocchi {{ic|network}} d'esempio presenti. In caso contrario non ci si sorprenda se la propria interfaccia wireless tenta di collegarsi ai blocchi contenuti nel file di configurazione. Si noti inoltre che eventuali modifiche al file di configurazione dovranno essere [[Pacnew and Pacsave Files (Italiano)|aggregate]].
  
Ad esempio, è possibile aggiungere:
+
{{Suggerimento|Per configurare un blocco {{ic|network}} per una rete con ''SSID'' nascosto, che quindi non verrà rilevato durante una scansione, si utilizzi l'opzione {{ic|1=scan_ssid=1}}.}}
  
proto=WEP WPA
+
===Connessione===
  
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.
+
====Manuale====
  
Se il SSID è nascosto, si aggiunga la seguente opzione al network block:
+
Si esegua il comando ''wpa_supplicant'', i cui argomenti più comuni sono elencati di seguito:
  
scan_ssid=1
+
* {{ic|-B}} - Esegue in background.
 +
* {{ic|-c nomefile}} - Percorso al file di configurazione.
 +
* {{ic|-i interfaccia}} - Interfaccia da configurare.
 +
* {{ic|-D driver}} - Opzionale, specifica il driver da utilizzare. Per un elenco di quelli supportati si veda {{ic|wpa_supplicant -h}}.
 +
** {{ic|nl80211}} è lo standard corrente, ma non è supportato da tutti i chip wireless.
 +
** {{ic|wext}} è deprecato, ma più supportato.
  
Se è necessario connettersi a più reti, si definisca un altro network block nello stesso file. È possibile specificare la priorità per ognuno di essi:
+
Si veda [http://linux.die.net/man/8/wpa_supplicant wpa_supplicant(8)] per un elenco completo dei parametri.
  
priority=17
+
Esempio:
  
Si cambi la priorità a piacere, ricordandosi che i numeri più grandi avranno la precedenza.
+
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf
  
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.
 
  
'''Opzioni globali'''
+
È ora possibile ottenere un indirizzo IP, come indicato nella sezione [[#Panoramica]]; ad esempio:
Sarà infine necessario specificare le opzioni globali. Aggiungerle in testa al proprio {{ic|/etc/wpa_supplicant.conf}} con il proprio editor preferito. La seguente linea è obbligatoria:
+
  
  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
+
  # dhcpcd ''interfaccia''
  
{{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".}}
+
{{Suggerimento|''dhcpcd'' dispone di un hook per il lancio automatico di ''wpa_supplicant''. Si veda a tal proposito [[dhcpcd#10-wpa_supplicant]].}}
  
Sono disponibili molti parametri opzionali (si legga {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}
+
====All'avvio (systemd)====
  
ap_scan=0
 
fast_reauth=1
 
  
{{Nota|Le proprie informazioni di rete sarano immagazzinate in plain text, ed è pertanto consigliabile cambiare i permessi del file {{ic|/etc/wpa_supplicant.conf}} appena creato (es: {{ic|chmod 600 /etc/wpa_supplicant.conf}} per renderlo leggibile solamente a root), a seconda di quanto si è attenti alla propria sicurezza.}}
+
''wpa_supplicant'' fornisce diversi servizi per l'avvio:
  
'''Esempio completo'''
+
* {{ic|wpa_supplicant.service}} - utilizza [[D-Bus]], raccomandato per gli utilizzatori di [[NetworkManager (Italiano)|NetworkManager]].
 +
* {{ic|wpa_supplicant@.service}} - accetta il nome dell'interfaccia come parametro ed avvia il demone ''wpa_supplicant'' su quest'ultima. Legge il file di configurazione {{ic|/etc/wpa_supplicant/wpa_supplicant-''interfaccia''.conf}}.
 +
* {{ic|wpa_supplicant-nl80211@.service}} - anche questo servizio è specifico per interfaccia, ma forza l'utlilizzo del driver {{ic|nl80211}}. Il percorso del file di configurazione è {{ic|/etc/wpa_supplicant/wpa_supplicant-nl80211-''interfaccia''.conf}}.
 +
* {{ic|wpa_supplicant-wired@.service}} - specifico per interfaccia, utilizza il driver {{ic|wired}}. Il file di configurazione si trova in {{ic|/etc/wpa_supplicant/wpa_supplicant-wired-interface.conf}}
  
{{hc|
+
Per abilitare l'interfaccia wireless al boot, si abiliti uno dei servizi di cui sopra.
wpa_supplicant.conf|
+
<nowiki>
+
ctrl_interface = DIR=/var/run/wpa_supplicant GROUP=wheel
+
fast_reauth = 1
+
ap_scan = 1
+
  
network ={
+
Ad esempio:
    ssid    = "mySSID"
+
    proto    = RSN
+
    key_mgmt = WPA-EAP
+
    pairwise = TKIP CCMP
+
    auth_alg = OPEN
+
    group    = TKIP
+
    eap      = PEAP
+
    identity = "myUsername"
+
    password = "********"
+
}
+
</nowiki>
+
}}
+
  
Configurazioni più sofisticate, come l'autenticazione tramite server RADIUS o EAPOL sono descritte in dettaglio nella pagina di manuale {{ic|wpa_supplicant.conf}} ({{ic|man wpa_supplicant.conf}}). Ci si ricordi di leggere anche {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, poichè tali configurazioni esulano dallo scopo di questo documento.
+
# systemctl enable wpa_supplicant@''interfaccia''
  
====Connessione====
+
È ora possibile [[systemd (Italiano)#Usare le unità|abilitare]] un servizio per ottenere un indirizzo IP per una particolare ''interfaccia'', come indicato nella sezione [[#Panoramica]]. Ad esempio:
  
È ora possibile provare a connettersi manualmente.
+
# systemctl enable dhcpcd@''interfaccia''
  
Innanzitutto, si attivi la propria interfaccia Wi-Fi. In questo esempio, si utilizzerà l'interfaccia ''wlan0''.
+
{{Suggerimento|''dhcpcd'' dispone di un hook per il lancio automatico di ''wpa_supplicant''. Si veda a tal proposito [[dhcpcd#10-wpa_supplicant]].}}
  
# ip link set wlan0 up
+
===Action script per wpa_cli===
  
Tipicamente, si dovrebbe essere in grado di utilizzare il driver '''W'''ireless '''EXT'''ensions per {{ic|wpa_supplicant}}. Se ciò non dovesse funzionare, potrebbe essere necessario cercare informazioni su come connettersi con il proprio adattatore wireless.
+
È possibile lanciare ''wpa_cli'' come demone e fargli eseguire degli script basati su eventi provenienti da ''wpa_supplicant''. Sono supportate due tipologie di eventi: {{ic|CONNECTED}} e {{ic|DISCONNECTED}}. Alcune [[environment variables|variabili d'ambiente]] possono essere utilizzate negli script; si consulti [http://linux.die.net/man/8/wpa_cli wpa_cli(8)] per ulteriori informazioni.
  
Si esegua il seguente comando come root:
+
L'esempio che segue utilizza le [[desktop notifications|notifiche del desktop]] per informare l'utente sull'attivazione degli eventi.
 
+
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
+
 
+
Il comando di cui sopra indica a {{ic|wpa_supplicant}} di utilizzare la propria configurazione hardware di default (WEXT - Linux '''W'''ireless '''EXT'''ensions) ed i associarsi con il SSID specificato nel file {{ic|/etc/wpa_supplicant.conf}} utilizzando il dispositivo ''wlan0'' e spostando il processo in background ({{ic|-B}}). Per un output più prolisso, si aggiungano i parametri {{ic|-d}} o {{ic|-dd}} (debug). È possibile trovare ulteriori esempi a [http://www.examplenow.com/wpa_supplicant/ questo] indirizzo.
+
 
+
Nell'output a console, dovrebbe apparire una linea contenente '''Associated:''', seguita da un indirizzo MAC. Ora si avrà bisogno di un indirizzo IP.
+
 
+
{{Nota|Se non si desidera modificare il file {{ic|/etc/wpa_supplicant.conf}} (ad esempio se si sta installando Arch), è possibile passare l'output di {{ic|wpa_passphrase}} direttamente a {{ic|wpa_supplicant}}:
+
{{bc|wpa_passphrase essid pass <nowiki>|</nowiki> wpa_supplicant -B -i wlan0 -c /dev/stdin}} }}
+
 
+
Come root, si esegua:
+
 
+
# dhcpcd wlan0
+
 
+
{{Nota|Non si richieda immediatamente un indirizzo IP! È necessario aspettare per assicurarsi che l'associazione con l'Access Point sia avvenuta con successo. Se si sta scrivendo uno script, si utilizzi {{ic|sleep 10s}} per attendere 10 secondi.}}
+
 
+
Si verifichi quindi che l'interfaccia abbia ricevuto un indirizzo IP usando il pacchetto {{Pkg|iproute}}:
+
  
 
{{bc|
 
{{bc|
<nowiki>
+
#!/bin/bash
# ip addr show wlan0
+
 
+
  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 quello sopra, ci si è connessi alla rete.
+
 
+
Si noti che l'intero procedimento ''non'' è permanente, il che significa che al prossimo riavvio sarà necessario ripetere nuovamente i comandi.
+
 
+
Ci sono varie altrnative per ottenere un setup autometico della propria rete:
+
 
+
* Scrivere tutti i comandi necessari in uno script, ed eseguirlo automaticamente al boot inserendolo in {{ic|/etc/rc.local}}.
+
** Script di shell con funzionalità amministrative possono essere salvati in {{ic|/usr/local/bin}}.
+
* Usare tool di terze parti per la gestione della rete. È possibile utilizzare gli script forniti dal pacchetto {{Pkg|netcfg2}} per ottenere una configurazione permanente ed accedere alla rete all'avvio della macchina.
+
Si può inoltre utilizzare un'interfaccia grafica non in vasiva come [[Wicd (Italiano)|Wicd]] o i profili di rete forniti da [[Netcfg (Italiano)|Netcfg]].
+
 
+
===wpa_gui e wpa_cli===
+
 
+
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.}}
+
 
+
====Action script====
+
 
+
Si scriva uno script simile al seguente:
+
  
{{hc|
+
case "$2" in
~/libexec/wpa_cli-action.sh|
+
    CONNECTED)
<nowiki>
+
        notify-send "WPA supplicant: connection established";
case $2 in
+
        ;;
CONNECTED)
+
    DISCONNECTED)
dhcpcd -x $1 >/dev/null
+
        notify-send "WPA supplicant: connection lost";
dhcpcd $1 >/dev/null
+
        ;;
;;
+
 
esac
 
esac
 
</nowiki>
 
</nowiki>
 
}}
 
}}
  
Lo si renda eseguibile e si lanci {{ic|wpa_supplicant}} con il file di configurazione predefinito:
+
Ricordarsi di rendere eseguibile lo script, quindi utilizzare lo switch {{ic|-a}} per passare lo script a ''wpa_cli''.
  
  # wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+
  $ wpa_cli -a ''percorso allo script''
 
+
{{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
+
 
+
===Avvio automatico al boot===
+
 
+
Si noti che le procedure sopra descritte non sono permanenti, il che significa che al prossimo riavvio si dovranno reinserire tutti i comandi dati sinora. Di seguito sono presentati alcuni metodi per rendere l'attivazione di WPA Supplicant permanente.
+
 
+
====Usando systemd====
+
 
+
La seguente procedura è composta di due fasi: nella prima si abiliterà il servizio di wpa_supplicant e nella seconda verrà attivato dhcpcd sull'interfaccia wireless in uso
+
 
+
=====Fase 1=====
+
 
+
Si copi il proprio file di configurazione e si includa il nome della propria interfaccia wireless nello stesso (qui viene usato {{ic|wlan0}}):
+
 
+
# cp /etc/wpa_supplicant/wpa_supplicant.conf  etc/wpa_supplicant/wpa_supplicant-wlan0.conf
+
 
+
Si abiliti il servizio di systemd:
+
 
+
# systemctl enable wpa_supplicant@wlan0.service
+
 
+
Si avvii il servizio:
+
 
+
# systemctl start wpa_supplicant@wlan0.service
+
 
+
Si controlli lo stato del servizio:
+
 
+
# systemctl status wpa_supplicant@wlan0.service
+
 
+
La voce {{ic|Active:"}} dovrebbe avere valore {{ic|active (running)}}.
+
 
+
=====Fase 2=====
+
 
+
Probabilmente si dispone già di un servizio dhcpcd per eth0, ma sarà necessario aggiungerne uno anche per la nostra interfaccia wireless:
+
 
+
Si abiliti il servizio di systemd:
+
 
+
# systemctl enable dhcpcd@wlan0.service
+
 
+
Si avvii il servizio:
+
 
+
# systemctl start dhcpcd@wlan0.service
+
 
+
Si controlli lo stato del servizio:
+
 
+
# systemctl status dhcpcd@wlan0.service
+
 
+
 
+
La voce {{ic|Active:"}} dovrebbe avere valore {{ic|active (running)}}.
+
 
+
Al prossimo riavvio l'adattatore wireless dovrebbe attivarsi automaticamente, associandosi alla rete wireless prescelta e richiedendo un indirizzo IP senza alcun intervento manuale.
+
 
+
Per verificare che tutto sia in ordine si esegua:
+
 
+
# ip a
+
 
+
===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 attivi il servizio net-profiles, per falo partire al boot usando {{Pkg|systemd}}:
+
 
+
# systemctl enable netcfg@wpa_suppl
+
 
+
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]].
+
 
+
===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==
 
==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.
+
===Driver nl80211 non supportato su alcuni modelli===
  
Mentre si controlla il log, si cerchino voci simili a questa:
+
Alcune schede particolarmente vecchie potrebbero non funzionare con il driver {{ic|nl80211}} e ''wpa_supplicant'' potrebbe mostare il seguente messaggio:
  
  ioctl[QUALCOSA]: Operation not supported
+
  Successfully initialized wpa_supplicant
 +
nl80211: Driver does not support authentication/association or connect commands
 +
wlan0: Failed to initialize driver interface
  
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.
+
che indica il mancato supporto al driver {{ic|nl80211}}. In questo caso è possibile provare ad utilizzare il driver obsoleto {{ic|wext}}:
  
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.
+
# wpa_supplicant -B -i wlan0 '''-D wext''' -c /etc/wpa_supplicant/example.conf
  
===Fallback: ricompilazione di wpa_supplicant===
+
Se il comando di cui sopra funziona e si desidera utilizzare [[systemd (Italiano)|systemd]] per gestire la connessione wireless, è necessario [[systemd#Editing provided units|modificare]] il servizio {{ic|wpa_supplicant@.service}} e modificare di conseguenza il parametro {{ic|ExecStart}}:
  
Ci si procuri una copia del sorgente di {{ic|wpa_supplicant}} dalla relativahomepage o usando [[ABS (Italiano)|ABS]]. Una volta scaricato ed estratto il tarball, si controlli il contenuto del file {{ic|.config}} (sì, è nascosto!). La sintassi è simile a quella di un file di configurazione del kernel; solo più in piccolo.
+
{{hc|/etc/systemd/system/wpa_supplicant@.service.d/wext.conf|2=
 
+
[Service]
Si cerchino le sezioni chiamate {{ic|CONFIG_DRIVER_''NOMEDRIVER''}} e si scelga se abilitarle o meno, a seconda del driver che si intende utilizzare. Si faccia attenzione durante la scelta delle opzioni, poichè sarà necessario speficiare il percorso al sorgende dei propri driver wireless per compilare correttamente i componenti di associazione di basso livello.
+
ExecStart=
 
+
ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I '''-Dwext'''
Alcuni adattatori basati su chipset Atheros, potrebbero richiedere la compilazione di {{ic|wpa_supplicant}} utilizzando l'ultima release dei driver  {{ic|madwifi-svn}}. Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione:
+
}}
 
+
'''esempio con driver madwifi''': Si modifichino le seguenti linee nel file di configurazione, assumendo che si sia compilato madwifi tramite ABS e che il codice sorgente della build risieda 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
+
 
+
Una volta terminata la configurazione, si proceda con {{ic|makepkg}} come al solito.
+
 
+
===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.
+
 
+
La mia scheda wireless è:
+
 
+
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
+
 
+
===Errore di associazione al boot con netcfg===
+
 
+
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>}}:
+
 
+
TIMEOUT=30
+
 
+
Si riavvii per applicare i cambiamenti.
+
 
+
{{Nota|{{ic|1=TIMEOUT=30}} potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.}}
+
 
+
===La connessione wireless cade spesso===
+
  
Se la propria connessione cade spesso e dmesg mostra questo messaggio:
+
==Link utili==
  
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
 
  
una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.
+
* [http://hostap.epitest.fi/wpa_supplicant/ Homepage di WPA Supplicant]
 +
* [https://gist.github.com/buhman/7162560 Esempi per l'utilizzo di wpa_cli]
 +
* [http://linux.die.net/man/8/wpa_supplicant wpa_supplicant(8)]
 +
* [http://linux.die.net/man/5/wpa_supplicant.conf wpa_supplicant.conf(5)]
 +
* [http://linux.die.net/man/8/wpa_cli wpa_cli(8)]
 +
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant Documentazione di wpa_supplicant]

Latest revision as of 17:06, 6 August 2016

wpa_supplicant è un Supplicant WPA multipiattaforma con supporto a WEP, WPA e WPA2 (IEEE 802.11i / RSN (Robust Secure Network)) adatto all'uso con PC desktop, portatili e 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 il pacchetto wpa_supplicant.

È inoltre possibile installare wpa_supplicant_gui che fornisce wpa_gui, un frontend grafico per wpa_supplicant.

Panoramica

Affinchè wpa_supplicant possa connettersi ad una rete wireless, dovrà prima essere autenticato da un WPA authenticator attraverso l'inserimento delle credenziali corrette.

Una volta che l'associazione con l'access point è completa è possibile collegarsi alla rete ottenendo un indirizzo IP, manualmente tramite la suite iproute2 o tramite programmi appositi, come systemd-networkd o dhcpcd, per l'assegnazione automatica di un indirizzo IP tramite DHCP. Si vedano anche gli articoli relativi ad interfacce wireless[broken link: invalid section] o via cavo.

Connessione tramite wpa_cli

Questo metodo consente di effettuare una scansione delle reti disponibili utilizzando wpa_cli, un tool a riga di comando che è in grado di configurare wpa_supplicant a runtime. Si veda wpa_cli(8) per ulteriori informazioni.

Per utilizzare wpa_cli, sarà necessario specificare un'interfaccia di controllo per wpa_supplicant e dotarla dei permessi per modificare il relativo file di configurazione.

Si crei quindi un file di configurazione minimale:

/etc/wpa_supplicant/esempio.conf
ctrl_interface=/run/wpa_supplicant
update_config=1

Si avvii wpa_supplicant come segue:

# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/esempio.conf
Suggerimento: Per scoprire il nome della propria interfaccia di rete wireless, si esegua il comando ip link.

Si esegua:

# wpa_cli

Verrà visualizzato un prompt interattivo (>) che dispone di tab completion e descrizione dei comandi completati.

Suggerimento: Il percorso predefinito del socket di controllo è /var/run/wpa_supplicant/. È possibile impostare un percorso personalizzato tramite il parametro -p, in modo che corrisponda a quanto contenuto nel file di configurazione. Si può altresì specificare l'interfaccia da configurare con l'opzione -i. Se non specificata, wpa_supplicant sceglierà la prima interfaccia disponibile.

Si utilizzino i comandi scan e scan_results per vedere le reti disponibili:

> scan
OK
<3>CTRL-EVENT-SCAN-RESULTS
> scan_results
bssid / frequency / signal level / flags / ssid
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MIOSSID
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ALTROSSID

Per associarsi con MIOSSID si aggiunga la rete, si specifichino le credenziali e la si abiliti:

> add_network
0
> set_network 0 ssid "MIOSSID"
> 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=]

Se il SSID a cui ci si connette non utilizza l'autenticazione tramite password sarà necessario configurare la rete come aperta, sostituendo il comando set_network 0 psk "passphrase" con set_network 0 key_mgmt NONE.

Nota:
  • Ogni rete viene identificata da un numero crescente: la prima avrà pertanto indice 0.
  • La PSK viene ottenuta dalla stringa "passphrase" immessa sopra e compresa tra doppi apici, come mostrato dal comando wpa_passphrase. In ogni caso è possibile immettere la PSK direttamente passandola al comando psk senza raccoglierla tra doppi apici.

Si salvi infine la rete nel file di configurazione:

>save_config
OK

Una volta che l'assiociazione è stata effettuata, non resta che ottenere un indirizzo IP, come indicato nella sezione #Panoramica; ad esempio:

# dhcpcd interfaccia

Connessione tramite wpa_passphrase

Questo metodo consente di collegarsi rapidamente ad una rete di cui si conosce già il SSID tramite wpa_passphrase, un tool a riga di comando che genera un file di configurazione minimale per wpa_supplicant.

Ad esempio:

$ wpa_passphrase MIOSSID passphrase
network={
    ssid="MIOSSID"
    #psk="passphrase"
    psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}

È quindi possibile associarsi alla rete tramite wpa_passphrase e wpa_supplicant in questo modo:

# wpa_supplicant -B -i interfaccia -c <(wpa_passphrase SSID passphrase)
Nota: A causa della sostituzione di processo, non è possibile eseguire il comando di cui sopra tramite sudo, bensì è necessario usare una shell di root. Si veda anche Help:Reading#Regular user or root.
Suggerimento:
  • Utilizzare i doppi apici se l'input contiene spazi. Ad esempio: "secret passphrase".
  • Per scoprire il nome della propria interfaccia di rete wireless, si esegua il comando ip link.
  • Alcune passphrase particolarmente complesse potrebbero dover venire immesse scrivendole prima in un file: wpa_passphrase MIOSSID < passphrase.txt, o passando la stringa: wpa_passphrase MIOSSID <<< "passphrase".

Infine, non resta che ottenere un indirizzo IP, come indicato nella sezione #Panoramica; ad esempio:

# dhcpcd interfaccia

Utilizzo avanzato

Per reti di varia complessità, che utilizzino EAP o altro, è consigliabile utilizzare un file di configurazione personalizzato. Per una panoramica del file di configurazione completa di esempi, si veda wpa_supplicant.conf(5); per dettagli su tutte le opzioni di configurazione supportate si veda il file di configurazione d'esempio /etc/wpa_supplicant/wpa_supplicant.conf.

Configurazione

Come già evidenziato nel paragrafo #Connessione tramite wpa_passphrase, è possibile generare un file di configurazione di base con:

# wpa_passphrase MIOSSID passphrase > /etc/wpa_supplicant/esempio.conf

Quanto sopra creerà un solo blocco network. Un file di configurazione con le opzioni più comuni potrebbe essere simile a questo:

/etc/wpa_supplicant/esempio.conf
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
update_config=1
fast_reauth=1
ap_scan=1
network={
    ssid="MIOSSID"
    #psk="passphrase"
    psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}

È possibile aggiungere ulteriori blocchi network manualmente o utilizzando wpa_cli, come mostrato al paragrafo #Connessione tramite wpa_cli. Per utilizzare quest'ultimo, sarà necessario impostare una interfaccia di controllo tramite l'opzione ctrl_interface. Specificare GROUP=wheel consente a tutti gli utenti membri di quel gruppo di utilizzare wpa_cli. Si aggiunga inoltre update_config=1, per consentire al programma di salvare eventuali modifiche in esempio.conf. Le opzioni fast_reauth=1 e ap_scan=1 vengono attivate globalmente: se servano o meno dipende dal tipo di rete alla quale ci si connette. Se invece si ha la necessità di specificare ulteriori opzioni globali, copiarle semplicemente da /etc/wpa_supplicant/wpa_supplicant.conf.

È anche possibile utilizzare wpa_cli set per visualizzare il contenuto delle opzioni o modificarlo. Possono essere inseriti più blocchi network nel file di configurazione: il supplicant gestirà autonomamente l'associazione e il roaming tra di essi, connettendosi di default al blocco con il segnale più forte, benchè sia possibile utilizzare l'opzione priority= per influenzarne il comportamento.

Uno dei vantaggi dell'utilizzare un file di configurazione personalizzato in /etc/wpa_supplicant/wpa_supplicant.conf è che quest'ultimo viene letto di default da dhcpcd. Nel caso si scelga di utilizzarlo, è consigliabile fare un backup dell'originale ed eliminare i blocchi network d'esempio presenti. In caso contrario non ci si sorprenda se la propria interfaccia wireless tenta di collegarsi ai blocchi contenuti nel file di configurazione. Si noti inoltre che eventuali modifiche al file di configurazione dovranno essere aggregate.

Suggerimento: Per configurare un blocco network per una rete con SSID nascosto, che quindi non verrà rilevato durante una scansione, si utilizzi l'opzione scan_ssid=1.

Connessione

Manuale

Si esegua il comando wpa_supplicant, i cui argomenti più comuni sono elencati di seguito:

  • -B - Esegue in background.
  • -c nomefile - Percorso al file di configurazione.
  • -i interfaccia - Interfaccia da configurare.
  • -D driver - Opzionale, specifica il driver da utilizzare. Per un elenco di quelli supportati si veda wpa_supplicant -h.
    • nl80211 è lo standard corrente, ma non è supportato da tutti i chip wireless.
    • wext è deprecato, ma più supportato.

Si veda wpa_supplicant(8) per un elenco completo dei parametri.

Esempio:

# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf


È ora possibile ottenere un indirizzo IP, come indicato nella sezione #Panoramica; ad esempio:

# dhcpcd interfaccia
Suggerimento: dhcpcd dispone di un hook per il lancio automatico di wpa_supplicant. Si veda a tal proposito dhcpcd#10-wpa_supplicant.

All'avvio (systemd)

wpa_supplicant fornisce diversi servizi per l'avvio:

  • wpa_supplicant.service - utilizza D-Bus, raccomandato per gli utilizzatori di NetworkManager.
  • wpa_supplicant@.service - accetta il nome dell'interfaccia come parametro ed avvia il demone wpa_supplicant su quest'ultima. Legge il file di configurazione /etc/wpa_supplicant/wpa_supplicant-interfaccia.conf.
  • wpa_supplicant-nl80211@.service - anche questo servizio è specifico per interfaccia, ma forza l'utlilizzo del driver nl80211. Il percorso del file di configurazione è /etc/wpa_supplicant/wpa_supplicant-nl80211-interfaccia.conf.
  • wpa_supplicant-wired@.service - specifico per interfaccia, utilizza il driver wired. Il file di configurazione si trova in /etc/wpa_supplicant/wpa_supplicant-wired-interface.conf

Per abilitare l'interfaccia wireless al boot, si abiliti uno dei servizi di cui sopra.

Ad esempio:

# systemctl enable wpa_supplicant@interfaccia

È ora possibile abilitare un servizio per ottenere un indirizzo IP per una particolare interfaccia, come indicato nella sezione #Panoramica. Ad esempio:

# systemctl enable dhcpcd@interfaccia
Suggerimento: dhcpcd dispone di un hook per il lancio automatico di wpa_supplicant. Si veda a tal proposito dhcpcd#10-wpa_supplicant.

Action script per wpa_cli

È possibile lanciare wpa_cli come demone e fargli eseguire degli script basati su eventi provenienti da wpa_supplicant. Sono supportate due tipologie di eventi: CONNECTED e DISCONNECTED. Alcune variabili d'ambiente possono essere utilizzate negli script; si consulti wpa_cli(8) per ulteriori informazioni.

L'esempio che segue utilizza le notifiche del desktop per informare l'utente sull'attivazione degli eventi.

#!/bin/bash

case "$2" in
    CONNECTED)
        notify-send "WPA supplicant: connection established";
        ;;
    DISCONNECTED)
        notify-send "WPA supplicant: connection lost";
        ;;
esac
</nowiki>

Ricordarsi di rendere eseguibile lo script, quindi utilizzare lo switch -a per passare lo script a wpa_cli.

$ wpa_cli -a percorso allo script

Risoluzione dei problemi

Driver nl80211 non supportato su alcuni modelli

Alcune schede particolarmente vecchie potrebbero non funzionare con il driver nl80211 e wpa_supplicant potrebbe mostare il seguente messaggio:

Successfully initialized wpa_supplicant
nl80211: Driver does not support authentication/association or connect commands
wlan0: Failed to initialize driver interface

che indica il mancato supporto al driver nl80211. In questo caso è possibile provare ad utilizzare il driver obsoleto wext:

# wpa_supplicant -B -i wlan0 -D wext -c /etc/wpa_supplicant/example.conf

Se il comando di cui sopra funziona e si desidera utilizzare systemd per gestire la connessione wireless, è necessario modificare il servizio wpa_supplicant@.service e modificare di conseguenza il parametro ExecStart:

/etc/systemd/system/wpa_supplicant@.service.d/wext.conf
[Service]
ExecStart=
ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I -Dwext

Link utili