Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
(Sola gestione delle reti wireless)
(Installazione)
(41 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]]
  
{{Translateme}}
+
{{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}}
  
Una rete protetta da una chiave WEP (sia statica che dinamica), può essere facilmente compromessa da un utente malevolo. WPA risolve il problema della chiave statica, cambiandola dopo un certo numero di pacchetti trasmessi/ricevuti, oppure dopo un certo lasso di tempo: questa operazione è svolta da un demone che è strettamente legato all'hardware wireless di cui si dispone.
 
  
Drivers di scarsa qualità (ad esempio quelli usati attraverso ndiswrapper), possono dar luogo a fastidiosi problemi, se usati assieme a [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant]. E' quindi consigliabile, se possibile, usare hardware con un supporto adeguato e munito di driver di qualità.
+
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] è un [[Wikipedia:Supplicant_(computer) | Supplicant WPA]] con supporto a WPA e WPA2 ([[Wikipedia:IEEE_802.11i|IEEE 802.11i]] / RSN (Robust Secure Network)) adatto all'uso con PC desktop e portatili e 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 wlan.
 
+
==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}}:
+
==Connessione tramite wpa_cli==
  
{{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
+
{{Suggerimento|Si faccia riferimento al file {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} per ulteriori informazioni.}}
*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.
+
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:
  
===Opzionale: Installare l'interfaccia grafica===
+
# wpa_supplicant -B -i ''interface'' -c ''/percorso/al/file/di/configurazione''
  
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 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.
  
# pacman -S wpa_supplicant_gui
+
Si esegua quindi:
 +
{{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
+
Per salvare le informazioni di rete nel file di configurazione si esegua:
  
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
> save_config
 +
OK
  
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
Sarà ora possibile ottenere un indirizzo IP tramite {{Pkg|dhcpcd}} o {{Pkg|iproute2}}.
  
Di seguito un semplice esempio:
+
==Configurazione==
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
{{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.
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".}}
+
Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:
  
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.
+
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 
+
Si avvii quindi wpa_supplicant:
+
 
+
# 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>
 
 
}}
 
}}
 +
È ora possibile combinare l'utilizzo di {{ic|wpa_supplicant}} e {{ic|wpa_passphrase}} per collegarsi a praticamente tutte le reti WPA2 personali:
  
{{Nota|Le informazioni appena immesse verranno immagazzinate in formato testo: per questo motivo potrebbe essere preferibile cambiare i permessi del file {{ic|/etc/wpa_supplicant.conf}} (es. {{ic|chmod 600 /etc/wpa_supplicant.conf}} per rendere il file leggibile solo da root), a seconda di quanta importanza si da alla sicurezza del proprio sistema.}}
+
  # wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase ''essid'' ''passphrase'')
 
+
  # dhcpcd -A ''interfaccia''
È 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]].
+
 
+
Configurazioni più sofisticate come l'autenticazione attraverso EAPOL o server RADIUS sono descritte dettagliatamente nella pagina di manuale di {{ic|wpa_supplicant}} ({{ic|man wpa_supplicant.conf}}) ed esulano dallo scopo di questo articolo.
+
 
+
===Fallback: ricompilazione di wpa_supplicant===
+
 
+
Procurarsi una copia del sorgente di wpa_supplicant scaricandolo dalla relativa home page o da [[Arch Build System (Italiano)|ABS]]. Una volta scaricato ed estratto il sorgente, si controlli il contenuto del file {{ic|.config}} (sì, è nascosto), la cui struttura ricorda quella di un file di configurazione del kernel, anche se in scala ridotta. Si controlli la sezione chiamata {{ic|CONFIG_DRIVER_''NOMEDRIVER''}} e si scelga tra "y" o "n", a seconda del driver che si desidrera utilizzare.
+
Si presti attenzione nello scegliere le opzioni, poichè sarà necessario specificare il percorso ai sorgenti del driver wireless per compilare correttamente i componenti di basso livello necessari per l'associazione. Ad esempio, alcuni strani chipsets Atheros, hanno bisogno di una build pulita di wpa_supplicant, compilata sull'ultima release disponibiele dei driver {{ic|madwifi-svn}}.
+
Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione.
+
 
+
'''Esempio per driver madwifi''': Si modifichino le seguenti linee del file {{ic|.config}} nei sorgenti di wpa_supplicant, in modo che siano uguali a queste. Si assume che i driver madwifi siano stati compilati con ABS, e che il codice sorgente sia posizionato in {{ic|/var/abs/local/madwifi/src}}.
+
 
+
#Driver interface for madwifi driver
+
CONFIG_DRIVER_MADWIFI=y
+
#Change include directories to match with the local settings
+
CFLAGS += -I/var/abs/local/madwifi/src/madwifi
+
 
+
==Gestione==
+
 
+
===Semplice soluzione con wpa_cli===
+
 
+
Se siete tra coloro che si trovano a disagio con la complessità e i bugs di [[Netcfg (Italiano)|netcfg]], o volete ottenere delle conoscenze riapplicabili su altri sistemi operativi Linux, il pacchetto {{Pkg|wpa_supplicant}} include {{ic|wpa_cli}}, che consente di connettersi e modificare le impostazioni dell'interfaccia wireless in modo semplice.
+
 
+
Si scriva uno script simile al seguente:
+
 
+
{{hc|
+
~/libexec/wpa_cli-action.sh|
+
<nowiki>
+
case $2 in
+
CONNECTED)
+
dhcpcd -x $1 >/dev/null
+
dhcpcd $1 >/dev/null
+
;;
+
esac
+
</nowiki>
+
}}
+
 
+
Lo si renda eseguibile e si lanci {{ic|wpa_supplicant}} con il file di configurazione predefinito:
+
 
+
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+
 
+
{{Nota|È necessario che il file di configurazione abbia l'impostazione {{ic|ctrl_interface}} affinchè {{ic|wpa_cli}} funzioni.}}
+
 
+
Si lanci ora {{ic|wpa_cli}} in modalità demone, indicandogli lo script appena scritto:
+
 
+
# wpa_cli -B -a ~/libexec/wpa_cli-action.sh
+
 
+
Per avviare automatcamente {{ic|wpa_supplicant}} e {{ic|wpa_cli}} al boot, si aggiungano le seguenti linee al file {{ic|/etc/rc.local}}:
+
 
+
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
+
wpa_cli -B -a  /path/al/proprio/wpa_cli-action.sh
+
  
===netcfg===
+
===Gestire una configurazione personalizzata===
  
Si installi netcfg:
+
{{Nota|Per identificare il nome dell'interfaccia di rete in uso, utilizzare il comando {{ic|ip link}}.}}
  
# pacman -S netcfg
+
Come si è visto sopra, è possibile utilizzare {{ic|wpa_passphrase}} per generare una configurazione di base a cui aggiungere poi reti aggiuntive ed opzioni di propria scelta, che potrebbero essere necessarie in caso di configurazioni di rete avanzate che utilizzano [[Wikipedia:Extensible_Authentication_Protocol|EAP]] in modo estensivo.
  
Si crei un profilo di rete copiando il file di esempio:
+
Innanzitutto, si generi un file di configurazione minimale con {{ic|wpa_passphrase}}:
  
  # cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
+
  # wpa_passphrase ''essid'' ''passphrase'' > /etc/wpa_supplicant/foobar.conf
  
Si modifichi il file appena creato, assicurandosi che usi l'interfaccia corretta:
+
{{Suggerimento|Alcune passphrase particolarmente complesse potrebbero dover essere immesse in un file prima dell'utilizzo: {{ic|# wpa_passphrase foobarssid < passphrase.txt > /etc/wpa_supplicant/foobar.conf}}. }}
  
INTERFACE="wlan0"
+
Si aggiunga quindi l'opzione {{ic|ctrl_interface}}, in modo da poter controllare il demone {{ic|wpa_supplicant}}. È possibile autorizzare {{ic|wpa_cli}} ad effettuare modifiche al file con l'opzione {{ic|1=update_config=1}}.
  
Il resto del file dovrebbe rimanere inalterato.
+
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 +
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel # consente ai membri del gruppo 'wheel' di controllare il demone
 +
  update_config=1
 +
  ap_scan=1
  
Si modifichi ora {{ic|/etc/rc.conf}}, e si aggiunga il profilo di rete all'array NETWORKS:
+
  network={
 +
    ssid="foobarssid"
 +
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
 +
  }
 +
</nowiki>}}
  
NETWORKS=(wpa_suppl)
+
È possibile aggiungere network blocks multipli al file di configurazione di cui sopra.
  
Infine, si aggiunga il demone net-profiles  all'array DAEMONS, per falo partire al boot:
+
Per connettersi alla rete prescelta si eseguano i seguenti comandi:
  
  DAEMONS=(... @net-profiles)
+
  # ip link set ''interfaccia'' up
 +
# wpa_supplicant -B -D nl80211 -i ''interfaccia'' -c /etc/wpa_supplicant/foobar.conf
 +
# dhcpcd -A ''interfaccia''
  
Al prossimo riavvio, l'interfaccia wireless verrà attivata e wpa_supplicant sarà avviato e se una rete conosciuta è disponibile, verrà stabilita una connessione.
+
{{Nota|È preferibile utilizzare {{ic|nl80211}} rispetto al driver {{ic|wext}}, da considerarsi deprecato. Per ottenere un elenco dei driver supportati, si esegua {{ic|wpa_supplicant -h}}.}}
  
Per ulteriori informazioni si veda la pagina del wiki relativa a [[Netcfg (Italiano)|netcfg]].
+
Per reti di complessità crescente si studino gli esempi forniti nel file di configurazione di default sito in {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.
  
===Sola gestione delle reti wireless===
+
===Avvio tramite systemd===
  
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.
+
Per avviare la connessione wireless automaticamente al boot, si abiliti il servizio {{ic|wpa_supplicant}} sull'interfaccia interessata. Se la propria connessione ottiene gli indirizzi tramite DHCP, abilitare anche {{ic|dhcpcd.service}}. Per gestire eventuali connessioni ethernet si installi {{Pkg|ifplugd}} e si abiliti il relativo servizio sull'interfaccia interessata.
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.
+
I comandi da eseguire potrebbero essere simili ai seguenti:
  
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.
+
# systemctl enable wpa_supplicant@wlp3s1
 +
# systemctl enable dhcpcd
 +
# systemctl enable ifplugd@enp5s2
  
{{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.}}
+
{{ic|wpa_supplicant}} gestirà il roaming per tutti i SSID contenuti nel suo file di configurazione e {{ic|ifplugd}} configurerà automaticamente l'interfaccia ethernet spegnendo quella wireless all'inserimento di un cavo ethernet nella macchina, mentre {{ic|dhcpcd}} si occuperà dell'asegnazione degli indirizzi IP alle varie interfacce.
  
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.
+
È necessario modificare il servizio {{ic|wpa_supplicant@.service}} per farlo puntare al file di configurazione corretto.
 +
Per ridefinire il valore della riga {{ic|1=ExecStart=}} si crei il seguente file:
  
{{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.}}
+
{{hc|/etc/systemd/system/wpa_supplicant@.service.d/foo.conf|<nowiki>
 +
  [Service]
 +
  ExecStart=
 +
  ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/bar.conf -i%i
 +
</nowiki>}}
  
{{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.}}
+
La direttva {{ic|WantedBy}} del .service correntemente fornito non è corretta. Se la riga nel servizio {{ic|wpa_supplicant@.service}} non corrisponde al nome della propria interfaccia di rete (wlan0), sarà necessario copiare il servizio in {{ic|/etc/systemd/system}} ed apportare le dovute modifiche.
  
===Wicd===
+
[Install]
 +
WantedBy=multi-user.target
  
Si installi Wicd:
+
Il problema è stato risolto in [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=commitdiff;h=893a0a558cd8fd9a7dc5827f379e0f8a273a4fe5 questo] commit.
  
# pacman -S wicd
+
==Link correlati==
  
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.
+
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant documentazione di wpa_supplicant su kernel.org]

Revision as of 16:43, 12 September 2013


Summary help replacing me
Installazione ed utilizzo di wpa_supplicant
Argomenti correlati
Configuring Network (Italiano)
Wireless Setup (Italiano)


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

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.

Connessione tramite wpa_cli

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.

Suggerimento: Si faccia riferimento al file /etc/wpa_supplicant/wpa_supplicant.conf per ulteriori informazioni.

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=]

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

> save_config
OK

Sarà ora possibile ottenere un indirizzo IP tramite dhcpcd o iproute2.

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
}

È ora possibile combinare l'utilizzo di wpa_supplicant e wpa_passphrase per collegarsi a praticamente tutte le reti WPA2 personali:

# wpa_supplicant -B -i interfaccia -c <(wpa_passphrase essid passphrase)
# dhcpcd -A interfaccia

Gestire una configurazione personalizzata

Nota: Per identificare il nome dell'interfaccia di rete in uso, utilizzare il comando ip link.

Come si è visto sopra, è possibile utilizzare wpa_passphrase per generare una configurazione di base a cui aggiungere poi reti aggiuntive ed opzioni di propria scelta, che potrebbero essere necessarie in caso di configurazioni di rete avanzate che utilizzano EAP in modo estensivo.

Innanzitutto, si generi un file di configurazione minimale con wpa_passphrase:

# wpa_passphrase essid passphrase > /etc/wpa_supplicant/foobar.conf
Suggerimento: Alcune passphrase particolarmente complesse potrebbero dover essere immesse in un file prima dell'utilizzo: # wpa_passphrase foobarssid < passphrase.txt > /etc/wpa_supplicant/foobar.conf.

Si aggiunga quindi l'opzione ctrl_interface, in modo da poter controllare il demone wpa_supplicant. È possibile autorizzare wpa_cli ad effettuare modifiche al file con l'opzione update_config=1.

/etc/wpa_supplicant/foobar.conf
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel # consente ai membri del gruppo 'wheel' di controllare il demone
  update_config=1
  ap_scan=1

  network={
     ssid="foobarssid"
     psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
  }

È possibile aggiungere network blocks multipli al file di configurazione di cui sopra.

Per connettersi alla rete prescelta si eseguano i seguenti comandi:

# ip link set interfaccia up
# wpa_supplicant -B -D nl80211 -i interfaccia -c /etc/wpa_supplicant/foobar.conf
# dhcpcd -A interfaccia
Nota: È preferibile utilizzare nl80211 rispetto al driver wext, da considerarsi deprecato. Per ottenere un elenco dei driver supportati, si esegua wpa_supplicant -h.

Per reti di complessità crescente si studino gli esempi forniti nel file di configurazione di default sito in /etc/wpa_supplicant/wpa_supplicant.conf.

Avvio tramite systemd

Per avviare la connessione wireless automaticamente al boot, si abiliti il servizio wpa_supplicant sull'interfaccia interessata. Se la propria connessione ottiene gli indirizzi tramite DHCP, abilitare anche dhcpcd.service. Per gestire eventuali connessioni ethernet si installi ifplugd e si abiliti il relativo servizio sull'interfaccia interessata.

I comandi da eseguire potrebbero essere simili ai seguenti:

# systemctl enable wpa_supplicant@wlp3s1
# systemctl enable dhcpcd
# systemctl enable ifplugd@enp5s2

wpa_supplicant gestirà il roaming per tutti i SSID contenuti nel suo file di configurazione e ifplugd configurerà automaticamente l'interfaccia ethernet spegnendo quella wireless all'inserimento di un cavo ethernet nella macchina, mentre dhcpcd si occuperà dell'asegnazione degli indirizzi IP alle varie interfacce.

È necessario modificare il servizio wpa_supplicant@.service per farlo puntare al file di configurazione corretto. Per ridefinire il valore della riga ExecStart= si crei il seguente file:

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

La direttva WantedBy del .service correntemente fornito non è corretta. Se la riga nel servizio wpa_supplicant@.service non corrisponde al nome della propria interfaccia di rete (wlan0), sarà necessario copiare il servizio in /etc/systemd/system ed apportare le dovute modifiche.

[Install]
WantedBy=multi-user.target

Il problema è stato risolto in questo commit.

Link correlati