Wi-Fi Ad-Hoc tra Linux e Windows
Indice
Introduzione
Premetto che non sono affatto un esperto di reti e questa guida vuole semplicemente essere un resoconto di quanto fatto per far funzionare il tutto.Perdonatemi e segnalatemi eventuali errori. Lo scopo di questo breve HOW-TO è quello di permettere la condivisione di una connessione ad Internet tra un gateway Linux e un client Windows utilizzando una rete wireless Ad-Hoc a bassissimo costo.La connessione Ad-Hoc permette di connettere direttamante tra loro 2 PC senza passare per un router,più o meno quanto accade per con una connessione diretta con un cavo di rete incrociato (cross). Il passo successivo sarà quello di condividere anche cartelle e stampanti.
Specifiche dei PC
PC fisso
- SO:Linux Slackware,kernel 2.6.13
- Connesso ad Internet mediante modem ethernet sulla porta eth0,nome della connessione ppp0.
- SCHEDA WIRELESS:Philips SNU6500 USB
PC portatile
- SO:Windows XP Home Edition
- SCHEDA WIRELESS:Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g
Configurazione del server Linux
Requisiti hardware e software
- Hardware
- Un PC dotato di porte USB
- Un adattatore Wireless USB Philips SNU6500 con relativo CD di installazione
- Una connessione ad Internet
- Un'installazione di Windows funzionante,altrimenti il vostro adattatore USB non si accenderà!
- Software utilizzati
- NDISwrapper per far funzionare la periferica wireless con i driver di Windows
- Samba per condividere con il Client Windows files e cartelle
- CUPS per stampare
- Wireless-tools
- Iptables
Per informazioni più dettagliate sui software utilizzati vi rimando alla linkografia.
Ndiswrapper
NDISwrapper crea un modulo per il Kernel di Linux che è in grado di caricare ed eseguire i drivers NDIS (Windows Network Driver API) in sostituzione dei driver nativi mal funzionanti o proprio non rilasciati. L'installazione di NDISwrapper può essere effettuata da sorgenti oppure dai più comodi pacchetti precompilati. Personalmente ho preferito l'installazione del pacchetto in quanto il modulo creato dalla compilazione non veniva caricato correttamente. Una volta installato il programma deve essere lanciato da root
ndiswrapper
Usage: ndiswrapper OPTION
Manage ndis drivers for ndiswrapper.
-i inffile Install driver described by 'inffile'
-d devid driver Use installed 'driver' for 'devid'
-e driver Remove 'driver'
-l List installed drivers
-m Write configuration for modprobe
-da Write module alias configuration for all devices
-di Write module install configuration for all devices
-v Report version information
where 'devid' is either PCIID or USBID of the form XXXX:XXXX
Copiate ora la directory dei driver dal CD di installazione fornito in una qualsiasi directory del vostro disco fisso. Si procede poi all'installazione dei driver vera e propria con il comando
ndiswrapper - i /percorso/dei/driver/CPWUA6D.INF
e verificate con il comando
ndiswrapper -l
che i driver siano stati effettivamente caricati
Installed drivers:
cpwua6d driver installed
Il passo successivo è quello di lanciare
ndiswrapper -m
per dare le corrette direttive a modprobe.
Per il momento basta così.Riavviate il PC su Windows e vedrete la spia luminosa dell'adattatore lampeggiare (questa operazione deve essere fatta ogni volta che si riavvia o si spegne Linux!!!!).Riavviate,lanciate Linux e caricate il modulo ndiswrapper con
modprobe ndiswrapper
Ora la spia dovrebbe lampeggiare. Date nuovamente da root il comando
ndiswrapper -l
e verificate che la risposta questa volta sia
Installed drivers:
cpwua6d driver installed, hardware present
Se fino a qui tutto va bene siamo già a buon punto.Altrimenti non scoraggiatevi e riprovate.
Configurazione delle schede di rete
Utilizzeremo ora il programma iwconfig che fa parte del pacchetto wireless-tools incluso in quasi tutte le distribuzioni.Si tratta di un analogo del più celebre ed utilizzato ifconfig dedicato però alla configurazione di reti wireless. Devo essere sincero che questi passaggi sono aleatori,ma funzionano.Anche qui,se qualcosa non va riprovate. Qui fornisco solo una rapida descrizione di ciò che serve alla configurazione dell'interfaccia wireless.Alla fine dell'HOW-TO fornirò comunque un piccolo script che modificato a dovere dovrebbe funzionare. Il primo passo è quello di verificare che il dispositivo sia funzionante.Lanciate da root
iwconfig
ed assicuratevi che compaia tra le interfacce wlan0.
Bisogna adesso inserire i parametri della rete.
In particolare
- il tipo di connessione e la sua chiave WEP (key)
- il nome della connessione (essid)
- il "soprannome" dela vostra scheda (nickname)
La sintassi sarà
iwconfig wlan0 key open chiave-wep
iwconfig wlan0 essid nomeconnessione
iwconfig wlan0 nickname quellochevolete
E'consigliabile lanciare dopo ogni comando iwconfig senza altri parametri per verificare che sia effettivamente cambiato qualcosa. Bisogna talvolta specificare il rate a cui lavorare,cioè la velocità a cui vengono scambiati i dati.Purtroppo nel mio caso non si può lavorare a più di 11 Mb/S,più che sufficienti comunque per guardare un film del computer della camera sul portatile in soggiorno o navigare in internet comodamente distesi sul divano.Si procede poi specificando che vogliamo una connessione Ad-Hoc
iwconfig wlan0 rate 11M
iwconfig wlan0 mode Ad-Hoc
Lanciate adesso
iwlist scan
e verificate (o meglio sperate!) che vi ritorni qualcosa del genere
wlan0 Scan completed :
Cell 01 - Address: E2:EF:C0:94:E5:FD
ESSID:"philips"
Protocol:IEEE 802.11b
Mode:Ad-Hoc
Frequency:2.462 GHz (Channel 11)
Quality:0/100 Signal level:-24 dBm Noise level:-256 dBm
Encryption key:on
Bit Rate:1 Mb/s
Bit Rate:2 Mb/s
Bit Rate:5.5 Mb/s
Bit Rate:11 Mb/s
Extra:bcn_int=100
Extra:atim=0
E' possibile che venga ritornato
wlan0 No scan results
Non preoccupatevi,smanettate con i comandi che vi ho indicato in precedenza e il problema dovrebbe risolversi. Bisogna poi attivare le interfacce di rete.Supponendo che eth0 sia connessa ad internet direttamente mediante un modem ethernet,lanciate da root
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up
Ovviamente al posto di 192.168.0.1 e 192.168.1.1 mettete,se ritente opportuno,altri indirizi IP.
Il passaggio successivo è
Condividere la connessione ad Internet
Da root lanciate
chmod +x /etc/rc.d/rc.ip_forward
/etc/rc.d/rc.ip_forward restart
per abilitare la condivisione della connessione
Bisogna caricare i moduli relativi al supporto per il masquerading,quindi lanciate da root
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ipt_MASQUERADE
e si concede il masquerading solo ai computer della rete wireless
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -j DROP
Riassumendo il tutto in uno script :
#!/bin/bash
chmod +x /etc/rc.d/rc.ip_forward
modprobe ndiswrapper
iwconfig wlan0 key open abcabcabc1
iwconfig wlan0 essid philips
iwconfig wlan0 nickname philips
iwconfig wlan0 rate 11M
iwconfig wlan0 mode Ad-Hoc
iwlist wlan0 scan
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ipt_MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -j DROP </br>
Salvatelo,rendetelo eseguibile (chmod 777) ed è pronto per essere lanciato (da root) quando volete.
Configurazione del client Windows XP Home Edition
Prima di passare a configurare Samba per la condivisione di file e cartelle,vediamo se il lavoro fatto fin qui ha dato i suoi frutti. Si presume che si sia già configurata la periferica wireless in maniera corretta (ESSID,chiave WEP...).</br> Andate sul menu Start--->Impostazioni--->Connessioni di rete.Cliccate col tasto destro su Connessione senza fili--->Proprietà.Selezionate quindi Protocollo Internet (TCP/IP) e cliccate su Prprietà.Rifacendovi allo script precedente,inserite nei campi
- Indirizzo IP : 192.168.1.2
- Subnet mask : 255.255.255.0
- Gateway predefinito : 192.168.1.1
Come DNS inserite quelli relativi al vostro provider.Per Alice
- Server DNS preferito : 212.216.112.112
- Server DNS alternativo : 212.216.172.62
A posto.Riavviate il PC e provate a "pingare" Client e Server.
Da Linux a Windows : lanciate un terminale e date ping 192.168.1.2
Da Windows a Linux : Start--->Programmi--->Accessori--->Prompt dei comandi--->ping 192.168.1.1
Se i 2 PC si sentono (o si parlano,come preferite) siamo a buon punto.Provate a lanciare il vostro browser e vedete se riesce a connettersi ad Internet.
Samba...si balla!
Samba permette di condividere materiale in una rete mista Linux/Windows come la nostra.La configurazione è relativamente semplice se utilizzate KDE,altrimenti bisogna mettere mano ad un file di testo,/etc/samba/smb.conf
Per non complicare troppo la breve guida,utilizzerò il metodo KDE.
Andate nel Menu K--->Centro di controllo--->Internet e rete--->Samba.
Cliccate su Modalità amministratore e modificate i parametri con criterio,anche se devo dire che è tutto molto ben spiegato.Abbiate l'accortezza di utilizzare come Gruppo di Lavoro lo stesso sia su Linux che su Windows,altrimenti i 2 PC non si vedranno.
Per entrare nel client basta digitare da konqueror smb://192.168.1.2
Da Windows andate su Risorse di Rete e dovrebbero comparire la cartelle condivise del Server.
Spero di esservi stato d'aiuto.E ricordate che questo How-To è valido per tutte le distribuzioni Linux e per tutti le schede wireless supportate da NDISwrapper.
To Do List
Condividere la stampante e i processi di stampa
Linkografia
Slacky.it
Il sito di ndiswrapper
Wireless Tools
Documentazione su iptables
CUPS
Il forum di LinuxPRO