02.06.2013 Views

UnicamWiFi con Debian/GNU/Linux - Università degli Studi di ...

UnicamWiFi con Debian/GNU/Linux - Università degli Studi di ...

UnicamWiFi con Debian/GNU/Linux - Università degli Studi di ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Guida alla Connessione<br />

<strong>UnicamWiFi</strong> <strong>con</strong><br />

<strong>Debian</strong>/<strong>GNU</strong>/<strong>Linux</strong><br />

Valerio Passini


In<strong>di</strong>ce generale<br />

INTRODUZIONE................................................................................................3<br />

REQUISITI PRELIMINARI....................................................................................3<br />

Scheda Wireless...........................................................................................3<br />

Driver...........................................................................................................5<br />

Mini Troubleshooting ...................................................................................7<br />

CONFIGURAZIONE RETE WIRELESS..................................................................7<br />

Openssl (installazione e uso).......................................................................7<br />

Wpa_supplicant (installazione, <strong>con</strong>figurazione e uso)..................................8<br />

Dhclient (client dhcp)...................................................................................9<br />

USARE NETWORKMANAGER...........................................................................10<br />

RINGRAZIAMENTI...........................................................................................13<br />

LICENZA.........................................................................................................13


INTRODUZIONE<br />

Premetto che questa guida non è la soluzione a tutti i vostri problemi <strong>di</strong><br />

<strong>con</strong>nessione <strong>con</strong> il sistema del pinguino, ma potrebbe esserlo se foste<br />

abbastanza fortunati e volenterosi da:<br />

0) Avere la pazienza <strong>di</strong> seguire la guida (requisito in<strong>di</strong>spensabile)<br />

1) Avere una scheda wireless pienamente supportata (incluso WPA)<br />

2) Avere i driver per essa (ed eventualmente il firmware) correttamente<br />

installato<br />

Se già sapete <strong>di</strong> avere tutto questo potete <strong>di</strong>rettamente passare alla parte<br />

finale, dove si spiega:<br />

● Come usare Openssl per manipolare il certificato .pfx che vi ha dato il<br />

CINFO<br />

● Come <strong>con</strong>figurare wpa_supplicant per <strong>con</strong>nettersi<br />

Tenete anche in <strong>con</strong>siderazione che la guida è orientata ad utenti <strong>Debian</strong><br />

(mamma <strong>di</strong> Ubuntu), ma che potrebbe andare bene anche per altre<br />

<strong>di</strong>stribuzioni <strong>di</strong> <strong>Linux</strong> applicando le dovute correzioni che VOI sapete. Se<br />

possedete SuSE o RedHat/Fedora, forse avete anche un qualche tool <strong>di</strong><br />

<strong>con</strong>figurazione che fa tutto, ma <strong>con</strong> quello dovete sbrigarvela da soli. Per<br />

quanto riguarda l'installazione del software, ogni <strong>di</strong>stribuzione ha il suo<br />

sistema, <strong>Debian</strong> ha il programma apt, RedHat ha rpm e alcuni hanno anche<br />

interfacce grafiche accattivanti ad essi. Mentre il metodo per installare il<br />

software necessario può variare, la sintassi dei coman<strong>di</strong> dei programmi<br />

installati in questa guida no, quin<strong>di</strong> vanno eseguiti senza variazioni.<br />

REQUISITI PRELIMINARI<br />

Scheda Wireless<br />

Il primo punto, cioè l'avere una scheda wireless ben supportata in <strong>Linux</strong>, in<br />

fondo non è poi così <strong>di</strong>fficile da realizzare: molti chipset funzionano pienamente<br />

(quelli intel ad esempio, presenti in molti dei computer <strong>degli</strong> ultimi 2-3 anni),<br />

mentre altri lo faranno in futuro. Quello che dovreste fare è prestare un po'


d'attenzione nel caso <strong>di</strong> un nuovo acquisto, tanto non c'è <strong>di</strong>fferenza <strong>di</strong> prezzo<br />

tra un <strong>di</strong>spositivo wireless che supporta solo Windows ed uno che funziona<br />

anche sotto <strong>Linux</strong>. A tal proposito potreste guardare su queste pagine molto<br />

utili http://www.hpl.hp.com/personal/Jean_Tourrilhes/<strong>Linux</strong>/#howto<br />

quali siano i chipset e le marche giuste. La cosa importante qui è accertarsi che<br />

nel driver sia supportato il WPA (WPA enterprise), visto che si tratta del<br />

protocollo <strong>di</strong> sicurezza usato da <strong>UnicamWiFi</strong>. Oppure potreste <strong>con</strong>sultare il fido<br />

Google immettendo semplici criteri <strong>di</strong> ricerca quali: <strong>Linux</strong> + il Nome-del-<br />

<strong>di</strong>spositivo-wireless + WPA. C'è da <strong>di</strong>re che spesso si entra prima in un negozio<br />

e poi ci si trova col chiedersi, <strong>di</strong> fronte ad una scatola priva <strong>di</strong> informazioni<br />

salienti a parte i soliti loghi “Designed for WindowsXYZ”, se quel <strong>di</strong>spositivo<br />

possa o no funzionare <strong>con</strong> <strong>Linux</strong>. Allora potreste fare come me che, mentre mi<br />

trovavo in questa situazione, ho iniziato a <strong>con</strong>sultare i vari siti internet delle<br />

case produttrici e ho cercato nelle specifiche del prodotto quali chipset erano<br />

montati. Due dei tre che stavo visionando erano adatti a <strong>Linux</strong>: un bel rapporto<br />

dopo tutto.<br />

Ecco una breve lista <strong>di</strong> chipset che dovrebbero funzionare ed hanno i driver<br />

<strong>di</strong>stribuiti già all'interno del kernel <strong>Linux</strong> (ora come ora nel kernel 2.6.22):<br />

Intel PRO/Wireless 2100<br />

Intel PRO/Wireless 2200BG and 2915ABG<br />

Marvell 8xxx Libertas WLAN driver support<br />

Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards<br />

Prism2/2.5/3<br />

Broadcom BCM43xxUSB<br />

ZyDas ZD1201<br />

ZyDAS ZD1211/ZD1211B USB-wireless<br />

I <strong>di</strong>ffusi chipset Ralink (che qui menziono solo perché ne ho avuto uno) hanno<br />

due driver opensource, uno dei quali non supporta il WPA mentre l'altro è<br />

attualmente in fase <strong>di</strong> sviluppo. Entrambi devono essere compilati<br />

esternamente al kernel (roba per utenti abbastanza esperti), ma pare che entro<br />

qualche mese anch'esso entrerà nel kernel ufficiale, risparmiando un bel po' <strong>di</strong><br />

grane a chi li possiede.


Dal canto mio, posso <strong>di</strong>re che l'hardware che ho testato personalmente è un<br />

dongle USB della 3-Com <strong>con</strong> chipset ZyDas ZD1211 pagato 39€ (ce ne sono<br />

<strong>con</strong> lo stesso chipset a prezzi inferiori). Forse in futuro proverò altro hardware<br />

se mi verrà prestato per il test.<br />

Driver<br />

Proce<strong>di</strong>amo <strong>con</strong> il punto due. Adesso è il momento <strong>di</strong> <strong>con</strong>trollare se avete già<br />

un <strong>di</strong>spositivo wireless correttamente rilevato e relativo driver funzionante (se<br />

avete una <strong>di</strong>stribuzione recente o aggiornata, dovrebbe essere così).<br />

Nella <strong>con</strong>sole immettete il comando che vi in<strong>di</strong>co dopo il simbolo $ e premete<br />

invio alla fine. Mi raccomando: $ significa che siete normali utenti, mentre #<br />

significa che siete root o amministratori del sistema, non che dovete scriverlo<br />

prima del comando. Per fare il login come root potete aprire una <strong>con</strong>sole e<br />

immettere il comando: su (invio) e poi .<br />

AVVERTIMENTO! Quando siete root potete fare molti danni, quin<strong>di</strong><br />

prestate la massima attenzione a ciò che scrivete in <strong>con</strong>sole!<br />

N.B.: gli utenti <strong>di</strong> Ubuntu forse devono far precedere “sudo” a tutti i coman<strong>di</strong><br />

per <strong>con</strong>fermare <strong>di</strong> volere i privilegi <strong>di</strong> root .<br />

$ iw<strong>con</strong>fig (invio)<br />

Dovrebbe rispondere più o meno così:<br />

eth2 IEEE 802.11b/g ESSID:" " Nickname:"zd1211"<br />

Mode:Managed Frequency:2.412 GHz Access Point: 00:11:88:81:3F:40<br />

Encryption key:off<br />

Link Quality=69/100 Signal level=40/100<br />

Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br />

Tx excessive retries:0 Invalid misc:0 Missed bea<strong>con</strong>:0<br />

eth2 è il nome della mia interfaccia <strong>di</strong> rete, ma potrebbe essere eth1, eth0,<br />

ethX, wlanX, raX (dove X è un numero).


Se è così siamo a cavallo! Altrimenti incominciamo <strong>con</strong> la lista delle cose da<br />

fare:<br />

● Controllate la versione del kernel <strong>con</strong>:<br />

$ uname -r<br />

se vi risponde <strong>con</strong> un numero <strong>di</strong> versione inferiore a 2.6.18 è meglio<br />

aggiornare il kernel (personalmente uso un kernel 2.6.22)<br />

● Sapere il proprio Hardware nel caso <strong>di</strong> schede interne o collegate al bus<br />

PCMCIA può aiutarvi:<br />

$ lspci<br />

[...]<br />

Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)<br />

15:00<br />

● In questo caso dovreste assicurarvi <strong>di</strong> avere il modulo appropriato<br />

installato (ipw3945 nell'esempio precedente) e caricato:<br />

$ lsmod | grep 3945 (oppure solamente lsmod)<br />

Se leggete qualcosa come la seguente riga il modulo è caricato<br />

opportunamente:<br />

ieee80211 34632 1 ipw3945 firmware_class 14080 2 pcmcia,ipw3945<br />

● Inoltre <strong>con</strong>trollate <strong>di</strong> avere il firmware (se occorre) del vostro <strong>di</strong>spositivo<br />

wireless nella giusta cartella (cioè dove il modulo del kernel lo va a<br />

cercare quando viene caricato). Anche qui dovete arrangiarvi un po' (<strong>con</strong><br />

Google o leggendo la documentazione).<br />

N.B.: <strong>UnicamWiFi</strong> usa AES come algoritmo <strong>di</strong> cifratura. Nei kernel precompilati<br />

è generalmente presente, ma potete <strong>con</strong>trollare in questo modo (potete<br />

copiare e incollare il comando in <strong>con</strong>sole):<br />

$ cat /boot/<strong>con</strong>fig-`uname -r` | grep CONFIG_CRYPTO_AES<br />

Se risponde<br />

CONFIG_CRYPTO_AES=m oppure y<br />

CONFIG_CRYPTO_AES_586=m oppure y<br />

è tutto a posto.


Mini Troubleshooting<br />

Detto questo, ho detto poco o quasi nulla, perché nel caso aveste dei problemi<br />

potrebbe essere sufficiente mettere il firmware al suo posto, ricompilare il<br />

kernel o scaricarne uno precompilato dalla rete (usate il cavo <strong>di</strong> rete, visto che<br />

la scheda wireless non sta funzionando :-)), oppure compilare un modulo<br />

esterno <strong>con</strong> module-assistant (comando m-a), ma non posso permettermi <strong>di</strong><br />

scrivere una guida <strong>di</strong> come si ricompila un kernel e i moduli esterni. Mi<br />

<strong>di</strong>spiace, ma internet è piena <strong>di</strong> ottime guide <strong>di</strong> questo genere e basta farsi un<br />

giro là fuori per scoprirlo. Posso solo <strong>di</strong>re che se siete utilizzatori <strong>di</strong><br />

<strong>Debian</strong>/Ubuntu forse vi basta questo comando:<br />

# apt-get install linux-image-2.6.22 (o <strong>con</strong> numero <strong>di</strong> versione superiore)<br />

# apt-get install linux-headers-2.6.22 (come sopra)<br />

Aspettate che il kernel finisca <strong>di</strong> installarsi. Riavviate il PC e al prompt <strong>di</strong> GRUB<br />

selezionate il kernel appena installato. Ripetete i passi precedenti sperando che<br />

qualcosa sia migliorato.<br />

CONFIGURAZIONE RETE WIRELESS<br />

Adesso siamo alla fase <strong>di</strong> <strong>con</strong>figurazione vera e propria. Iniziamo <strong>con</strong><br />

l'importare i certificati in modo che wpa_supplicant possa successivamente usarli<br />

per autenticarci sulla rete. Se non avete openssl installato <strong>di</strong>gitate:<br />

Openssl (installazione e uso)<br />

# apt-get install openssl<br />

Nella <strong>con</strong>sole spostatevi nella <strong>di</strong>rectory dove avete salvato il vostro certificato<br />

nome.cognome.pfx e fatene una copia <strong>di</strong> sicurezza:<br />

# cd /<strong>di</strong>rectory/dove/si/trova/il/certificato/<br />

e quin<strong>di</strong><br />

# cp nome.cognome.pfx nome.cognome.pfx.bak<br />

Ora lanciate i seguenti tre coman<strong>di</strong> in successione, esattamente come sono<br />

scritti senza alcuna mo<strong>di</strong>fica (eccetto mettere la vostra password dove<br />

richiesto):


$ openssl pkcs12 -in nome.cognome.pfx -passin pass:password -out unicam.pem<br />

-cacerts -nokeys<br />

(questo estrae il certificato della Certification Authority Unicam)<br />

$ openssl pkcs12 -in nome.cognome.pfx -passin pass:password -passout<br />

pass:password -out id_key.pem -nocerts<br />

(questo estrae la vostra chiave privata)<br />

$ openssl pkcs12 -in nome.cognome.pfx -passin pass:password -out id.pem –nokeys<br />

(questo estrae il vostro certificato)<br />

Mettete tutti e tre i file .pem nella stessa cartella (se non c'è createla) in<br />

/etc/cert/<br />

Wpa_supplicant (installazione, <strong>con</strong>figurazione e uso)<br />

Ora è il momento <strong>di</strong> <strong>con</strong>figurare wpa_supplicant, se non lo avete installato<br />

<strong>di</strong>gitate:<br />

# apt-get install wpa_supplicant<br />

In /etc/wpa_supplicant/ (o in quella che è la cartella <strong>di</strong> sistema <strong>di</strong><br />

wpa_supplicant) create un file, se c'è già lo dovete solo e<strong>di</strong>tare, chiamato wpa_<br />

supplicant.<strong>con</strong>f (è un banale file <strong>di</strong> testo).<br />

In esso copiate esattamente le seguenti cose:<br />

network={<br />

ssid="<strong>UnicamWiFi</strong>"<br />

proto=WPA<br />

key_mgmt=WPA-EAP<br />

pairwise=CCMP TKIP<br />

group=CCMP TKIP WEP104 WEP40<br />

eap=TLS<br />

identity="nome.cognome@Amministrazione.Unicam"<br />

ca_cert="/etc/cert/unicam.pem"<br />

client_cert="/etc/cert/id.pem"<br />

private_key="/etc/cert/id_key.pem"


private_key_passwd="password_chiave_privata"<br />

priority=2<br />

}<br />

Mo<strong>di</strong>ficate il file in identity, dove tra virgolette deve essere <strong>con</strong>tenuto il vostro<br />

nome.cognome@vostrodominio (il dominio può essere o amministrazione o<br />

studenti), e in private_key_passwd dove dovete mettere la vostra password<br />

usata nella generazione del certificato.<br />

Incrociate le <strong>di</strong>ta perché ci siete quasi, siete pronti a collegarvi all'AP<br />

dell'<strong>Università</strong> <strong>di</strong> Camerino:<br />

# wpa_supplicant -i eth2 -c /etc/wpa_supplicant/wpa_supplicant.<strong>con</strong>f -d -Dwext<br />

Il comando dato sopra potrebbe variare, per esempio dopo -i dovete mettere la<br />

vostra interfaccia <strong>di</strong> rete (ethX, wlanX, raX o voi sapete cosa) e dopo -D (D<br />

maiuscolo, non <strong>con</strong>fondetevi) mettere il driver appropriato per wpa_supplicant<br />

(leggetene il manuale per sapere esattamente quale).<br />

Se tutto è andato bene dovreste avere svariati messaggi in <strong>con</strong>sole tra cui i<br />

seguenti:<br />

EAP: EAP entering state SUCCESS<br />

CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully<br />

EAPOL: SUPP_PAE entering state AUTHENTICATED<br />

Dhclient (client dhcp)<br />

A questo punto non vi resta che richiedere un in<strong>di</strong>rizzo IP, quin<strong>di</strong> aprite un'altra<br />

<strong>con</strong>sole e <strong>di</strong>gitate:<br />

# dhclient<br />

Listening on LPF/eth2/00:18:6e:2f:1f:4a<br />

Sen<strong>di</strong>ng on LPF/eth2/00:18:6e:2f:1f:4a<br />

Sen<strong>di</strong>ng on Socket/fallback<br />

DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4


DHCPREQUEST on eth2 to 255.255.255.255 port 67<br />

DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4<br />

DHCPACK from 193.204.8.34<br />

bound to 193.204.8.230 -- renewal in 33850 se<strong>con</strong>ds.<br />

Se immettendo<br />

# route<br />

ottenete qualcosa <strong>di</strong> simile a:<br />

Destination Gateway Genmask Flags Metric Ref Use Iface<br />

193.204.8.0 * 255.255.255.0 U 0 0 0 eth2<br />

default 193.204.8.14 0.0.0.0 UG 0 0 0 eth2<br />

Tutto sta funzionando perfettamente. Da questo momento in poi gli unici<br />

coman<strong>di</strong> che dovrete dare in <strong>con</strong>sole al momento <strong>di</strong> collegarvi sono il<br />

terzultimo e il penultimo:<br />

# wpa_supplicant -i eth2 -c /etc/wpa_supplicant/wpa_supplicant.<strong>con</strong>f -d -Dwext<br />

# dhclient<br />

È l'ora <strong>di</strong> navigare senza vincoli, completamente liberi. ;-)<br />

USARE NETWORKMANAGER<br />

Molti <strong>di</strong> coloro che provengono dal mondo Windows amano le interfacce dove si<br />

clicca qua e là e non c'è da scrivere quei “complicati” file <strong>di</strong> <strong>con</strong>figurazione a<br />

mano. Ebbene, esiste un buon tool per la <strong>con</strong>nessione sviluppato da Novell e<br />

<strong>di</strong>sponibile su molte <strong>di</strong>stribuzioni che si chiama NetworkManager. Il suo scopo è<br />

quello <strong>di</strong> lavorare <strong>di</strong>etro le quinte automaticamente a se<strong>con</strong>da del posto in cui<br />

ci troviamo (casa, lavoro, università) e a se<strong>con</strong>da dell'interfaccia che<br />

colleghiamo (scheda <strong>di</strong> rete o <strong>di</strong>spositivo wireless).<br />

Prima <strong>di</strong> tutto deve essere installato il programma e relative interfacce grafiche<br />

per GNOME e KDE<br />

# apt-get install network-manager network-manager-gnome network-manager-kde<br />

Per far funzionare un <strong>di</strong>spositivo <strong>di</strong> rete <strong>con</strong> NetworkManager abbiamo bisogno<br />

<strong>di</strong> eliminare le eventuali righe <strong>di</strong> <strong>con</strong>figurazione presenti nel file<br />

/etc/network/interfaces, infatti il programma si rifiuta <strong>di</strong> <strong>con</strong>figurare<br />

qualcosa che è già gestito da altri programmi per non sovrapporsi ad essi.<br />

Aprite quin<strong>di</strong> questo file e commentate <strong>con</strong> il carattere # (sharp) tutte le righe


che non vi interessano oppure fate sì che <strong>con</strong>tenga solo le seguenti stringhe:<br />

auto lo<br />

iface lo inet loopback<br />

Salvate e fate ripartire il servizio NetworkManager così leggerà le mo<strong>di</strong>fiche al<br />

file:<br />

# /etc/init.d/network-manager restart<br />

# /etc/init.d/network-manager-<strong>di</strong>spatcher restart<br />

Lanciate l'interfaccia grafica, che sarà nm-applet in GNOME e knetworkmanager in<br />

KDE. Se cliccate <strong>con</strong> il tasto destro sull'i<strong>con</strong>a che dovrebbe essere comparsa<br />

nella systray (barra <strong>di</strong> sistema) dovreste notare che ha identificato la presenza<br />

<strong>di</strong> una rete wireless: “<strong>UnicamWiFi</strong>”. Scorrete il menù fino a trovarvici sopra e<br />

cliccate, presto comparirà una maschera <strong>di</strong> <strong>con</strong>figurazione. NetworkManager<br />

dovrebbe aver correttamente rilevato che si tratta <strong>di</strong> una “WPA ufficio”, ma vi<br />

chiede gli altri parametri.<br />

Impostateli come da immagine:<br />

In pratica immettete il percorso agli stessi certificati creati <strong>con</strong> il metodo<br />

precedente:


File dei certificati client: /etc/cert/id.pem<br />

File dei certificati CA: /etc/cert/unicam.pem<br />

File chiave privata: /etc/cert/id_key.pem<br />

Password chiave privata: la_vostra_password<br />

Identità: nome.cognome@dominio (esattamente come fareste nel file<br />

wpa_supplicant.<strong>con</strong>f)<br />

Metodo EAP: TLS<br />

Se<strong>con</strong>da fase: MSCHAPv2<br />

Versione WPA: WPA1<br />

D'ora in avanti NetworkManager dovrebbe <strong>con</strong>nettersi da solo dopo avervi<br />

chiesto la sola password del portachiavi. Una bella como<strong>di</strong>tà!


RINGRAZIAMENTI<br />

Ringrazio Paolo Gaspari per la <strong>di</strong>sponibilità e Alberto Passini per l'e<strong>di</strong>ting. Un<br />

grazie anche a tutta la comunità Open Source.<br />

LICENZA<br />

Copyright 2007 Valerio Passini<br />

Il testo e solo il testo <strong>di</strong> questa guida è <strong>con</strong>cesso sotto la licenza “creative<br />

commons: Attribution-NonCommercial-ShareAlike 2.5 Italy”<br />

http://creativecommons.org/licenses/by-nc-sa/2.5/it/<br />

I loghi Unicam, Tux e <strong>Debian</strong> sono proprietà dei rispettivi autori/istituzioni.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!