Realizzazione di un hotspot wireless basato su di una macchina Linux, scheda di rete PCI ed il demone hostapd (di Carlo A. Mazzone)
La presente procedura consente la realizzazione di un hotspot wireless basato su di una macchina Linux ed il demone hostapd (http://w1.fi/hostapd/).
La macchina è dotata di due schede di rete: una prima eth standard ed una seconda scheda PCI wireless.
La scheda eth0 ha come default gateway l’IP del router di uscita su Internet ed nel nostro caso un IP di classe C sulla rete 192.168.0.0 mentre la scheda wireless avrà un indirizzo 192.168.1.1 e quindi su di un’altra classe C intranet.
Sarà compito del software iptables far ruotare i pacchetti dalla rete wireless verso quella wired e quindi verso Internet.
La prima fase prevede una classica installazione della versione server di Linux. La prova è stata effettuata con Ubuntu 10.10 server 32 bit.
E’ consigliabile l’installazione di un server ssh per la gestione da remoto della macchina in oggetto.
Passiamo ora alla configurazione dei parametri di rete. Se durante l’installazione sono già stati indicati i parametri di rete per la eth0 (IP, netmask, …) sarà necessario agire solo quelli relativi alla scheda wireless. Se invece durante l’installazione è stato individuato un server DHCP sarà necessario modificare a mano i parametri di rete nel classico file /etc/network/interfaces
Di seguito il file di configurazione rete
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.1
Per apportare le modifiche senza riavviare la macchina è sufficiente dare il comando:
sudo /etc/init.d/networking restart
Passiamo ora ad esaminare la situazione della scheda wireless. Alcuni comandi ci possono venire incontro per individuare le caratteristiche precise della scheda in oggetto. Ad esempio:
sudo lshw
oppure in maniera ancora più dettagliata relativamente alla componentistica di rete:
sudo lshw -C network
dal quale, nel nostro caso otteniamo:
description: Wireless interface
product: AR5413 802.11abg NIC
vendor: Atheros Communications Inc.
e su di una linea successiva la seguente dicitura:
capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
che, tra le altre cose, ci rassicura sul fatto che la nostra scheda supporta la modalità MASTER, ovvero la possibilità di funzionare come hotspot.
Un altro possibile comando che ci conforta sulla nostra dotazione hardware è:
sudo lspci
che produce il seguente output:
01:09.0 Ethernet controller: Atheros Communications Inc. AR5413 802.11abg NIC (rev 01)
Se avessimo utilizzato una scheda di tipo USB avremmo potuto usare il comando: lsusb
Il comando: sudo iwconfig
potrà chiarirci meglio la situazione della nostra scheda di rete. Per poterlo utilizzare deve essere stato precedentemente installato il pacchetto wireless-tools eventualmente così come segue:
sudo apt-get install wireless-tools
Nel nostro caso l’output di iwconfig sarà:
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Scopriamo così che il nome della scheda è wlan0 ed utilizziamo allora tale informazione per configurare la scheda stessa nel file /etc/network/interfaces con le seguente impostazioni:
# wireless settings
auto wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
ed a questo punto anche la scheda wireless dovrebbe essere pronta e funzionante.
E’ ora finalmente giunto il momento di installare il software necessario al funzionamneto della scheda come access point, ovvero il demone hostapd.
Diamo allora il comando: sudo apt-get install hostapd
Il demone hostapd richiede, al momento del lancio, un file di testo con la configurazione da utilizzare. Supponendo di voler utilizzare una protezione di tipo wpa chiamiamo il file di configurazione wpa.conf (ma potrebbe chiamarsi pippo.conf e le cose non cambierebbero di un bit ;). Per la creazione del file possiamo utilizzare il comando touch.
Di seguito presento il file in questione.
File di configurazione per hostapd (protetto)
interface=wlan0
driver=nl80211
ssid=RETE_DI_PROVA
channel=1
hw_mode=g
auth_algs=3
wpa=3
wpa_passphrase=qui_va_la_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
Volendo fare una veloce prova si può utilizzare un file con il contenuto seguente che abilita un access point senza protezione. Il tutto ovviamente da utilizzare per breve tempo per ragioni di sicurezza al solo scopo di provare velocemente una configurazione il più semplice possibile:
File di configurazione per hostapd (aperto)
interface=wlan0
driver=nl80211
ssid=Fly_OPEN
channel=1
Un altro passo indispensabile è ora quello di configurare un demone DHCP per assegnare un IP dinamico alle macchine che si collegheranno in modalità wireless al nostro access point. Procediamo allora con l’installazione del dhcp:
$sudo apt-get install dhcp3-server
Il file di configurazione è:
/etc/dhcp3/dhcpd.conf
Come di consueto conviene fare una copia di backup del file in questione:
$sudo cp dhcpd.conf dhcpd.conf_orig
Una possibile configurazione potrebbe essere la seguente:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.254;
option routers 192.168.1.1;
}
Per completare non resta che abilitare il routing con iptables. Le seguenti righe di configurazione possono essere inserite nel file rc.local per un avvio in automatico al boot della macchina.
#INIZIO rc.local
#Autorizzo l’interfaccia wlan0 ad accettare nuove connessioni e la istruisco a forwardarle verso l’esterno attraverso l’interfaccia eth0
iptables -A FORWARD –in-interface wlan0 –out-interface eth0 –source 192.168.0.0/255.255.255.0 -m state –state NEW -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state –state RELATED -j ACCEPT
#NATTING per mascherare gli ip della lan
iptables -t nat -A POSTROUTING -j MASQUERADE
#Attivo il packet forwarding a livello kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
#Lancio demone per access point
hostapd /etc/hostapd/wpa.conf
#FINE rc.local
Di seguito alcuni riferimenti interessanti:
https://help.ubuntu.com/community/WifiDocs/MasterMode
http://w1.fi/hostapd/
Carlo A. Mazzone