Difference between revisions of "WPA supplicant (Italiano)"

From ArchWiki
Jump to: navigation, search
(Created page with "Category:Wireless Networking (Italiano) Una rete protetta da una chiave WEP (sia statica che dinamica), può essere facilmente compromessa da un utente malevolo. WPA riso...")
 
(Configurazione)
(45 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
[[Category:Wireless Networking (Italiano)]]
 
[[Category:Wireless Networking (Italiano)]]
 +
[[es:WPA supplicant]]
 +
[[en:WPA supplicant]]
 +
[[ru:WPA Supplicant]]
 +
[[zh-CN:WPA Supplicant]]
  
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.
+
{{Article summary start}}
 +
{{Article summary text|Installazione ed utilizzo di wpa_supplicant}}
 +
{{Article summary heading|Argomenti correlati}}
 +
{{Article summary wiki|Configuring Network (Italiano)|Configurazione della rete}}
 +
{{Article summary wiki|Wireless Setup (Italiano)|Installazione dispositivi wireless}}
 +
{{Article summary end}}
  
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==
+
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] è un [[Wikipedia:Supplicant_(computer) | Supplicant WPA]] con supporto a WPA e WPA2 ([[Wikipedia:IEEE_802.11i|IEEE 802.11i]] / RSN (Robust Secure Network)) adatto all'uso con PC desktop e portatili e in sistemi embedded. {{ic|wpa_supplicant}} è il componente IEEE 802.1X/WPA utilizzato dai client, implementa la negoziazione della chiave con un WPA Authenticator, controlla il roaming e l'associazione / autenticazione del driver wlan.
  
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.
+
==Installazione==
  
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.
+
Si installi {{Pkg|wpa_supplicant}} dai [[Official Repositories (Italiano)|repository ufficiali]].
  
==Installazione==
+
È inoltre possibile installare {{Pkg|wpa_supplicant_gui}}; un frontend grafico per {{ic|wpa_supplicant}} che utilizza il toolkit {{Pkg|qt4}}.
  
Si installi il demone:
+
==Configurazione==
  
# pacman -S wpa_supplicant
+
{{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.
  
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 contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:
  
{{hc|
+
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
wpa_supplicant|
+
network={
<nowiki>
+
    ssid="..."
Driver list:
+
  }
 +
</nowiki>}}
  
*HostAP
+
Quanto sopra può essere facilmente generato utilizzando il tool {{ic|wpa_passphrase}}:
*Prism54
+
 
*NDISWrapper
+
{{hc|$ wpa_passphrase ''essid'' ''passphrase''|2=
*AMTEL
+
network={
*IPW (both 2100 and 2200 drivers)
+
  ssid=''essid''
*WEXT (Generic Linux wireless extensions)
+
  #psk=''passphrase''
*Wired ethernet
+
  psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
</nowiki>
+
}
 
}}
 
}}
 +
È ora possibile combinare l'utilizzo di {{ic|wpa_supplicant}} e {{ic|wpa_passphrase}} per collegarsi a praticamente tutte le reti WPA2 personali:
 +
 +
# wpa_supplicant -B -i ''interfaccia'' -c <(wpa_passphrase ''essid'' ''passphrase'')
 +
# dhcpcd -A ''interfaccia''
 +
 +
===Gestire una configurazione personalizzata===
 +
 +
{{Nota|Per identificare il nome dell'interfaccia di rete in uso, utilizzare il comando {{ic|ip link}}.}}
 +
 +
Come si è visto sopra, è possibile utilizzare {{ic|wpa_passphrase}} per generare una configurazione di base a cui aggiungere poi reti aggiuntive ed opzioni di propria scelta, che potrebbero essere necessarie in caso di configurazioni di rete avanzate che utilizzano [[Wikipedia:Extensible_Authentication_Protocol|EAP]] in modo estensivo.
 +
 +
Innanzitutto, si generi un file di configurazione minimale con {{ic|wpa_passphrase}}:
 +
 +
# wpa_passphrase ''essid'' ''passphrase'' > /etc/wpa_supplicant/foobar.conf
 +
 +
{{Suggerimento|Alcune passphrase particolarmente complesse potrebbero dover essere immesse in un file prima dell'utilizzo: {{ic|# wpa_passphrase foobarssid < passphrase.txt > /etc/wpa_supplicant/foobar.conf}}. }}
 +
 +
Si aggiunga quindi l'opzione {{ic|ctrl_interface}}, in modo da poter controllare il demone {{ic|wpa_supplicant}}. È possibile autorizzare {{ic|wpa_cli}} ad effettuare modifiche al file con l'opzione {{ic|1=update_config=1}}.
 +
 +
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 +
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel # consente ai membri del gruppo 'wheel' di controllare il demone
 +
  update_config=1
 +
  ap_scan=1
  
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.
+
  network={
 +
    ssid="foobarssid"
 +
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
 +
  }
 +
</nowiki>}}
  
===Opzionale: Installare l'interfaccia grafica===
+
È possibile aggiungere network blocks multipli al file di configurazione di cui sopra.
  
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]}}:
+
Per connettersi alla rete prescelta si eseguano i seguenti comandi:
  
  # pacman -S wpa_supplicant_gui
+
  # ip link set ''interfaccia'' up
 +
# wpa_supplicant -B -D nl80211 -i ''interfaccia'' -c /etc/wpa_supplicant/foobar.conf
 +
# dhcpcd -A ''interfaccia''
  
==Configurazione e connessione==
+
{{Nota|È preferibile utilizzare {{ic|nl80211}} rispetto al driver {{ic|wext}}, da considerarsi deprecato. Per ottenere un elenco dei driver supportati, si esegua {{ic|wpa_supplicant -h}}.}}
  
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.
+
Per reti di complessità crescente si studino gli esempi forniti nel file di configurazione di default sito in {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.
  
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
+
===Avvio tramite systemd===
  
===Metodo dinamico: 'wpa_gui', 'wpa_cli'===
+
Per avviare la connessione wireless automaticamente al boot, si abiliti il servizio {{ic|wpa_supplicant}} sull'interfaccia interessata. Se la propria connessione ottiene gli indirizzi tramite DHCP, abilitare anche {{ic|dhcpcd.service}}. Per gestire eventuali connessioni ethernet si installi {{Pkg|ifplugd}} e si abiliti il relativo servizio sull'interfaccia interessata.
  
wpa_gui e wpa_cli richiedono un {{ic|/etc/wpa_supplicant.conf}} molto minimale.
+
I comandi da eseguire potrebbero essere simili ai seguenti:
  
Di seguito un semplice esempio:
+
# systemctl enable wpa_supplicant@wlp3s1
 +
# systemctl enable dhcpcd
 +
# systemctl enable ifplugd@enp5s2
  
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
{{ic|wpa_supplicant}} gestirà il roaming per tutti i SSID contenuti nel suo file di configurazione e {{ic|ifplugd}} configurerà automaticamente l'interfaccia ethernet spegnendo quella wireless all'inserimento di un cavo ethernet nella macchina, mentre {{ic|dhcpcd}} si occuperà dell'asegnazione degli indirizzi IP alle varie interfacce.
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".}}
+
È necessario modificare il servizio {{ic|wpa_supplicant@.service}} per farlo puntare al file di configurazione corretto.
 +
Per ridefinire il valore della riga {{ic|1=ExecStart=}} si crei il seguente file:
  
La configurazione presentata sopra, permetterà agli utenti appartenenti al gruppo {{ic|network}} di controllare {{ic|wpa_supplicant}} usando i frontends wpa_gui e wpa_cli. L'opzione {{ic|1=update-config=1}} consentirà a questi due programmi di modificare automanticamente il file {{ic|/etc/wpa_supplicant.conf}}, al fine di aggiungere nuove reti o effettuare modifiche a quelle esistenti.
+
{{hc|/etc/systemd/system/wpa_supplicant@.service.d/foo.conf|<nowiki>
 +
  [Service]
 +
  ExecStart=
 +
  ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/bar.conf -i%i
 +
</nowiki>}}
  
Si avvii quindi wpa_supplicant:
+
La direttva {{ic|WantedBy}} del .service correntemente fornito non è corretta. Se la riga nel servizio {{ic|wpa_supplicant@.service}} non corrisponde al nome della propria interfaccia di rete (wlan0), sarà necessario copiare il servizio in {{ic|/etc/systemd/system}} ed apportare le dovute modifiche.
  
  # wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant.conf -B
+
  [Install]
 +
WantedBy=multi-user.target
  
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.
+
Il problema è stato risolto in [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=commitdiff;h=893a0a558cd8fd9a7dc5827f379e0f8a273a4fe5 questo] commit.
  
wpa_gui e wpa_cli dovrebbero ora funzionare.
+
==Link correlati==
  
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}}.
+
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant documentazione di wpa_supplicant su kernel.org]

Revision as of 18:37, 24 August 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end


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

Installazione

Si installi wpa_supplicant dai repository ufficiali.

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

Configurazione

wpa_supplicant fornisce un file di configurazione d'esempio situato in /etc/wpa_supplicant/wpa_supplicant.conf che documenta in modo dettagliato tutte le opzioni disponibili e relative configurazioni.

Il contenuto minimo richiesto dal file di configurazione è un network block; ad esempio:

/etc/wpa_supplicant/foobar.conf
network={
    ssid="..."
  }

Quanto sopra può essere facilmente generato utilizzando il tool wpa_passphrase:

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

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

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

Gestire una configurazione personalizzata

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

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

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

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

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

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

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

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

Per connettersi alla rete prescelta si eseguano i seguenti comandi:

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

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

Avvio tramite systemd

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

I comandi da eseguire potrebbero essere simili ai seguenti:

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

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

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

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

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

[Install]
WantedBy=multi-user.target

Il problema è stato risolto in questo commit.

Link correlati