Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
m
m (netcfg)
(22 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{i18n|WPA supplicant}}
+
[[en:WPA supplicant]]
 +
[[es:WPA Supplicant]]
 +
[[ru:WPA Supplicant]]
 +
[[zh-CN:WPA Supplicant]]
 
[[Category:Wireless Networking (Italiano)]]
 
[[Category:Wireless Networking (Italiano)]]
 +
 +
{{Out of date|[https://www.archlinux.org/news/deprecation-of-net-tools net-tools] e wireless-tools sono deprecati.}}
 +
{{Poor writing|Uso non corretto dei template, stile non enciclopedico.}}
  
 
Una rete protetta da una chiave WEP (sia statica che dinamica), può essere facilmente compromessa da un utente malevolo. WPA risolve il problema della chiave statica, cambiandola dopo un certo numero di pacchetti trasmessi/ricevuti, oppure dopo un certo lasso di tempo: questa operazione è svolta da un demone che è strettamente legato all'hardware wireless di cui si dispone.
 
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.
Line 14: Line 20:
 
==Installazione==
 
==Installazione==
  
Si installi il demone:
+
E' possibile installare WPA Supplicant tramite il pacchetto {{Pkg|wpa_supplicant}}, disponibile nei [[Official Repositories (Italiano)|repository ufficiali]].
 
+
# pacman -S wpa_supplicant
+
  
 
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}}:
 
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}}:
Line 39: Line 43:
 
===Opzionale: Installare l'interfaccia grafica===
 
===Opzionale: Installare l'interfaccia grafica===
  
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]}}:
+
Gli utenti che preferiscono disporre di un'interfaccia grafica possono installare il pacchetto {{Pkg|wpa_supplicant-gui}}, una GUI creata dagli stessi sviluppatori di wpa_supplicant e disponibile nei repository ufficiali.
 
+
# pacman -S wpa_supplicant_gui
+
  
 
==Configurazione e connessione==
 
==Configurazione e connessione==
  
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.
+
WPA Supplicant è pacchettizzato con un file di configurazione d'esempio: {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, il quale è ben commentato e fornisce numerose informazioni sulle meccaniche di rete. Tutte le variabili usate in questo articolo sono descritte in questo file, che contiene inoltre molte configurazioni d'esempio già preimpostate, pertanto ne è fortemente consigliata la lettura, assieme alle pagine di manuale {{ic|man wpa_supplicant}} e {{ic|man wpa_supplicant.conf}}.
  
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
+
Il file di configurazione di WPA Supplicant contiene tutte le impostazioni relative a {{ic|wpa_supplicant}}. È possibile crearne quanti se ne vuole e posizionarli dove più vi aggrada, dal momento che è necessario specificare il file di configurazione da utilizzare ad ogni invocazione di {{ic|wpa_supplicant}}.
  
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
Il contenuto del file è molto semplice:
  
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
* La prima parte riguarda la configurazione generale. È una serie di linee contenenti coppie ''chiave-valore''.
 +
* La seconda parte è composta dai ''network blocks'', uno per ogni profilo che si desidera impostare.
  
Di seguito un semplice esempio:
+
Per semplificare, si lascerà invariato il file di configurazione d'esempio e si partirà da zero creando il file {{ic|/etc/wpa_supplicant.conf}}.
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
Ci sono molti modi per configurare {{ic|wpa_supplicant}}, ed è possibile scegliere tra quelli sotto elencati.
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".}}
+
===Metodo manuale===
  
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.
+
====File di configurazione====
  
Si avvii quindi wpa_supplicant:
+
Innanzitutto è necessario essere in possesso di tutti i parametri relativi alla connessione al proprio Access Point:
  
  # wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant.conf -B
+
  # iw wlan0 scan
  
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.
+
Ulteriori dettagli sono disponibili [https://wiki.archlinux.org/index.php/Wireless_Setup_%28Italiano%29#Ricerca_degli_Access_Points qui].
  
wpa_gui e wpa_cli dovrebbero ora funzionare.
+
Ora dovreste conoscere i seguenti parametri necessari a {{ic|wpa_supplicant}} per 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}}.
+
* SSID
 +
* proto (opzionale su reti non protette)
 +
* key_mgmt
 +
* pairwise
 +
* group
  
==Metodo classico: {{ic|/etc/wpa_supplicant.conf}}==
+
Inoltre, si potrebbe aver bisogno dei parametri di autenticazione (EAP, PEAP, ecc.) se si è su reti particolari, come quelle universitarie, ad esempio.
  
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:
+
'''Primi ritocchi'''
  
* Un esercizio d'esempio:
+
È ora possibile procedere con la creazione di un network block nel file di configurazione:
  
# wpa_passphrase mywireless_ssid "secretpassphrase"
+
{{hc|wpa_supplicant.conf|
 
+
Dovrebbe venir generato qualcosa di simile:
+
 
+
{{bc|
+
 
<nowiki>
 
<nowiki>
 
network={
 
network={
      ssid="mywireless_ssid"
+
        ssid="mywireless_ssid"
      #psk="secretpassphrase"
+
        psk="secretpassphrase"
      psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
        # parametri aggiuntivi (proto, key_mgmt, etc.)
 
}
 
}
</nowiki>
+
</nowiki>}}
}}
+
 
 +
Questo è il file di configurazione di base necessario affinchè l'autenticazione WPA funzioni. La prima riga è la dichiarazione d'apertura del network block, la seconda contiene l'SSID dell'Access Point al quale si vuole connetterti, mentre la terza è la passphrase.
 +
 
 +
{{Attenzione|Ci si ricordi di usare i doppi apici alle voci ssid e psk!}}
 +
 
 +
'''Passphrase e PSK'''
 +
 
 +
Il lettore attento avrà notato che la PSK dovrebbe essere una stringa esadecimale. Infatti, la passphrase e la PSK non sono esattamente la stessa cosa: la passphrase è una chiave leggibile dall'utente che viene usata in combinazione con il SSID per generare la chiave di rete "machine friendly" conosciuta come "PSK". A livello di rete, la passphrase non viene mai usata, e rappresenta solamente un modo comodo per gestire la chiave da parte degli utenti.
 +
 
 +
Se si vuole risparmiare tempo, è possibile fornire direttamente la versione esadecimale della passphrase, usando l'utility {{ic|wpa_passphrase}}, che è fornita dal pacchetto {{Pkg|wpa_supplicant}} stesso. Si utilizzi la sintassi {{ic|wpa_passphrase [ssid] [passphrase]}}.
 +
 
 +
* Un esempio:
 +
 
 +
# wpa_passphrase mywireless_ssid "secretpassphrase"
 +
 
 +
Il comando dovrebbe generare il seguente network block:
 +
 
 +
network={
 +
        ssid="mywireless_ssid"
 +
        #psk="secretpassphrase"
 +
        psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
 +
}
 +
 
 +
La terza linea è la passphrase (la chiave leggibile dall'utente) e la quarta la PSK (la chiave esadecimale), che è richiesta per la connessione. Il {{ic|#}} commenta la linea relativa alla passphrase, dal momento che utilizzeremo la PSK per la connessione.
  
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.
+
{{Nota|La PSK esadecimale non deve essere inclusa tra doppi apici.}}
  
* Usando {{ic|wpa_passphrase}}, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a {{ic|/etc/wpa_supplicant.conf}}:
+
* Utilizzando {{ic|wpa_passphrase}} si specifichi il proprio SSID reale e la propria passphrase, e si rediriga l'output su {{ic|/etc/wpa_supplicant.conf}}:
  
 
  # wpa_passphrase mywireless_ssid "secretpassphrase" >> /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}}.
+
Il {{ic|>>}} redirigerà l'output su {{ic|/etc/wpa_supplicant.conf}}, aggiungendolo ad eventuali righe preesistenti. È possibile aggiungere un numero illimitato di network blocks, e wpa_supplicant saprà quale utilizzare in base agli SSID trovati nell'area.
  
Se, ad esempio, si usa il protocollo WPA2-Personal, sarà necessario aggiungere alcune linee nella corrispondente sezione "network":
+
'''Opzioni del network block'''
  
{{bc|
+
Tutti i parametri di sicurezza devono essere specificati qui. Si noti che se si è insicuri sui valori richiesti dal proprio Access Point, è possibile utilizzarne diversi contemporaneamente, e {{ic|wpa_supplicant}} sceglierà automaticamente quello funzionante.
<nowiki>
+
network={
+
      ssid="mywireless_ssid"
+
      proto=RSN
+
      key_mgmt=WPA-PSK
+
      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.}}
+
Ad esempio, è possibile aggiungere:
  
È possibile aggiungere altre reti WPA con il seguente comando:
+
proto=WEP WPA
  
# wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf
+
in modo che il se prorpio Access Point utilizza WEP o WPA, il tutto funzionerà in entrambi i casi. Se però lo stesso utilizza RSN (ovvero WPA2), sarà necessario aggiungerlo agli altri valori.
  
Il {{ic|>>}} redirigerà l'output, appenendolo in coda al file {{ic|/etc/wpa_supplicant.conf}} preesistente, senza sovrascriverlo.
+
Se il SSID è nascosto, si aggiunga la seguente opzione al network block:
  
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.
+
scan_ssid=1
  
CInfine, si aggiungano le seguenti linee in cima al proprio {{ic|/etc/wpa_supplicant.conf}}:
+
Se è necessario connettersi a più reti, si definisca un altro network block nello stesso file. È possibile specificare la priorità per ognuno di essi:
 +
 
 +
priority=17
 +
 
 +
Si cambi la priorità a piacere, ricordandosi che i numeri più grandi avranno la precedenza.
 +
 
 +
Ci sono inoltre numerose altre opzioni di configurazioni impostabili nel network block che è possibile trovare nel file di configurazione originale.
 +
Nella maggior parte dei casi non si avrà bisogno di specificare nulla oltre ai paremetri di default.
 +
 
 +
'''Opzioni globali'''
 +
Sarà infine necessario specificare le opzioni globali. Aggiungerle in testa al proprio {{ic|/etc/wpa_supplicant.conf}} con il proprio editor preferito. La seguente linea è obbligatoria:
  
 
  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
 
  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
Line 131: Line 155:
 
{{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".}}
 
{{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.
+
Sono disponibili molti parametri opzionali (si legga {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}
 +
 
 +
ap_scan=0
 +
fast_reauth=1
 +
 
 +
{{Nota|Le proprie informazioni di rete sarano immagazzinate in plain text, ed è pertanto consigliabile cambiare i permessi del file {{ic|/etc/wpa_supplicant.conf}} appena creato (es: {{ic|chmod 600 /etc/wpa_supplicant.conf}} per renderlo leggibile solamente a root), a seconda di quanto si è attenti alla propria sicurezza.}}
 +
 
 +
'''Esempio completo'''
 +
 
 +
{{hc|
 +
wpa_supplicant.conf|
 +
<nowiki>
 +
ctrl_interface = DIR=/var/run/wpa_supplicant GROUP=wheel
 +
fast_reauth = 1
 +
ap_scan = 1
 +
 
 +
network ={
 +
    ssid    = "mySSID"
 +
    proto    = RSN
 +
    key_mgmt = WPA-EAP
 +
    pairwise = TKIP CCMP
 +
    auth_alg = OPEN
 +
    group    = TKIP
 +
    eap      = PEAP
 +
    identity = "myUsername"
 +
    password = "********"
 +
}
 +
</nowiki>
 +
}}
 +
 
 +
Configurazioni più sofisticate, come l'autenticazione tramite server RADIUS o EAPOL sono descritte in dettaglio nella pagina di manuale {{ic|wpa_supplicant.conf}} ({{ic|man wpa_supplicant.conf}}). Ci si ricordi di leggere anche {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, poichè tali configurazioni esulano dallo scopo di questo documento.
 +
 
 +
====Connessione====
 +
 
 +
È ora possibile provare a connettersi manualmente.
  
È ora possibile provare a collegarsi manualmente.
+
Innanzitutto, si attivi la propria interfaccia Wi-Fi. In questo esempio, si utilizzerà l'interfaccia ''wlan0''.
Innanzitutto, si attivi l'interfaccia Wi-Fi. Per questo esempio utilizzeremo ''wlan0'' come interfaccia:
+
  
 
  # ip link set wlan0 up
 
  # 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.
+
Tipicamente, si dovrebbe essere in grado di utilizzare il driver '''W'''ireless '''EXT'''ensions per {{ic|wpa_supplicant}}. Se ciò non dovesse funzionare, potrebbe essere necessario cercare informazioni su come connettersi con il proprio adattatore wireless.
  
Si dia il seguente comando da root:
+
Si esegua il seguente comando come root:
  
 
  # wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf  
 
  # 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].
+
Il comando di cui sopra indica a {{ic|wpa_supplicant}} di utilizzare la propria configurazione hardware di default (WEXT - Linux '''W'''ireless '''EXT'''ensions) ed i associarsi con il SSID specificato nel file {{ic|/etc/wpa_supplicant.conf}} utilizzando il dispositivo ''wlan0'' e spostando il processo in background ({{ic|-B}}). Per un output più prolisso, si aggiungano i parametri {{ic|-d}} o {{ic|-dd}} (debug). È possibile trovare ulteriori esempi a [http://www.examplenow.com/wpa_supplicant/ questo] indirizzo.
  
Nell'output stampato a console, dovrebbe esserci una linea che contiene ''''Associated:'''', seguita da u n MAC Address. È ora sufficiente richiedere un indirizzo IP valido.
+
Nell'output a console, dovrebbe apparire una linea contenente '''Associated:''', seguita da un indirizzo MAC. Ora si avrà bisogno di un indirizzo IP.
  
Si esegua, come root:
+
{{Nota|Se non si desidera modificare il file {{ic|/etc/wpa_supplicant.conf}} (ad esempio se si sta installando Arch), è possibile passare l'output di {{ic|wpa_passphrase}} direttamente a {{ic|wpa_supplicant}}:
 +
{{bc|wpa_passphrase essid pass <nowiki>|</nowiki> wpa_supplicant -B -i wlan0 -c /dev/stdin}} }}
 +
 
 +
Come root, si esegua:
  
 
  # dhcpcd wlan0
 
  # 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.}}
+
{{Nota|Non si richieda immediatamente un indirizzo IP! È necessario aspettare per assicurarsi che l'associazione con l'Access Point sia avvenuta con successo. Se si sta scrivendo uno script, si utilizzi {{ic|sleep 10s}} per attendere 10 secondi.}}
  
Si verifichi che l'interfaccia abbia un indirizzo IP usando il pacchetto {{ic|iproute}}:
+
Si verifichi quindi che l'interfaccia abbia ricevuto un indirizzo IP usando il pacchetto {{Pkg|iproute}}:
  
{{hc|
+
{{bc|
# ip addr show wlan0|
+
 
<nowiki>
 
<nowiki>
 +
# ip addr show wlan0
 +
 
   wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 
   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
 
   link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
Line 167: Line 228:
 
}}
 
}}
  
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 durante la 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]].
+
Se l'output è simile a quello sopra, ci si è connessi alla rete.
 +
 
 +
Si noti che l'intero procedimento ''non'' è permanente, il che significa che al prossimo riavvio sarà necessario ripetere nuovamente i comandi.
 +
 
 +
Ci sono varie altrnative per ottenere un setup autometico della propria rete:
 +
 
 +
* Scrivere tutti i comandi necessari in uno script, ed eseguirlo automaticamente al boot inserendolo in {{ic|/etc/rc.local}}.
 +
** Script di shell con funzionalità amministrative possono essere salvati in {{ic|/usr/local/bin}}.
 +
* Usare tool di terze parti per la gestione della rete. È possibile utilizzare gli script forniti dal pacchetto {{Pkg|netcfg2}} per ottenere una configurazione permanente ed accedere alla rete all'avvio della macchina.
 +
Si può inoltre utilizzare un'interfaccia grafica non in vasiva come [[Wicd (Italiano)|Wicd]] o i profili di rete forniti da [[Netcfg (Italiano)|Netcfg]].
 +
 
 +
===wpa_gui e wpa_cli===
 +
 
 +
Esistono due frontends a wpa_supplicant scritti dagli sviluppatori dello stesso: {{ic|wpa_cli}} e {{ic|wpa_gui}}. wpa_cli è, come ci si aspetterebbe, un frontend a linea di comando, mentre "wpa_gui" è un'interfaccia a wpa_supplicant che utilizza le librerie Qt. wpa_cli è inclusa nel pacchetto wpa_supplicant, mentre {{Pkg|wpa_supplicant_gui}} è fornito separatamente.
 +
I dettagli relativi all'impostazione di wpa_supplicant per funzionare con l'uno o l'altro frontend sono riportati in [[#Metodo dinamico: 'wpa_gui', 'wpa_cli']]
 +
 
 +
Quando si invoca {{ic|wpa_cli}} senza argomenti, verrà avviato un prompt specifico. Si scriva {{ic|help}} per ricevere aiuto.
 +
 
 +
L'interfaccia wpa_gui è abbastanza intuitiva. Se si preme il bottone "Scan", verrà visualizzata una lista degli SSID rilevati. Se si effettua un doppio click su uno di questi, comparirà una finestra di dialogo che consentirà di inserire le informazioni richieste per l'associazione alla rete. Nella maggior parte dei casi, si dovrà inserire la pre-shared key (PSK) se si sta utilizzando WPA/WPA2, o la propria {{ic|key0}} se si utilizza WEP. Il protocollo utilizzato dalla rete dovrebbe essere rilevato automaticamente. Altre cose, come l'autenticazione 802.1X richiederanno configurazioni aggiuntive.
 +
 
 +
{{Attenzione|Il protocollo WEP è compromesso e non dovrebbe venir utilizzato al di fuori di ambienti di laboratorio o di test. Si utilizzi ''almeno'' WPA (WPA2 è raccomandato) per una rete più sicura.}}
 +
 
 +
Dopo aver aggiunto una rete, è possibile modificarla se ad esempio si è  cambiata la PSK (Pre-shared Key). Si clicchi sul tab "Manage Networks" e si selezioni la rete da modificare/rimuovere. È inoltre possibile aggiungere una rete anche senza effettuare la scansione; operazione obbligatoria se il proprio access point non effettua il broadcast del SSID.
 +
 
 +
{{Nota|Impostare il proprio access point per non effettuare il broadcast del SSID '''non''' aumenterà la sicurezza della propria rete wireless. È infatti molto semplice identificare SSID nascosti.}}
 +
 
 +
{{Nota|wpa_cli e wpa_gui non richiedono un indirizzo IP, né creano una tabella di routing: servono infatti solo per l'associazione all'access point. È possibile utilizzare lo script {{AUR|wpa_auto}}, disponibile su [[AUR (Italiano)|AUR]], per avviare  {{ic|wpa_supplicant}} al boot ed avviare automaticamente un client DHCP per configurare la propria connessione una volta che ci si è associati alla rete wireless, oppure è possibile scrivere uno script di proprio pugno. Utility per la gestione della rete di più alto livello sono in grado di gestire sia reti cablate che wireless.}}
 +
 
 +
====Action script====
 +
 
 +
Si scriva uno script simile al seguente:
 +
 
 +
{{hc|
 +
~/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===
 +
 
 +
Si installi netcfg:
 +
 
 +
# pacman -S netcfg
 +
 
 +
Si crei un profilo di rete copiando il file di esempio:
 +
 
 +
# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
 +
 
 +
Si modifichi il file appena creato, assicurandosi che usi l'interfaccia corretta:
 +
 
 +
INTERFACE="wlan0"
 +
 
 +
Il resto del file dovrebbe rimanere inalterato.
 +
 
 +
Si modifichi ora {{ic|/etc/rc.conf}}, e si aggiunga il profilo di rete all'array NETWORKS:
 +
 
 +
NETWORKS=(wpa_suppl)
 +
 
 +
Infine, si attivi il servizio net-profiles, per falo partire al boot usando {{Pkg|systemd}}:
 +
 
 +
# systemctl enable netcfg@wpa_suppl
 +
 
 +
Al prossimo riavvio, l'interfaccia wireless verrà attivata e wpa_supplicant sarà avviato e se una rete conosciuta è disponibile, verrà stabilita una connessione.
 +
 
 +
Per ulteriori informazioni si veda la pagina del wiki relativa a [[Netcfg (Italiano)|netcfg]].
 +
 
 +
===Wicd===
 +
 
 +
Si installi Wicd:
 +
 
 +
# pacman -S wicd
 +
 
 +
L'utilizzo di Wicd è molto semplice; si effettui la scansione delle reti, si inseriscano i dati necessari e si effettui la connessione. Potrebbe essere necessario aggiungere {{ic|/usr/lib/wicd/autoconnect.py}} agli script di init e power management per riconnettersi alle proprie reti, se si è impostata la connessione automatica alle stesse.
 +
 
 +
==Risoluzione dei problemi==
 +
 
 +
La maggior parte dei problemi è riscontrabile nel processo di associazione, perciò si dovrebbe controlalre attentamente l'output di wpa_supplicant se si sospetta che non stia funzionando a dovere. Si aggiunga {{ic|-d}} (per il debug) per aumentare la verbosità. Solitamente {{ic|-dd}} è abbastanza, mentre {{ic|-dddd}} potrebbe essere eccessivo.
 +
 
 +
Mentre si controlla il log, si cerchino voci simili a questa:
 +
 
 +
ioctl[QUALCOSA]: Operation not supported
 +
 
 +
Se è apparso un messaggio del genere, significa che ci sono problemi con i driver: si provi ad aggiornarli, oppure a cambire il parametro {{ic|-D}} di wpa_supplicant.
 +
 
 +
Un altro problema comune sono i messaggi: {{ic|No suitable AP found}}. In questo caso, wpa_supplicant potrebbe avere problemi a trovare reti con SSID nascosto. Solitamente aggiungere {{ic|1=scan_ssid=1}} al proprio blocco {{ic|network}} risolverà il problema.
 +
 
 +
===Fallback: ricompilazione di wpa_supplicant===
 +
 
 +
Ci si procuri una copia del sorgente di {{ic|wpa_supplicant}} dalla relativahomepage o usando [[ABS (Italiano)|ABS]]. Una volta scaricato ed estratto il tarball, si controlli il contenuto del file {{ic|.config}} (sì, è nascosto!). La sintassi è simile a quella di un file di configurazione del kernel; solo più in piccolo.
 +
 
 +
Si cerchino le sezioni chiamate {{ic|CONFIG_DRIVER_''NOMEDRIVER''}} e si scelga se abilitarle o meno, a seconda del driver che si intende utilizzare. Si faccia attenzione durante la scelta delle opzioni, poichè sarà necessario speficiare il percorso al sorgende dei propri driver wireless per compilare correttamente i componenti di associazione di basso livello.
 +
 
 +
Alcuni adattatori basati su chipset Atheros, potrebbero richiedere la compilazione di {{ic|wpa_supplicant}} utilizzando l'ultima release dei driver  {{ic|madwifi-svn}}. Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione:
 +
 
 +
'''esempio con driver madwifi''': Si modifichino le seguenti linee nel file di configurazione, assumendo che si sia compilato madwifi tramite ABS e che il codice sorgente della build risieda in {{ic|/var/abs/local/madwifi/src/}}:
 +
 
 +
#Driver interface for madwifi driver
 +
CONFIG_DRIVER_MADWIFI=y
 +
#Change include directories to match with the local settings
 +
CFLAGS += -I/var/abs/local/madwifi/src/madwifi
 +
 
 +
Una volta terminata la configurazione, si proceda con {{ic|makepkg}} come al solito.
 +
 
 +
===Non è possibile usare wpa_gui per configurare nuove reti===
 +
 
 +
Di default, la variabile {{ic|ap_scan}} ha valore {{ic|0}}, il che significa che wpa_supplicant delega al driver LAN il compito di effettuare la scansione degli access points. Se il proprio driver non supporta questa operazione, wpa_supplicant terminerà quando gli verrà richiesta la scansione. Si aggiunga quindi:
 +
 
 +
ap_scan=1
 +
 
 +
al proprio {{ic|/etc/wpa_supplicant.conf}}
 +
 
 +
===Impossibile ottenere un indirizzo IP dal server DHCP===
 +
 
 +
Quanto segue è frutto di un'esperienza personale. Non so perchè il tutto funziona in questo modo, ma forse altri utenti hanno lo stesso problema. Dopo i seguenti comandi, non mi viene assegnato un IP dal server DHCP:
 +
 
 +
ifconfig wlan0
 +
iwconfig wlan0 essid "myEssid"
 +
wpa_supplicant -B -D wext  -i wlan0 -c /etc/wpa_supplicant.conf
 +
sleep 15; dhcpcd wlan0 #oppure dhclient wlan0
 +
 
 +
Per aggirare il problema, uso questo workaround:
 +
 
 +
killall wpa_supplicant -SIGHUP
 +
iwconfig wlan0 essid "myEssid" key on #forse "key on" è opzionale
 +
sleep 15; dhcpcd wlan0
 +
 
 +
Quando scrivo:
 +
 
 +
ps aux | grep wpa
 +
 
 +
Noto un processo di {{ic|wpa_supplicant}} attivo benchè l'abbia appena ucciso. Sembrerebbe che {{ic|iwconfig}} avvii il servizio per me.
 +
 
 +
La mia scheda wireless è:
 +
 
 +
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
 +
 
 +
===Errore di associazione al boot con netcfg===
 +
 
 +
Quanto segue è un'esperienza personale. La mia scheda di rete Broadcom BCM4322 è abbastanza lenta nella fase di associazione durante l'avvio del sistema. Si provi quindi ad aggiungere la seguente lina in {{ic|/etc/network.d/<vosto profilo>}}:
 +
 
 +
TIMEOUT=30
 +
 
 +
Si riavvii per applicare i cambiamenti.
 +
 
 +
{{Nota|{{ic|1=TIMEOUT=30}} potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.}}
 +
 
 +
===La connessione wireless cade spesso===
 +
 
 +
Se la propria connessione cade spesso e dmesg mostra questo messaggio:
 +
 
 +
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
  
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.
+
una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.

Revision as of 08:41, 19 December 2012


Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: net-tools e wireless-tools sono deprecati. (Discuss in Talk:WPA supplicant (Italiano)#)

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements.Tango-edit-clear.png

Reason: Uso non corretto dei template, stile non enciclopedico. (Discuss in Talk:WPA supplicant (Italiano)#)

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 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, 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 o similari. Se si preferisce connettersi alla rete usando un tool grafico, questo articolo non fa per voi.

Installazione

E' possibile installare WPA Supplicant tramite il pacchetto wpa_supplicant, disponibile nei repository ufficiali.

Il pacchetto è stato compilato con il supporto ad una larga gamma di hardware wireless. A titolo informativo, questa è la lista completa, ottenibile eseguendo wpa_supplicant:

wpa_supplicant

Driver list:

*HostAP
*Prism54
*NDISWrapper
*AMTEL
*IPW (both 2100 and 2200 drivers)
*WEXT (Generic Linux wireless extensions)
*Wired ethernet

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 /var/abs/core/support/wpa_supplicant, se il tree di ABS è installato.

Opzionale: Installare l'interfaccia grafica

Gli utenti che preferiscono disporre di un'interfaccia grafica possono installare il pacchetto wpa_supplicant-gui, una GUI creata dagli stessi sviluppatori di wpa_supplicant e disponibile nei repository ufficiali.

Configurazione e connessione

WPA Supplicant è pacchettizzato con un file di configurazione d'esempio: /etc/wpa_supplicant/wpa_supplicant.conf, il quale è ben commentato e fornisce numerose informazioni sulle meccaniche di rete. Tutte le variabili usate in questo articolo sono descritte in questo file, che contiene inoltre molte configurazioni d'esempio già preimpostate, pertanto ne è fortemente consigliata la lettura, assieme alle pagine di manuale man wpa_supplicant e man wpa_supplicant.conf.

Il file di configurazione di WPA Supplicant contiene tutte le impostazioni relative a wpa_supplicant. È possibile crearne quanti se ne vuole e posizionarli dove più vi aggrada, dal momento che è necessario specificare il file di configurazione da utilizzare ad ogni invocazione di wpa_supplicant.

Il contenuto del file è molto semplice:

  • La prima parte riguarda la configurazione generale. È una serie di linee contenenti coppie chiave-valore.
  • La seconda parte è composta dai network blocks, uno per ogni profilo che si desidera impostare.

Per semplificare, si lascerà invariato il file di configurazione d'esempio e si partirà da zero creando il file /etc/wpa_supplicant.conf.

Ci sono molti modi per configurare wpa_supplicant, ed è possibile scegliere tra quelli sotto elencati.

Metodo manuale

File di configurazione

Innanzitutto è necessario essere in possesso di tutti i parametri relativi alla connessione al proprio Access Point:

# iw wlan0 scan

Ulteriori dettagli sono disponibili qui.

Ora dovreste conoscere i seguenti parametri necessari a wpa_supplicant per funzionare:

  • SSID
  • proto (opzionale su reti non protette)
  • key_mgmt
  • pairwise
  • group

Inoltre, si potrebbe aver bisogno dei parametri di autenticazione (EAP, PEAP, ecc.) se si è su reti particolari, come quelle universitarie, ad esempio.

Primi ritocchi

È ora possibile procedere con la creazione di un network block nel file di configurazione:

wpa_supplicant.conf

network={
        ssid="mywireless_ssid"
        psk="secretpassphrase"
        # parametri aggiuntivi (proto, key_mgmt, etc.)
}

Questo è il file di configurazione di base necessario affinchè l'autenticazione WPA funzioni. La prima riga è la dichiarazione d'apertura del network block, la seconda contiene l'SSID dell'Access Point al quale si vuole connetterti, mentre la terza è la passphrase.

Attenzione: Ci si ricordi di usare i doppi apici alle voci ssid e psk!

Passphrase e PSK

Il lettore attento avrà notato che la PSK dovrebbe essere una stringa esadecimale. Infatti, la passphrase e la PSK non sono esattamente la stessa cosa: la passphrase è una chiave leggibile dall'utente che viene usata in combinazione con il SSID per generare la chiave di rete "machine friendly" conosciuta come "PSK". A livello di rete, la passphrase non viene mai usata, e rappresenta solamente un modo comodo per gestire la chiave da parte degli utenti.

Se si vuole risparmiare tempo, è possibile fornire direttamente la versione esadecimale della passphrase, usando l'utility wpa_passphrase, che è fornita dal pacchetto wpa_supplicant stesso. Si utilizzi la sintassi wpa_passphrase [ssid] [passphrase].

  • Un esempio:
# wpa_passphrase mywireless_ssid "secretpassphrase"

Il comando dovrebbe generare il seguente network block:

network={
       ssid="mywireless_ssid"
       #psk="secretpassphrase"
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}

La terza linea è la passphrase (la chiave leggibile dall'utente) e la quarta la PSK (la chiave esadecimale), che è richiesta per la connessione. Il # commenta la linea relativa alla passphrase, dal momento che utilizzeremo la PSK per la connessione.

Nota: La PSK esadecimale non deve essere inclusa tra doppi apici.
  • Utilizzando wpa_passphrase si specifichi il proprio SSID reale e la propria passphrase, e si rediriga l'output su /etc/wpa_supplicant.conf:
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf

Il >> redirigerà l'output su /etc/wpa_supplicant.conf, aggiungendolo ad eventuali righe preesistenti. È possibile aggiungere un numero illimitato di network blocks, e wpa_supplicant saprà quale utilizzare in base agli SSID trovati nell'area.

Opzioni del network block

Tutti i parametri di sicurezza devono essere specificati qui. Si noti che se si è insicuri sui valori richiesti dal proprio Access Point, è possibile utilizzarne diversi contemporaneamente, e wpa_supplicant sceglierà automaticamente quello funzionante.

Ad esempio, è possibile aggiungere:

proto=WEP WPA

in modo che il se prorpio Access Point utilizza WEP o WPA, il tutto funzionerà in entrambi i casi. Se però lo stesso utilizza RSN (ovvero WPA2), sarà necessario aggiungerlo agli altri valori.

Se il SSID è nascosto, si aggiunga la seguente opzione al network block:

scan_ssid=1

Se è necessario connettersi a più reti, si definisca un altro network block nello stesso file. È possibile specificare la priorità per ognuno di essi:

priority=17

Si cambi la priorità a piacere, ricordandosi che i numeri più grandi avranno la precedenza.

Ci sono inoltre numerose altre opzioni di configurazioni impostabili nel network block che è possibile trovare nel file di configurazione originale. Nella maggior parte dei casi non si avrà bisogno di specificare nulla oltre ai paremetri di default.

Opzioni globali Sarà infine necessario specificare le opzioni globali. Aggiungerle in testa al proprio /etc/wpa_supplicant.conf con il proprio editor preferito. La seguente linea è obbligatoria:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
Nota: Per l'uso con netcfg-2.6.1-1 in [testing] (dal 25-06-2011), ctrl_interface dovrebbe avere valore /run/wpa_supplicant (si noti l'assenza di /var/...). Tuttavia, questo causerà il mancato funzionamento di wpa_cli (si utilizzi l'opzione -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".

Sono disponibili molti parametri opzionali (si legga /etc/wpa_supplicant/wpa_supplicant.conf

ap_scan=0
fast_reauth=1
Nota: Le proprie informazioni di rete sarano immagazzinate in plain text, ed è pertanto consigliabile cambiare i permessi del file /etc/wpa_supplicant.conf appena creato (es: chmod 600 /etc/wpa_supplicant.conf per renderlo leggibile solamente a root), a seconda di quanto si è attenti alla propria sicurezza.

Esempio completo

wpa_supplicant.conf

ctrl_interface = DIR=/var/run/wpa_supplicant GROUP=wheel
fast_reauth = 1
ap_scan = 1

network ={
    ssid     = "mySSID"
    proto    = RSN
    key_mgmt = WPA-EAP
    pairwise = TKIP CCMP
    auth_alg = OPEN
    group    = TKIP
    eap      = PEAP
    identity = "myUsername"
    password = "********"
}

Configurazioni più sofisticate, come l'autenticazione tramite server RADIUS o EAPOL sono descritte in dettaglio nella pagina di manuale wpa_supplicant.conf (man wpa_supplicant.conf). Ci si ricordi di leggere anche /etc/wpa_supplicant/wpa_supplicant.conf, poichè tali configurazioni esulano dallo scopo di questo documento.

Connessione

È ora possibile provare a connettersi manualmente.

Innanzitutto, si attivi la propria interfaccia Wi-Fi. In questo esempio, si utilizzerà l'interfaccia wlan0.

# ip link set wlan0 up

Tipicamente, si dovrebbe essere in grado di utilizzare il driver Wireless EXTensions per wpa_supplicant. Se ciò non dovesse funzionare, potrebbe essere necessario cercare informazioni su come connettersi con il proprio adattatore wireless.

Si esegua il seguente comando come root:

# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf 

Il comando di cui sopra indica a wpa_supplicant di utilizzare la propria configurazione hardware di default (WEXT - Linux Wireless EXTensions) ed i associarsi con il SSID specificato nel file /etc/wpa_supplicant.conf utilizzando il dispositivo wlan0 e spostando il processo in background (-B). Per un output più prolisso, si aggiungano i parametri -d o -dd (debug). È possibile trovare ulteriori esempi a questo indirizzo.

Nell'output a console, dovrebbe apparire una linea contenente Associated:, seguita da un indirizzo MAC. Ora si avrà bisogno di un indirizzo IP.

Nota: Se non si desidera modificare il file /etc/wpa_supplicant.conf (ad esempio se si sta installando Arch), è possibile passare l'output di wpa_passphrase direttamente a wpa_supplicant:
wpa_passphrase essid pass | wpa_supplicant -B -i wlan0 -c /dev/stdin

Come root, si esegua:

# dhcpcd wlan0
Nota: Non si richieda immediatamente un indirizzo IP! È necessario aspettare per assicurarsi che l'associazione con l'Access Point sia avvenuta con successo. Se si sta scrivendo uno script, si utilizzi sleep 10s per attendere 10 secondi.

Si verifichi quindi che l'interfaccia abbia ricevuto un indirizzo IP usando il pacchetto iproute:


# ip addr show wlan0

   wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.62/24 brd 192.168.0.255 scope global eth0
   inet6 fe80::224:2bff:fed3:759e/64 scope link 
      valid_lft forever preferred_lft forever

Se l'output è simile a quello sopra, ci si è connessi alla rete.

Si noti che l'intero procedimento non è permanente, il che significa che al prossimo riavvio sarà necessario ripetere nuovamente i comandi.

Ci sono varie altrnative per ottenere un setup autometico della propria rete:

  • Scrivere tutti i comandi necessari in uno script, ed eseguirlo automaticamente al boot inserendolo in /etc/rc.local.
    • Script di shell con funzionalità amministrative possono essere salvati in /usr/local/bin.
  • Usare tool di terze parti per la gestione della rete. È possibile utilizzare gli script forniti dal pacchetto netcfg2 per ottenere una configurazione permanente ed accedere alla rete all'avvio della macchina.

Si può inoltre utilizzare un'interfaccia grafica non in vasiva come Wicd o i profili di rete forniti da Netcfg.

wpa_gui e wpa_cli

Esistono due frontends a wpa_supplicant scritti dagli sviluppatori dello stesso: wpa_cli e 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 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 wpa_cli senza argomenti, verrà avviato un prompt specifico. Si scriva 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 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 wpa_autoAUR, disponibile su AUR, per avviare wpa_supplicant al boot ed avviare automaticamente un client DHCP per configurare la propria connessione una volta che ci si è associati alla rete wireless, oppure è possibile scrivere uno script di proprio pugno. Utility per la gestione della rete di più alto livello sono in grado di gestire sia reti cablate che wireless.

Action script

Si scriva uno script simile al seguente:

~/libexec/wpa_cli-action.sh

case $2 in
CONNECTED)
	dhcpcd -x $1 >/dev/null
	dhcpcd $1 >/dev/null
;;
esac

Lo si renda eseguibile e si lanci 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 ctrl_interface affinchè wpa_cli funzioni.

Si lanci ora wpa_cli in modalità demone, indicandogli lo script appena scritto:

# wpa_cli -B -a ~/libexec/wpa_cli-action.sh

Per avviare automatcamente wpa_supplicant e wpa_cli al boot, si aggiungano le seguenti linee al file /etc/rc.local:

wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
wpa_cli -B -a  /path/al/proprio/wpa_cli-action.sh

netcfg

Si installi netcfg:

# pacman -S netcfg

Si crei un profilo di rete copiando il file di esempio:

# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl

Si modifichi il file appena creato, assicurandosi che usi l'interfaccia corretta:

INTERFACE="wlan0"

Il resto del file dovrebbe rimanere inalterato.

Si modifichi ora /etc/rc.conf, e si aggiunga il profilo di rete all'array NETWORKS:

NETWORKS=(wpa_suppl)

Infine, si attivi il servizio net-profiles, per falo partire al boot usando systemd:

# systemctl enable netcfg@wpa_suppl

Al prossimo riavvio, l'interfaccia wireless verrà attivata e wpa_supplicant sarà avviato e se una rete conosciuta è disponibile, verrà stabilita una connessione.

Per ulteriori informazioni si veda la pagina del wiki relativa a netcfg.

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 /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 -d (per il debug) per aumentare la verbosità. Solitamente -dd è abbastanza, mentre -dddd potrebbe essere eccessivo.

Mentre si controlla il log, si cerchino voci simili a questa:

ioctl[QUALCOSA]: Operation not supported

Se è apparso un messaggio del genere, significa che ci sono problemi con i driver: si provi ad aggiornarli, oppure a cambire il parametro -D di wpa_supplicant.

Un altro problema comune sono i messaggi: No suitable AP found. In questo caso, wpa_supplicant potrebbe avere problemi a trovare reti con SSID nascosto. Solitamente aggiungere scan_ssid=1 al proprio blocco network risolverà il problema.

Fallback: ricompilazione di wpa_supplicant

Ci si procuri una copia del sorgente di wpa_supplicant dalla relativahomepage o usando ABS. Una volta scaricato ed estratto il tarball, si controlli il contenuto del file .config (sì, è nascosto!). La sintassi è simile a quella di un file di configurazione del kernel; solo più in piccolo.

Si cerchino le sezioni chiamate CONFIG_DRIVER_NOMEDRIVER e si scelga se abilitarle o meno, a seconda del driver che si intende utilizzare. Si faccia attenzione durante la scelta delle opzioni, poichè sarà necessario speficiare il percorso al sorgende dei propri driver wireless per compilare correttamente i componenti di associazione di basso livello.

Alcuni adattatori basati su chipset Atheros, potrebbero richiedere la compilazione di wpa_supplicant utilizzando l'ultima release dei driver madwifi-svn. Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione:

esempio con driver madwifi: Si modifichino le seguenti linee nel file di configurazione, assumendo che si sia compilato madwifi tramite ABS e che il codice sorgente della build risieda in /var/abs/local/madwifi/src/:

#Driver interface for madwifi driver
CONFIG_DRIVER_MADWIFI=y
#Change include directories to match with the local settings
CFLAGS += -I/var/abs/local/madwifi/src/madwifi

Una volta terminata la configurazione, si proceda con makepkg come al solito.

Non è possibile usare wpa_gui per configurare nuove reti

Di default, la variabile ap_scan ha valore 0, il che significa che wpa_supplicant delega al driver LAN il compito di effettuare la scansione degli access points. Se il proprio driver non supporta questa operazione, wpa_supplicant terminerà quando gli verrà richiesta la scansione. Si aggiunga quindi:

ap_scan=1

al proprio /etc/wpa_supplicant.conf

Impossibile ottenere un indirizzo IP dal server DHCP

Quanto segue è frutto di un'esperienza personale. Non so perchè il tutto funziona in questo modo, ma forse altri utenti hanno lo stesso problema. Dopo i seguenti comandi, non mi viene assegnato un IP dal server DHCP:

ifconfig wlan0
iwconfig wlan0 essid "myEssid"
wpa_supplicant -B -D wext  -i wlan0 -c /etc/wpa_supplicant.conf
sleep 15; dhcpcd wlan0 #oppure dhclient wlan0

Per aggirare il problema, uso questo workaround:

killall wpa_supplicant -SIGHUP
iwconfig wlan0 essid "myEssid" key on #forse "key on" è opzionale
sleep 15; dhcpcd wlan0

Quando scrivo:

ps aux | grep wpa

Noto un processo di wpa_supplicant attivo benchè l'abbia appena ucciso. Sembrerebbe che iwconfig avvii il servizio per me.

La mia scheda wireless è:

Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)

Errore di associazione al boot con netcfg

Quanto segue è un'esperienza personale. La mia scheda di rete Broadcom BCM4322 è abbastanza lenta nella fase di associazione durante l'avvio del sistema. Si provi quindi ad aggiungere la seguente lina in /etc/network.d/<vosto profilo>:

TIMEOUT=30

Si riavvii per applicare i cambiamenti.

Nota: TIMEOUT=30 potrebbe essere un valore troppo alto, ma è possibile cambiarlo con uno più consono alla propria configurazione.

La connessione wireless cade spesso

Se la propria connessione cade spesso e dmesg mostra questo messaggio:

wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)

una soluzione potrebbe essere quella di disabilitare l'opzione "group key update interval" nel pannello di configurazione del proprio router.