Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
(rm temporary i18n template)
(46 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
[[Category:Wireless Networking (Italiano)]]
 +
[[es:WPA supplicant]]
 
[[en:WPA supplicant]]
 
[[en:WPA supplicant]]
[[es:WPA Supplicant]]
 
 
[[ru:WPA Supplicant]]
 
[[ru:WPA Supplicant]]
 
[[zh-CN:WPA Supplicant]]
 
[[zh-CN:WPA Supplicant]]
[[Category:Wireless Networking (Italiano)]]
+
{{Related articles start (Italiano)}}
 +
{{Related|Configuring Network (Italiano)}}
 +
{{Related|Wireless Setup (Italiano)}}
 +
{{Related articles 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.
+
[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.
 
+
Drivers di scarsa qualità (ad esempio quelli usati attraverso ndiswrapper), possono dar luogo a fastidiosi problemi, se usati assieme a [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant]. E' quindi consigliabile, se possibile, usare hardware con un supporto adeguato e munito di driver di qualità.
+
 
+
==Considerazioni==
+
 
+
Questo articolo assume che si abbia familiarità con il proprio hardware, e si sia in grado di districarsi tra i files di configurazione, oltre a saper configurare il proprio sistema. E' di fondamentale importanza aver '''letto e capito''' l'articolo [[Wireless Setup (Italiano)|Wireless Setup]], poichè fungerà da base per tutto ciò che verrà spiegato qui.
+
 
+
Questo documento non costituisce un prerequisito se il proprio hardware funziona out-of-the-box e viene gestito attraverso un demone come [[NetworkManager (Italiano)|NetworkManager]] o similari. Se si preferisce connettersi alla rete usando un tool grafico, questo articolo non fa per voi.
+
  
 
==Installazione==
 
==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}}:
+
==Setup per dhcpcd==
  
{{hc|
+
[[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.
wpa_supplicant|
+
Quest'ultimo viene avviato solo se:
<nowiki>
+
Driver list:
+
  
*HostAP
+
* Non vi è un altro processo di ''wpa_supplicant'' in ascolto su una determinata interfaccia, il che implica che ''dhcpcd'' non avvierà ''wpa_supplicant'' in caso  quest'ultimo sia stato lanciato da ''systemd'' o avviato con qualsiasi altro metodo.
*Prism54
+
* Esiste un file di configurazione per ''wpa_supplicant''. A partire dalla versione 6.2.1-1 (Febbraio 2014) di ''dhcpcd'' verrà controllato anche il percorso {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} oltre al classico {{ic|/etc/wpa_supplicant.conf}}.
*NDISWrapper
+
L'hook che si occupa di lanciare ''wpa_supplicant'' si trova in {{ic|/usr/lib/dhcpcd/dhcpcd-hooks/10-wpa_supplicant}}.
*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.
+
==Configurazione==
  
===Opzionale: Installare l'interfaccia grafica===
+
{{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.
 +
È quindi consigliabile effettuarne un backup, poichè i metodi per l'aggiunta automatica delle reti descritti sotto eliminano qualsiasi commento dal {{ic|wpa_supplicant.conf}}.
  
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]}}:
+
$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak
  
# pacman -S wpa_supplicant_gui
 
  
==Configurazione e connessione==
+
Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:
  
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.
+
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 
+
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
+
 
+
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
 
+
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
 
+
Di seguito un semplice esempio:
+
 
+
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
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".}}
+
 
+
La configurazione presentata sopra, permetterà agli utenti appartenenti al gruppo {{ic|network}} di controllare {{ic|wpa_supplicant}} usando i frontends wpa_gui e wpa_cli. L'opzione {{ic|1=update-config=1}} consentirà a questi due programmi di modificare automaticamente il file {{ic|/etc/wpa_supplicant.conf}}, al fine di aggiungere nuove reti o effettuare modifiche a quelle esistenti.
+
 
+
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.
+
 
+
* Usando {{ic|wpa_passphrase}}, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a {{ic|/etc/wpa_supplicant.conf}}:
+
 
+
# 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":
+
Quanto sopra può essere facilmente generato utilizzando il tool ''wpa_passphrase'' e aggiunto al file di configurazione. Questa configurazione è utile se si utilizzano router o access points che richiedono una password. Ad esempio:
  
{{bc|
+
{{hc|$ wpa_passphrase ''essid'' ''passphrase''|2=
<nowiki>
+
 
network={
 
network={
      ssid="mywireless_ssid"
+
  ssid=''essid''
      proto=RSN
+
  #psk=''passphrase''
      key_mgmt=WPA-PSK
+
  psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
      pairwise=CCMP TKIP
+
      group=CCMP TKIP
+
      psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
 
}
 
}
</nowiki>
 
 
}}
 
}}
  
{{Nota|Le informazioni appena immesse verranno immagazzinate in formato testo: per questo motivo potrebbe essere preferibile cambiare i permessi del file {{ic|/etc/wpa_supplicant.conf}} (es. {{ic|chmod 600 /etc/wpa_supplicant.conf}} per rendere il file leggibile solo da root), a seconda di quanta importanza si da alla sicurezza del proprio sistema.}}
+
È possibile utilizzare un file di testo come input per l'inserimento di alcune passphrase particolarmente complesse:
 +
# wpa_passphrase essid < ''passphrase''.txt > /etc/wpa_supplicant/wpa_supplicant-''interfaccia''.conf
  
È possibile aggiungere altre reti WPA con il seguente comando:
+
{{Suggerimento|''wpa_passphrase'' può inserire le varie impostazioni direttamente nel file di configurazione, ma sarà necessario specificare il link allo stesso come argomento del comando sudo.
 
+
Assicurarsi di star utilizzando {{ic|>>}}, altrimenti si sovrascriverà l'intero file di configurazione:
# wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf
+
  $ sudo sh -c "wpa_passphrase ''essid'' ''passphrase'' >> /etc/wpa_supplicant/wpa_supplicant.conf"
 
+
Il {{ic|>>}} redirigerà l'output, appenendolo in coda al file {{ic|/etc/wpa_supplicant.conf}} preesistente, senza sovrascriverlo.
+
 
+
Sono disponibili molte altre opzioni da impostare nella sezione network, ottenibili leggendo il file di configurazione fornito di default, anche se, nella maggioranza dei casi, è possibile utilizzare le impostazioni predefinite senza specificare altro; almeno per il momento.
+
 
+
CInfine, si aggiungano le seguenti linee in cima al proprio {{ic|/etc/wpa_supplicant.conf}}:
+
 
+
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
+
 
+
{{Nota|Per l'uso con netcfg-2.6.1-1 in {{ic|[testing]}} (dal 25-06-2011), ctrl_interface dovrebbe avere valore {{ic|/run/wpa_supplicant}} (si noti l'assenza di {{ic|/var/...}}). Tuttavia, questo causerà il mancato funzionamento di {{ic|wpa_cli}} (si utilizzi l'opzione {{ic|-p}} per forzare il valore di default). Se l'impostazione non viene cambiata, si riscontreranno errori simili a: "Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory".}}
+
 
+
Se si ha la necessità di connettersi a più reti, si definisca semplicemente un altra sezione network nel file di configurazioni. Si cambi la priorità come più si ritiene consono, tenendo in mente che le reti con un valore più alto vengono utilizzate per prime.
+
 
+
È ora possibile provare a collegarsi manualmente.
+
Innanzitutto, si attivi l'interfaccia Wi-Fi. Per questo esempio utilizzeremo ''wlan0'' come interfaccia:
+
 
+
  # ip link set wlan0 up
+
 
+
Sarà solitamente possibile utilizzare il driver '''W'''ireless '''EXT'''tensions (wext) con wpa_supplicant. Qualora questo non dovesse funzionare, si cerchi su internet come risolvere.
+
 
+
Si dia il seguente comando da root:
+
 
+
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
+
 
+
Il comando appena scritto indica a wpa_supplicant di utilizzare la configurazione hardware di default (WEXT - Linux '''W'''ireless '''EXT'''ensions) e di associarsi con il SSID specificato in {{ic|/etc/wpa_supplicant.conf}}. Inoltre, l'associazione dovrà essere effettuata con il device ''wlan0'', e il processo dovrà essere spostato in background ({{ic|-B}}). Per avere un output più prolisso, si specifichino le opzioni {{ic|-d}} o {{ic|-dd}} (per il debug). È possibile trovare ulteriori esempi [http://www.examplenow.com/wpa_supplicant qui].
+
 
+
Nell'output stampato a console, dovrebbe esserci una linea che contiene ''''Associated:'''', seguita da u n MAC Address. È ora sufficiente richiedere un indirizzo IP valido.
+
 
+
Si esegua, come root:
+
 
+
# dhcpcd wlan0
+
 
+
{{Nota|Non si richieda un indirizzo IP immediatamente! È consigliabile attendere per assicurarsi che l'associazione con l'access point sia avvenuta con successo. Se si usa uno script, è possibile utilizzare {{ic|sleep 10}} per aspettare 10 secondi.}}
+
 
+
Si verifichi che l'interfaccia abbia un indirizzo IP usando il pacchetto {{ic|iproute}}:
+
 
+
{{hc|
+
# ip addr show wlan0|
+
<nowiki>
+
  wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
+
  link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
+
  inet 192.168.0.62/24 brd 192.168.0.255 scope global eth0
+
  inet6 fe80::224:2bff:fed3:759e/64 scope link
+
      valid_lft forever preferred_lft forever
+
</nowiki>
+
 
}}
 
}}
  
Se l'output è simile a quanto visto sopra, la connessione è stata effettuata con successo. In questo caso, è possibile utilizzre {{Pkg|netcfg2}} per rendere la configurazione permanente, oltre che avviare la connessione alla rete quando si accende la macchina. A seconda dell'approccio scelto nella configurazione dell'adattatore di rete wireless, è possibile scegliere di utilizzare un tool grafico, ma non invasivo come [[Wicd (Italiano)|Wicd]] o affidarsi ai profili di rete forniti da [[Netcfg (Italiano)|netcfg]].
+
Una volta ottenuto un file di configurazione, sarà possibile avviare il demone ''wpa_supplicant'' e collegarsi alla rete wireless richiesta:
  
Configurazioni più sofisticate come l'autenticazione attraverso EAPOL o server RADIUS sono descritte dettagliatamente nella pagina di manuale di {{ic|wpa_supplicant}} ({{ic|man wpa_supplicant.conf}}) ed esulano dallo scopo di questo articolo.
+
# wpa_supplicant -B -i ''interfaccia'' -c ''file_di_configurazione''
  
===Fallback: ricompilazione di wpa_supplicant===
+
Potrebbe essere necessario specificare il driver da utilizzare: per una lista di quelli supportati, eseguire il comando {{ic|wpa_supplicant -h}}.
  
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.
+
* {{ic|nl80211}} è il driver standard attuale, ma non tutti i chip wireless lo supportano.
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}}.
+
* {{ic|wext}} è deprecato, ma maggiormente supportato.
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}}.
+
Il driver viene specificato tramite il parametro {{ic|-D}}:
  
  #Driver interface for madwifi driver
+
  # wpa_supplicant -B -i ''interfaccia'' -c ''file_di_configurazione'' -D ''driver''
CONFIG_DRIVER_MADWIFI=y
+
#Change include directories to match with the local settings
+
CFLAGS += -I/var/abs/local/madwifi/src/madwifi
+
  
==Gestione==
+
{{Suggerimento|È possibile combinare l'utilizzo di ''wpa_supplicant'' e ''wpa_passphrase'' per connettersi a quasi tutte le reti WPA2 (Personal), ma sarà necessario acquisire i privilegi di superuser, poichè il link al file di configurazione viene eseguito prima del comando sudo:
 
+
$ sudo -i
===Semplice soluzione con wpa_cli===
+
# wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase ''essid'' ''passphrase'')
 
+
Se siete tra coloro che si trovano a disagio con la complessità e i bugs di [[Netcfg (Italiano)|netcfg]], o volete ottenere delle conoscenze riapplicabili su altri sistemi operativi Linux, il pacchetto {{Pkg|wpa_supplicant}} include {{ic|wpa_cli}}, che consente di connettersi e modificare le impostazioni dell'interfaccia wireless in modo semplice.
+
 
+
Si scriva uno script simile al seguente:
+
 
+
{{hc|
+
~/libexec/wpa_cli-action.sh|
+
<nowiki>
+
case $2 in
+
CONNECTED)
+
dhcpcd -x $1 >/dev/null
+
dhcpcd $1 >/dev/null
+
;;
+
esac
+
</nowiki>
+
 
}}
 
}}
  
Lo si renda eseguibile e si lanci {{ic|wpa_supplicant}} con il file di configurazione predefinito:
+
Una volta configurato ''wpa_supplicant'' per la propria rete, non rimane che connettersi utilizzando un [[Configuring Network (Italiano)#Indirizzo_IP_Statico|IP statico]] oppure tramite [[Configuring Network (Italiano)#Indirizzo_IP_dinamico|DHCP]]. Ad esempio:
  
  # wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+
  # dhcpcd ''interfaccia''
  
{{Nota|È necessario che il file di configurazione abbia l'impostazione {{ic|ctrl_interface}} affinchè {{ic|wpa_cli}} funzioni.}}
+
==Utilizzare wpa_cli==
  
Si lanci ora {{ic|wpa_cli}} in modalità demone, indicandogli lo script appena scritto:
+
È 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}}).
  
# wpa_cli -B -a ~/libexec/wpa_cli-action.sh
+
Quanto segue creerà il socket in {{ic|/run/wpa_supplicant}} e permetterà ai membri del gruppo {{ic|adm}} di accedervi:
  
Per avviare automatcamente {{ic|wpa_supplicant}} e {{ic|wpa_cli}} al boot, si aggiungano le seguenti linee al file {{ic|/etc/rc.local}}:
+
ctrl_interface=DIR=/run/wpa_supplicant GROUP=adm
  
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
+
È 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''.
wpa_cli -B -a  /path/al/proprio/wpa_cli-action.sh
+
Per abilitare questo comportamento, si imposti il valore della variabile ''update_config'' ad ''1'':
  
===netcfg===
+
  update_config=1
 
+
Si installi netcfg:
+
 
+
  # pacman -S netcfg
+
 
+
Si crei un profilo di rete copiando il file di esempio:
+
 
+
# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
+
 
+
Si modifichi il file appena creato, assicurandosi che usi l'interfaccia corretta:
+
 
+
INTERFACE="wlan0"
+
 
+
Il resto del file dovrebbe rimanere inalterato.
+
 
+
Si modifichi ora {{ic|/etc/rc.conf}}, e si aggiunga il profilo di rete all'array NETWORKS:
+
 
+
NETWORKS=(wpa_suppl)
+
 
+
Infine, si aggiunga il demone net-profiles  all'array DAEMONS, per falo partire al boot:
+
 
+
DAEMONS=(... @net-profiles)
+
 
+
Al prossimo riavvio, l'interfaccia wireless verrà attivata e wpa_supplicant sarà avviato e se una rete conosciuta è disponibile, verrà stabilita una connessione.
+
 
+
Per ulteriori informazioni si veda la pagina del wiki relativa a [[Netcfg (Italiano)|netcfg]].
+
 
+
===Sola gestione delle reti wireless===
+
 
+
Come menzionato sopra, esistono due frontends a wpa_supplicant scritti dagli sviluppatori dello stesso: {{ic|wpa_cli}} e {{ic|wpa_gui}}. wpa_cli è, come ci si aspetterebbe, un frontend a linea di comando, mentre "wpa_gui" è un'interfaccia a wpa_supplicant che utilizza le librerie Qt. wpa_cli è inclusa nel pacchetto wpa_supplicant, mentre {{Pkg|wpa_supplicant_gui}} è fornito separatamente.
+
I dettagli relativi all'impostazione di wpa_supplicant per funzionare con l'uno o l'altro frontend sono riportati in [[#Metodo dinamico: 'wpa_gui', 'wpa_cli']]
+
 
+
Quando si invoca {{ic|wpa_cli}} senza argomenti, verrà avviato un prompt specifico. Si scriva {{ic|help}} per ricevere aiuto.
+
 
+
L'interfaccia wpa_gui è abbastanza intuitiva. Se si preme il bottone "Scan", verrà visualizzata una lista degli SSID rilevati. Se si effettua un doppio click su uno di questi, comparirà una finestra di dialogo che consentirà di inserire le informazioni richieste per l'associazione alla rete. Nella maggior parte dei casi, si dovrà inserire la pre-shared key (PSK) se si sta utilizzando WPA/WPA2, o la propria {{ic|key0}} se si utilizza WEP. Il protocollo utilizzato dalla rete dovrebbe essere rilevato automaticamente. Altre cose, come l'autenticazione 802.1X richiederanno configurazioni aggiuntive.
+
 
+
{{Attenzione|Il protocollo WEP è compromesso e non dovrebbe venir utilizzato al di fuori di ambienti di laboratorio o di test. Si utilizzi ''almeno'' WPA (WPA2 è raccomandato) per una rete più sicura.}}
+
 
+
Dopo aver aggiunto una rete, è possibile modificarla se ad esempio si è  cambiata la PSK (Pre-shared Key). Si clicchi sul tab "Manage Networks" e si selezioni la rete da modificare/rimuovere. È inoltre possibile aggiungere una rete anche senza effettuare la scansione; operazione obbligatoria se il proprio access point non effettua il broadcast del SSID.
+
 
+
{{Nota|Impostare il proprio access point per non effettuare il broadcast del SSID '''non''' aumenterà la sicurezza della propria rete wireless. È infatti molto semplice identificare SSID nascosti.}}
+
 
+
{{Nota|wpa_cli e wpa_gui non richiedono un indirizzo IP, né creano una tabella di routing: servono infatti solo per l'associazione all'access point. È possibile utilizzare lo script {{AUR|wpa_auto}}, disponibile su [[AUR (Italiano)|AUR]], per avviare  {{ic|wpa_supplicant}} al boot ed avviare automaticamente un client DHCP per configurare la propria connessione una volta che ci si è associati alla rete wireless, oppure è possibile scrivere uno script di proprio pugno. Utility per la gestione della rete di più alto livello sono in grado di gestire sia reti cablate che wireless.}}
+
 
+
===Wicd===
+
 
+
Si installi Wicd:
+
 
+
# pacman -S wicd
+
 
+
L'utilizzo di Wicd è molto semplice; si effettui la scansione delle reti, si inseriscano i dati necessari e si effettui la connessione. Potrebbe essere necessario aggiungere {{ic|/usr/lib/wicd/autoconnect.py}} agli script di init e power management per riconnettersi alle proprie reti, se si è impostata la connessione automatica alle stesse.
+
 
+
==Risoluzione dei problemi==
+
  
La maggior parte dei problemi è riscontrabile nel processo di associazione, perciò si dovrebbe controlalre attentamente l'output di wpa_supplicant se si sospetta che non stia funzionando a dovere. Si aggiunga {{ic|-d}} (per il debug) per aumentare la verbosità. Solitamente {{ic|-dd}} è abbastanza, mentre {{ic|-dddd}} potrebbe essere eccessivo.
+
Una volta che il demone ''wpa_supplicant'' si è avviato, è possibile avviare anche ''wpa_cli'', che 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.
  
Mentre si controlla il log, si cerchino voci simili a questa:
+
Una volta invocato ''wpa_cli'', verrà visualizzato un prompt interattivo ({{ic|>}}). Il prompt supporta l'autocompletamento e fornisce una descrizione dei comandi completati.
  
ioctl[QUALCOSA]: Operation not supported
+
===Aggiungere una nuova rete utilizzando wpa_cli===
  
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.
+
Per effettuare una scansione delle reti disponibili si scriva {{ic|scan}} al prompt ({{ic|>}}). Verrà inviata una notifica una volta che la scansione è terminata:
  
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.
+
> scan
 +
OK
 +
<3>CTRL-EVENT-SCAN-RESULTS
 +
>
  
===Non è possibile usare wpa_gui per configurare nuove reti===
+
Si esegua quindi {{ic|scan_results}} per visualizzare i risultati:
  
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:
+
> 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
 +
>
  
ap_scan=1
+
Per associarsi con ''MIOSSID'', passare il nome della rete a ''wpa_supplicant''.
 +
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.
  
al proprio {{ic|/etc/wpa_supplicant.conf}}
+
> add_network
 +
0
 +
>
  
===Impossibile ottenere un indirizzo IP dal server DHCP===
+
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:
  
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:
+
> set_network 0 psk "passkey"
 +
OK
 +
>
  
ifconfig wlan0
+
Si abiliti la rete:
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:
+
> enable_network 0
 +
OK
 +
>
  
killall wpa_supplicant -SIGHUP
+
Si scrivano le modifiche sul file di configurazione:
iwconfig wlan0 essid "myEssid" key on #forse "key on" è opzionale
+
sleep 15; dhcpcd wlan0
+
  
Quando scrivo:
+
> save_config
 +
OK
 +
>
  
ps aux | grep wpa
+
===Action script===
  
Noto un processo di {{ic|wpa_supplicant}} attivo benchè l'abbia appena ucciso. Sembrerebbe che {{ic|iwconfig}} avvii il servizio per me.
+
{{Expansion|1=To be re-added from [https://wiki.archlinux.org/index.php?title=WPA_supplicant&oldid=256897#Action_script this old revision] with a meanigful example.}}
  
La mia scheda wireless è:
 
  
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
+
==Avvio tramite systemd==
  
===Errore di associazione al boot con netcfg===
+
Una possibile configurazione consiste nell'abilitazione di ''wpa_supplicant'' e ''dhcpcd'' su un'interfaccia specifica (si veda a tal proposito [[Systemd (Italiano)#Usare le unità]]):
  
Quanto segue è un'esperienza personale. La mia scheda di rete Broadcom BCM4322 è abbastanza lenta nella fase di associazione durante l'avvio del sistema. Si provi quindi ad aggiungere la seguente lina in {{ic|/etc/network.d/<vosto profilo>}}:
+
# systemctl enable wpa_supplicant@''interfaccia''
 +
# systemctl enable dhcpcd@''interfaccia''
  
TIMEOUT=30
+
La sezione {{ic|[Install]}} del servizio di systemd fornito da ''wpa_supplicant'' è sbagliata (si veda [http://w1.fi/bugz/show_bug.cgi?id=477 questo] bug report). Se la propria interfaccia di rete non si chiama {{ic|wlan0}}, sarà necessario copiare il servizio in {{ic|/etc/systemd/system}} e modificare la sezione {{ic|[Install]}} in questo modo:
  
Si riavvii per applicare i cambiamenti.
+
[Install]
 +
WantedBy=multi-user.target
  
{{Nota|{{ic|1=TIMEOUT=30}} potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.}}
+
Si consulti [[Systemd (Italiano)#Rimpiazzare le unità fornite]] per ulteriori informazioni sulla modifica delle unità.
  
===La connessione wireless cade spesso===
+
{{Nota|Se si utilizza il servizio {{ic|dhcpcd@.service}} è possibile sostituire il parametro {{ic|-w}} con {{ic|-b}}, in modo che {{ic|dhcpcd}} non aspetti di ricevere un indirizzo prima di essere messo in background.}}
  
Se la propria connessione cade spesso e dmesg mostra questo messaggio:
+
{{Suggerimento|{{Pkg|dhcpcd}} contiente un hook (abilitato di default) per l'avvio automatico di ''wpa_supplicant'' su tutte le interfacce wireless, che viene attivato solamente se è presente il file di configurazione {{ic|/etc/wpa_supplicant.conf}} e se non vi è nessun processo di ''wpa_supplicant'' in ascolto su quella specifica interfaccia. Per questo motivo è possibile utilizzare semplicemente il servizio {{ic|dhcpcd@''interfaccia''}} per la configurazione della rete, senza abilitare {{ic|wpa_supplicant@''interfaccia''}}.}}
  
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
+
==Link correlati==
  
una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.
+
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant documentazione di wpa_supplicant su kernel.org]

Revision as of 15:59, 8 February 2014

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

Installazione

Si installi wpa_supplicant dai repository ufficiali.

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

Setup per dhcpcd

dhcpcd contiene un hook (abilitato di default) per l'avvio automatico di wpa_supplicant su tutte le interfacce wireless. Quest'ultimo viene avviato solo se:

  • Non vi è un altro processo di wpa_supplicant in ascolto su una determinata interfaccia, il che implica che dhcpcd non avvierà wpa_supplicant in caso quest'ultimo sia stato lanciato da systemd o avviato con qualsiasi altro metodo.
  • Esiste un file di configurazione per wpa_supplicant. A partire dalla versione 6.2.1-1 (Febbraio 2014) di dhcpcd verrà controllato anche il percorso /etc/wpa_supplicant/wpa_supplicant.conf oltre al classico /etc/wpa_supplicant.conf.

L'hook che si occupa di lanciare wpa_supplicant si trova in /usr/lib/dhcpcd/dhcpcd-hooks/10-wpa_supplicant.

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. È quindi consigliabile effettuarne un backup, poichè i metodi per l'aggiunta automatica delle reti descritti sotto eliminano qualsiasi commento dal wpa_supplicant.conf.

$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak


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 e aggiunto al file di configurazione. Questa configurazione è utile se si utilizzano router o access points che richiedono una password. Ad esempio:

$ wpa_passphrase essid passphrase
network={
   ssid=essid
   #psk=passphrase
   psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

È possibile utilizzare un file di testo come input per l'inserimento di alcune passphrase particolarmente complesse:

# wpa_passphrase essid < passphrase.txt > /etc/wpa_supplicant/wpa_supplicant-interfaccia.conf
Suggerimento: wpa_passphrase può inserire le varie impostazioni direttamente nel file di configurazione, ma sarà necessario specificare il link allo stesso come argomento del comando sudo.

Assicurarsi di star utilizzando >>, altrimenti si sovrascriverà l'intero file di configurazione:

$ sudo sh -c "wpa_passphrase essid passphrase >> /etc/wpa_supplicant/wpa_supplicant.conf"

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

# wpa_supplicant -B -i interfaccia -c file_di_configurazione

Potrebbe essere necessario specificare il driver da utilizzare: per una lista di quelli supportati, eseguire il comando wpa_supplicant -h.

  • nl80211 è il driver standard attuale, ma non tutti i chip wireless lo supportano.
  • wext è deprecato, ma maggiormente supportato.

Il driver viene specificato tramite il parametro -D:

# wpa_supplicant -B -i interfaccia -c file_di_configurazione -D driver
Suggerimento: È possibile combinare l'utilizzo di wpa_supplicant e wpa_passphrase per connettersi a quasi tutte le reti WPA2 (Personal), ma sarà necessario acquisire i privilegi di superuser, poichè il link al file di configurazione viene eseguito prima del comando sudo:
$ sudo -i
# wpa_supplicant -B -i interfaccia -c <(wpa_passphrase essid passphrase)

Una volta configurato wpa_supplicant per la propria rete, non rimane che connettersi utilizzando un IP statico oppure tramite DHCP. Ad esempio:

# dhcpcd interfaccia

Utilizzare wpa_cli

È 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 /etc/wpa_supplicant/wpa_supplicant.conf).

Quanto segue creerà il socket in /run/wpa_supplicant e permetterà ai membri del gruppo adm di accedervi:

ctrl_interface=DIR=/run/wpa_supplicant GROUP=adm

È 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. Per abilitare questo comportamento, si imposti il valore della variabile update_config ad 1:

update_config=1

Una volta che il demone wpa_supplicant si è avviato, è possibile avviare anche wpa_cli, che cercherà il socket di controllo specificato nel file di configurazione (oppure passato come argomento tramiete lo switch -p). È inoltre possibile specificare l'interfaccia da configurare con lo switch -i; in caso contrario verrà utilizzata la prima interfaccia trovata.

Una volta invocato wpa_cli, verrà visualizzato un prompt interattivo (>). Il prompt supporta l'autocompletamento e fornisce una descrizione dei comandi completati.

Aggiungere una nuova rete utilizzando wpa_cli

Per effettuare una scansione delle reti disponibili si scriva scan al prompt (>). Verrà inviata una notifica una volta che la scansione è terminata:

> scan
OK
<3>CTRL-EVENT-SCAN-RESULTS
>

Si esegua quindi scan_results per visualizzare i risultati:

> 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. 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
0
>

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:

> set_network 0 psk "passkey"
OK
>

Si abiliti la rete:

> enable_network 0
OK
>

Si scrivano le modifiche sul file di configurazione:

> save_config
OK
>

Action script

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: To be re-added from this old revision with a meanigful example. (Discuss in Talk:WPA supplicant (Italiano)#)


Avvio tramite systemd

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

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

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

[Install]
WantedBy=multi-user.target

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

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

Link correlati