Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
m
Line 1: Line 1:
 
{{i18n|WPA supplicant}}
 
{{i18n|WPA supplicant}}
 
[[Category:Wireless Networking (Italiano)]]
 
[[Category:Wireless Networking (Italiano)]]
 
{{Translateme}}
 
  
 
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.

Revision as of 19:35, 7 February 2012

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

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

Si installi il demone:

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

Per chi preferisce disporre di un'interfaccia grafica, è possibile utilizzare una GUI creata dagli stessi sviluppatori di wpa_supplicant, e disponibile nel repository [extra]:

# pacman -S wpa_supplicant_gui

Configurazione e connessione

Il file /etc/wpa_supplicant.conf contiene tutte le impostazioni per 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 /etc/wpa_supplicant.conf, poichè non è richiesto al momento.

# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original

Metodo dinamico: 'wpa_gui', 'wpa_cli'

wpa_gui e wpa_cli richiedono un /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 [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".

La configurazione presentata sopra, permetterà agli utenti appartenenti al gruppo network di controllare wpa_supplicant usando i frontends wpa_gui e wpa_cli. L'opzione update-config=1 consentirà a questi due programmi di modificare automanticamente il file /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 -D specifica il driver wireless in uso (che è quasi sempre wext), -i specifica l'interfaccia (si sostituisca wlan0 con il nome della propria interfaccia) e -c indica il file di configurazione da utilizzare (solitamente /etc/wpa_supplicant.conf). Infine, -B forza a wpa_supplicant ad avviarsi come demone. Sarà necessario avviare wpa_supplicant come root (o con i relativi permessi usando sudo), benchè ogni utente appartenente al gruppo 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 /etc/wpa_supplicant.conf.

Metodo classico: /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 wpa_passphrase, che è fornita assieme a wpa_supplicant. Si usi la seguente sintassi:

  • Un esercizio d'esempio:
# wpa_passphrase mywireless_ssid "secretpassphrase"

Dovrebbe venir generato qualcosa di simile:


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

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 wpa_passphrase, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a /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 /etc/wpa_supplicant.conf di base partendo dall'output del comando wpa_passphrase.

Se, ad esempio, si usa il protocollo WPA2-Personal, sarà necessario aggiungere alcune linee nella corrispondente sezione "network":


network={
       ssid="mywireless_ssid"
       proto=RSN
       key_mgmt=WPA-PSK
       pairwise=CCMP TKIP
       group=CCMP TKIP 
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}

Nota: Le informazioni appena immesse verranno immagazzinate in formato testo: per questo motivo potrebbe essere preferibile cambiare i permessi del file /etc/wpa_supplicant.conf (es. 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 aggiungere altre reti WPA con il seguente comando:

# wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf

Il >> redirigerà l'output, appenendolo in coda al file /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 /etc/wpa_supplicant.conf:

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

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 Wireless EXTtensions (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 Wireless EXTensions) e di associarsi con il SSID specificato in /etc/wpa_supplicant.conf. Inoltre, l'associazione dovrà essere effettuata con il device wlan0, e il processo dovrà essere spostato in background (-B). Per avere un output più prolisso, si specifichino le opzioni -d o -dd (per il debug). È possibile trovare ulteriori esempi 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 sleep 10 per aspettare 10 secondi.

Si verifichi che l'interfaccia abbia 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 quanto visto sopra, la connessione è stata effettuata con successo. In questo caso, è possibile utilizzre 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 o affidarsi ai profili di rete forniti da netcfg.

Configurazioni più sofisticate come l'autenticazione attraverso EAPOL o server RADIUS sono descritte dettagliatamente nella pagina di manuale di wpa_supplicant (man wpa_supplicant.conf) ed esulano dallo scopo di questo articolo.

Fallback: ricompilazione di wpa_supplicant

Procurarsi una copia del sorgente di wpa_supplicant scaricandolo dalla relativa home page o da ABS. Una volta scaricato ed estratto il sorgente, si controlli il contenuto del file .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 CONFIG_DRIVER_NOMEDRIVER e si scelga tra "y" o "n", a seconda del driver che si desidrera utilizzare. Si presti attenzione nello scegliere le opzioni, poichè sarà necessario specificare il percorso ai sorgenti del driver wireless per compilare correttamente i componenti di basso livello necessari per l'associazione. Ad esempio, alcuni strani chipsets Atheros, hanno bisogno di una build pulita di wpa_supplicant, compilata sull'ultima release disponibiele dei driver madwifi-svn. Se questo è il vostro caso, ecco un esempio per aiutarvi durante il processo di compilazione.

Esempio per driver madwifi: Si modifichino le seguenti linee del file .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 /var/abs/local/madwifi/src.

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

Gestione

Semplice soluzione con wpa_cli

Se siete tra coloro che si trovano a disagio con la complessità e i bugs di netcfg, o volete ottenere delle conoscenze riapplicabili su altri sistemi operativi Linux, il pacchetto wpa_supplicant include wpa_cli, che consente di connettersi e modificare le impostazioni dell'interfaccia wireless in modo semplice.

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

Sola gestione delle reti wireless

Come menzionato sopra, 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.

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 {{ic|-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.

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 #or 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:
Template error: are you trying to use the = sign? Visit Help:Template#Escape template-breaking characters for workarounds.
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.