Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
m (systemd)
Line 9: Line 9:
 
{{Related articles end}}
 
{{Related articles end}}
  
[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.
+
[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.
  
 
==Installazione==
 
==Installazione==
Line 15: Line 15:
 
Si installi {{Pkg|wpa_supplicant}} dai [[Official Repositories (Italiano)|repository ufficiali]].
 
Si installi {{Pkg|wpa_supplicant}} dai [[Official Repositories (Italiano)|repository ufficiali]].
  
È inoltre possibile installare {{Pkg|wpa_supplicant_gui}}; un frontend grafico per {{ic|wpa_supplicant}} che utilizza il toolkit {{Pkg|qt4}}.
+
È inoltre possibile installare {{Pkg|wpa_supplicant_gui}} che fornisce ''wpa_gui'', un frontend grafico per ''wpa_supplicant''.
  
==Avvio==
+
==Panoramica==
  
Questo paragrafo descrive i metodi più comuni per l'avvio di ''wpa_supplicant''; si scelga quello più adatto alle proprie esigenze.
+
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'autenticazione ha avuto successo, sarà possibile connettersi alla rete [[Configuring_Network_(Italiano)#Configurare_l.27indirizzo_IP|ottenendo un indirizzo IP]].
  
===systemd===
+
==Connessione tramite wpa_cli==
  
''wpa_supplicant'' fornisce diversi servizi per l'avvio:
+
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.
 +
 
 +
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.
  
* {{ic|wpa_supplicant.service}} - utilizza [[D-Bus|D-Bus]], raccomandato per gli utilizzatori di [[NetworkManager (Italiano)|NetworkManager]].
+
Si crei quindi un file di configurazione minimale:
* {{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}} (si veda sotto). 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}}
 
  
===dhcpcd===
+
{{hc|/etc/wpa_supplicant/esempio.conf|2=
 +
ctrl_interface=/run/wpa_supplicant
 +
update_config=1
 +
}}
  
[[Configuring_Network_(Italiano)#Indirizzo_IP_dinamico|dhcpcd]] contiene un hook (abilitato di default) per l'avvio automatico di ''wpa_supplicant'' su tutte le interfacce wireless.
+
Si avvii ''wpa_supplicant'' come segue:
Quest'ultimo viene avviato solo se:
 
  
* Non vi è un altro processo di ''wpa_supplicant'' in ascolto su una determinata interfaccia.
+
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/esempio.conf
* Esiste un file di configurazione per ''wpa_supplicant''. ''dhcpcd'' controlla di default i percorsi {{ic|/etc/wpa_supplicant.conf}} e {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, ma è possibile impostare un percorso personalizzato inserendo {{ic|1=env wpa_supplicant_conf=''percorso_al_file_di_configurazione''}} in {{ic|/etc/dhcpcd.conf}}.
 
  
===Avvio manuale===
+
{{Suggerimento|Per scoprire il nome della propria interfaccia di rete wireless, si esegua il comando {{ic|ip link}}.}}
  
''wpa_supplicant'' accetta diversi parametri quando avviato a riga di comando; i più importanti sono:
+
Si esegua:
  
* {{ic|-B}} - esegue il demone in background
+
# wpa_cli
* {{ic|-c ''nomefile''}} - percorso al file di configurazione
 
* {{ic|-i ''interfaccia''}} - interfaccia sulla quale avviare il demone
 
  
Si consulti {{ic|man 8 wpa_supplicant}} per l'elenco completo degli argomenti.
+
Verrà visualizzato un prompt interattivo ({{ic|>}}) che dispone di tab completion e descrizione dei comandi completati.
L'utilizzo classico del comando è come segue:
 
  
# wpa_supplicant -B -i ''interfaccia'' -c ''file di configurazione''
+
{{Suggerimento|È possibile impostare manualmente il percorso al socket utilizzando l'opzione {{ic|-p}}. Si può altresì specificare l'interfaccia da configurare con l'opzione {{ic|-i}}. Se non specificata, ''wpa_supplicant'' sceglierà la prima interfaccia disponibile.}}
  
==Configurazione==
+
Si utilizzino i comandi {{ic|scan}} e {{ic|scan_results}} per vedere le reti disponibili:
  
{{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.
+
> scan
È quindi consigliabile effettuarne un backup, poichè i metodi per l'aggiunta automatica delle reti descritti sotto eliminano qualsiasi commento dal {{ic|wpa_supplicant.conf}}.
+
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
  
Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:
+
Per associarsi con {{ic|MIOSSID}} si aggiunga la rete, si specifichino le credenziali e la si abiliti:
  
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
+
> add_network
network={
+
0
    ssid="..."
+
> set_network 0 ssid "MIOSSID"
  }
+
> set_network 0 psk "passphrase"
</nowiki>}}
+
> enable_network 0
 +
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
 +
 
 +
{{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.}}
 +
 
 +
Si salvi infine la rete nel file di configurazione:
 +
 
 +
>save_config
 +
OK
 +
 
 +
Ora che l'associazione con l'access point è completa, si ottenga un indirizzo IP impostandolo manualmente tramite la suite [[Core utilities#ip|iproute2]] o tramite programmi appositi, come [[systemd-networkd]] o [[dhcpcd]]. Si veda anche [[Configuring_Network_(Italiano)#Configurare_l.27indirizzo_IP|ottenendo un indirizzo IP]].
 +
 
 +
Ad esempio:
 +
 
 +
# dhcpcd interfaccia
  
Una volta generato un file di configurazione è possibile [[#Avvio|avviare]] ''wpa_supplicant'' come spiegato nella sezione precedente e connettersi ad una rete wireless utilizzando un [[Configuring_Network_(Italiano)#Indirizzo_IP_Statico|IP statico]] o [[Configuring_Network_(Italiano)#Indirizzo_IP_dinamico|DHCP]].
+
==Connessione tramite wpa_passphrase==
  
===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''.
  
La configurazione per una data rete wireless può essere facilmente generata utilizzando il tool ''wpa_passphrase'' e aggiunta al file di configurazione. Questa configurazione è utile per connettersi a rete protette tramite passphrase. Ad esempio:
+
Ad esempio:
  
{{hc|$ wpa_passphrase ''essid'' ''passphrase''|2=
+
{{hc|$ wpa_passphrase MIOSSID passphrase|2=
 
network={
 
network={
  ssid=''essid''
+
    ssid="MIOSSID"
  #psk=''passphrase''
+
    #psk="passphrase"
  psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
+
    psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
 
}
 
}
 
}}
 
}}
  
Alcune passphrase insolitamente complesse potrebbero dover essere immesse prima in un file di testo:
+
È quindi possibile associarsi alla rete tramite ''wpa_passphrase'' e ''wpa_supplicant'' in questo modo:
 +
 
 +
# wpa_supplicant -B -i interface -c <(wpa_passphrase MIOSSID passphrase)
  
$ wpa_passphrase ''essid'' < ''passphrase.txt''
+
{{Suggerimento|
 +
* 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}}.}}
  
{{Suggerimento|È possibile combinare l'utilizzo di ''wpa_supplicant'' e ''wpa_passphrase'' per connettersi a quasi tutte le reti WPA2 (Personal):
+
Ora che l'associazione con l'access point è completa, si ottenga un indirizzo IP impostandolo manualmente tramite la suite [[Core utilities#ip|iproute2]] o tramite programmi appositi, come [[systemd-networkd]] o [[dhcpcd]]. Si veda anche [[Configuring_Network_(Italiano)#Configurare_l.27indirizzo_IP|ottenendo un indirizzo IP]].
  # wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase ''essid'' ''passphrase'')
+
 
}}
+
Ad esempio:
 +
 
 +
  # dhcpcd interfaccia
 +
 
 +
{{Attenzione|Se ''dhcpcd'' viene invocato senza specificare un'interfaccia, cercherà di ottenere un indirizzo IP su tutte le interfacce disponibili. Questo comportamento potrebbe causare l'impossibilità da parte di ''udev'' a rinominare le interfacce di rete.}}
 +
 
 +
==Utilizzo avanzato==
 +
 
 +
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}}.
 +
 
 +
===Configurazione===
  
===Specificare un driver===
+
Come già evidenziato nel paragrafo [[#Configurazione tramite wpa_passphrase]], è possibile generare un file di configurazione di base con:
  
Potrebbe essere necessario specificare il driver da utilizzare: per una lista di quelli supportati, eseguire il comando {{ic|wpa_supplicant -h}}.
+
# wpa_passphrase MIOSSID passphrase > /etc/wpa_supplicant/esempio.conf
  
* {{ic|nl80211}} è il driver standard attuale, ma non tutti i chip wireless lo supportano.
+
Quanto sopra creerà un solo blocco {{ic|network}}. Un file di configurazione con le opzioni più comuni potrebbe essere simile a questo:
* {{ic|wext}} è deprecato, ma maggiormente supportato.
 
  
Il driver viene specificato tramite il parametro {{ic|-D}}:
+
{{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>
 +
}}
  
# wpa_supplicant -B -i ''interfaccia'' -c ''file_di_configurazione'' -D ''driver''
+
È 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}}.
  
==Utilizzare wpa_cli==
+
È 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.
  
È possibile controllare ''wpa_supplicant'' manualmente a runtime, utilizzando il tool a riga di comando ''wpa_cli''. Per utilizzare 'wpa_cli'' è necessario che ''wpa_supplicant'' venga configurato per creare una interfaccia di controllo (socket) attraverso la variabile ''ctrl_interface'', da inserire nel relativo file di configurazione (percorso di default {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}).
+
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]].
  
Quanto segue creerà il socket in {{ic|/run/wpa_supplicant}} e permetterà ai membri del gruppo {{ic|wheel}} di accedervi:
+
{{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}}.}}
  
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
+
===Connessione===
  
È possibile modificare il file di configurazione di ''wpa_supplicant'' direttamente da ''wpa_cli'', il chè potrebbe essere utile nel caso si abbia la necessità di aggiungere nuove reti manualmente senza riavviare il demone ''wpa_supplicant''.
+
====Manuale====
Per abilitare questo comportamento, si imposti il valore della variabile ''update_config'' ad ''1'':
 
  
update_config=1
+
Si esegua il comando ''wpa_supplicant'', i cui argomenti più comuni sono elencati di seguito:
  
È necessario avviare ''wpa_supplicant'' prima di ''wpa_cli'' (si veda [[#Avvio]] per ulteriori informazioni). Si esegua poi:
+
* {{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.
  
$ wpa_cli
+
Si veda [http://linux.die.net/man/8/wpa_supplicant wpa_supplicant(8)] per un elenco completo dei parametri.
  
Una volta avviato, ''wpa_cli'' cercherà il socket di controllo specificato nel file di configurazione (oppure passato come argomento tramiete lo switch {{ic|-p}}). È inoltre possibile specificare l'interfaccia da configurare con lo switch {{ic|-i}}; in caso contrario verrà utilizzata la prima interfaccia trovata.
+
Esempio:
  
Una volta invocato ''wpa_cli'', verrà visualizzato un prompt interattivo ({{ic|>}}). Il prompt supporta l'autocompletamento e fornisce una descrizione dei comandi completati.
+
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf
  
===Aggiungere una nuova rete utilizzando wpa_cli===
+
Si ottenga quindi un indirizzo IP impostandolo manualmente tramite la suite [[Core utilities#ip|iproute2]] o tramite programmi appositi, come [[systemd-networkd]] o [[dhcpcd]]. Si veda anche [[Configuring_Network_(Italiano)#Configurare_l.27indirizzo_IP|ottenendo un indirizzo IP]].
  
Per effettuare una scansione delle reti disponibili si scriva {{ic|scan}} al prompt ({{ic|>}}). Verrà inviata una notifica una volta che la scansione è terminata:
+
Ad esempio:
  
  > scan
+
  # dhcpcd interfaccia
OK
+
 
<3>CTRL-EVENT-SCAN-RESULTS
+
{{Nota|''dhcpcd'' dispone di un hok che avvia ''wpa_supplicant'' implicitamente; si veda [[dhcpcd#10-wpa_supplicant]].}}
>
 
  
Si esegua quindi {{ic|scan_results}} per visualizzare i risultati:
+
====All'avvio (systemd)====
  
> 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'', passare il nome della rete a ''wpa_supplicant''.
+
''wpa_supplicant'' fornisce diversi servizi per l'avvio:
Ad ogni rete specificata nel file di configurazione viene assegnato un numero progressivo partendo da zero. Ogni nuova rete avrà quindi un numero assegnato di conseguenza.
 
  
> add_network
+
* {{ic|wpa_supplicant.service}} - utilizza [[D-Bus|D-Bus]], raccomandato per gli utilizzatori di [[NetworkManager (Italiano)|NetworkManager]].
0
+
* {{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}}
  
Si utilizzi questo numero per specificare quale rete si desidera conifigurare. In caso si stia aggiungendo una nuova rete, impostare anche il SSID, racchiuso da virgolette:
+
Per abilitare l'interfaccia wireless al boot, si abiliti uno dei servizi di cui sopra.
  
> set_network 0 psk "passkey"
+
Ad esempio:
OK
 
>
 
  
Si abiliti la rete:
+
# systemctl enable wpa_supplicant@''interfaccia''
  
> enable_network 0
+
Si abiliti inoltre [[dhcpcd]]:
OK
 
>
 
  
Si scrivano le modifiche sul file di configurazione:
+
# systemctl enable dhcpcd@interface
  
> save_config
+
{{Nota|''dhcpcd'' dispone di un hok che avvia ''wpa_supplicant'' implicitamente; si veda [[dhcpcd#10-wpa_supplicant]].}}
OK
 
>
 
  
===Action script===
+
===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: {{ic|CONNECTED}} e {{ic|DISCONNECTED}}. Alcune [[environment variables |variabili d'ambiente]] possono essere utilizzate negli script; si consulti {{ic| man 8 wpa_cli}} per ulteriori dettagli.
+
È 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.
  
 
L'esempio che segue utilizza le [[desktop notifications|notifiche del desktop]] per informare l'utente sull'attivazione degli eventi.
 
L'esempio che segue utilizza le [[desktop notifications|notifiche del desktop]] per informare l'utente sull'attivazione degli eventi.
Line 180: Line 217:
 
}}
 
}}
  
Ricordarsi di rendere eseguibile lo script, quindi si utilizzi lo switch {{ic|-a}} per passare lo script a ''wpa_cli''.
+
Ricordarsi di rendere eseguibile lo script, quindi utilizzare lo switch {{ic|-a}} per passare lo script a ''wpa_cli''.
  
 
  $ wpa_cli -a ''percorso allo script''
 
  $ wpa_cli -a ''percorso allo script''
  
==Link correlati==
+
==Link utili==
 +
 
  
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant documentazione di wpa_supplicant su kernel.org]
+
* [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]

Revision as of 18:18, 10 June 2014

zh-CN:WPA Supplicant

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 wpa_supplicant dai repository ufficiali.

È 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'autenticazione ha avuto successo, sarà possibile connettersi alla rete ottenendo un indirizzo IP.

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: È possibile impostare manualmente il percorso al socket utilizzando l'opzione -p. 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=]
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

Ora che l'associazione con l'access point è completa, si ottenga un indirizzo IP impostandolo manualmente tramite la suite iproute2 o tramite programmi appositi, come systemd-networkd o dhcpcd. Si veda anche ottenendo un indirizzo IP.

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 interface -c <(wpa_passphrase MIOSSID passphrase)
Suggerimento:
  • 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.

Ora che l'associazione con l'access point è completa, si ottenga un indirizzo IP impostandolo manualmente tramite la suite iproute2 o tramite programmi appositi, come systemd-networkd o dhcpcd. Si veda anche ottenendo un indirizzo IP.

Ad esempio:

# dhcpcd interfaccia
Attenzione: Se dhcpcd viene invocato senza specificare un'interfaccia, cercherà di ottenere un indirizzo IP su tutte le interfacce disponibili. Questo comportamento potrebbe causare l'impossibilità da parte di udev a rinominare le interfacce di rete.

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 #Configurazione 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

Si ottenga quindi un indirizzo IP impostandolo manualmente tramite la suite iproute2 o tramite programmi appositi, come systemd-networkd o dhcpcd. Si veda anche ottenendo un indirizzo IP.

Ad esempio:

# dhcpcd interfaccia
Nota: dhcpcd dispone di un hok che avvia wpa_supplicant implicitamente; si veda 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

Si abiliti inoltre dhcpcd:

# systemctl enable dhcpcd@interface
Nota: dhcpcd dispone di un hok che avvia wpa_supplicant implicitamente; si veda 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

Link utili