Wireless Access Point (WAP) personalizzato
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 8 "jessie" |
Introduzione
Sebbene in commercio esistano numerosi prodotti economici dedicati al ruolo di access point (AP d'ora in avanti), ci sono almeno alcune situazioni in cui è conveniente, o semplicemente interessante, usare una macchina completa per tale ruolo:
- grazie alla commercializzazione di computer a basso costo e basso consumo energetico è ormai divenuta molto appetibile la possibilità di crearsi un router/gateway personalizzato sfruttando la propria distribuzione linux preferita (debian nel nostro caso). Poiché inoltre si hanno spesso a disposizione anche delle periferiche per connessioni senza fili, come chiavette usb e chip integrati, risulta allora utile e conveniente aggiungere ai suddetti dispositivi anche la funzionalità di AP;
- si hanno già a disposizione una macchina accesa per molte ore al giorno (quando non in continuo) e un dispositivo wireless inutilizzato (o comunque sostituibile con un cavo), pertanto può risultare economico aggiungere ad tale computer anche la funzionalità di AP;
- si è interessati ad una soluzione semi-professionale o addirittura professionale che sia completamente personalizzabile e che non obblighi a dipendere da software proprietario.
Installazione
# apt-get install iw hostapd wireless-tools
I wireless-tools forniscono diversi strumenti, tra cui iwconfig, un'utilità ormai deprecata e atta a configurare i dispositivi wireless prima dell'introduzione a livello kernel del driver di interfaccia nl80211.
In questa guida si farà dunque solo riferimento al solo iw, il nuovo strumento che sostituisce iwconfig e che supporta anche il già citato nl80211 (riferimento).
Configurazione
Convenzioni
- eth0 è l'interfaccia a filo;
- wlan0 è l'interfaccia senza fili;
- br0 è il nome del ponte di rete che includerà le sopraccitate due interfacce fisiche, nel caso di soluzione con bridge di rete.
Verifica del supporto per la modalità master
Il primo passo è verificare che la propria scheda di rete supporti la modalità master, usando ad esempio il comando:
# iw list
che restituirà un lungo elenco di informazioni. Quello che interessa è la sezione Supported interface modes, che riporterà qualcosa del genere (esempio di output reale per chipset Intel(R) Dual Band Wireless AC 3160):
[...] Supported interface modes: * IBSS * managed * AP * AP/VLAN * monitor * P2P-client * P2P-GO * P2P-device [...]
Se nell'elenco compare la voce AP, allora il dispositivo di rete può essere usato in modalità master e quindi come access point.
Si noti che qualora si tentasse di impostare un dispositivo wireless basato su nl80211 in modalità master impartendo il comando iwconfig wlan0 mode master
, si otterrebbe il seguente messaggio d'errore:
Error for wireless request "Set Mode" (8B06) : SET failed on device wlan0 ; Invalid argument.
anche se il dispositivo supportasse effettivamente tale modalità.
Una volta acclarato che il dispositivo wireless da usare supporta la modalità master è possibile passare alla configurazione di hostapd
e quindi delle interfacce di rete.
hostapd
Questo strumento offre letteralmente una miriade di parametri su cui agire, basta dare uno sguardo al file di configurazione d'esempio /usr/share/doc/hostapd/examples/hostapd.conf.gz
, inoltre è possibile avviare molteplici istanze dello stesso, ognuna con un suo specifico file di configurazione.
In questa guida ci si limiterà a presentare i parametri essenziali ed a considerare l'esecuzione di una singola istanza di hostapd
, scelte più che sufficienti per gestire il semplice caso di una rete domestica e/o di un piccolo ufficio.
Si crei dunque un file di configurazione come utente root, ad esempio /etc/hostapd/hostapd.conf
, e si specifichino le seguenti direttive:
# Wireless interface interface=wlan0 driver=nl80211 ssid=test channel=1
Questa costituisce una configurazione assolutamente minimale, ma più che sufficiente per eseguire un primo test di funzionamento. Si digiti dunque da terminale:
# hostapd /etc/hostapd/hostapd.conf
se non ci sono errori a video compariranno alcune righe informative e il demone rimarrà semplicemente attivo in primo piano. Si prema ctrl + C per terminarne l'esecuzione. Se viceversa l'esecuzione del demone viene terminata automaticamente e compare un messaggio d'errore relativo al driver si veda questa pagina.
Una volta testato hostapd
con una configurazione minimale è possibile scrivere una configurazione un po' più elaborata (e definitiva). Se il proprio dispositivo supporta la modalità 802.11n è però necessario individuare prima quali funzionalità aggiuntive sono disponibili attraverso il solito iw list
. Questa volta la sezione di interesse è Capabilities
. Ad esempio per il chipset Intel(R) Dual Band Wireless AC 3160 l'output di interesse è:
[...] Capabilities: 0x1162 HT20/HT40 Static SM Power Save RX HT20 SGI RX HT40 SGI RX STBC 1-stream Max AMSDU length: 3839 bytes DSSS/CCK HT40 [...]
che si tradurrà nella seguente riga di configurazione:
ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
È ora possibile specificare un file di configurazione semi-definitivo, che nel caso del chipset Intel(R) Dual Band Wireless AC 3160 potrebbe essere simile a quanto segue:
# Wireless interface interface=wlan0 driver=nl80211 country_code=IT # Wireless environment ssid=vostro_SSID hw_mode=g channel=4 # 802.11n ieee80211n=1 ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] # Authentication and encryption macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=1 wpa=2 wpa_passphrase=password_personale wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
dove:
- interface specifica il nome dell'interfaccia wireless da usare, chiaramente da modificare rispetto al valore indicato se diverso dal classico wlan0;
- driver specifica il driver interfaccia da usare, valore che ragionevolmente non sarà da modificare a meno di non usare kernel molto vecchi;
- country_code è un valore non strettamente necessario e indica il codice paese in cui è attivo l'access point (si veda ISO 3166-1);
- ssid specifica la stringa da usare appunto come SSID di rete.
- hw_mode specifica la modalità di funzionamento (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g). Si noti che la modalità n viene indicata attraverso un altro parametro che in ogni caso richiede di definire prima questo;
- channel specifica il numero di canale da usare, si veda
/usr/share/doc/hostapd/examples/hostapd.conf.gz
su come scegliere un valore ottimale; - ieee80211n è usato per abilitare (1) o disabilitare (0) la modalità 802.11n;
- ht_capab permette di definire le capacità aggiuntive del dispositivo wireless (inutile dichiarare questo parametro se
ieee80211n=0
); - macaddr_acl abilita (1) o disabilita (0) il filtro sul mac address dei dispositivi che si connettono all'access point.
- auth_algs imposta l'algoritmo di autenticazione;
- ignore_broadcast_ssid abilita (1) o disabilita (0) la trasmissione dell'SSID di rete (ogni cliente deve già conoscerne il valore);
- wpa indica la versione di wpa ammessa, cioè solo wpa2 in questo caso;
- wpa_passphrase la password che ogni client dovrà immettere per connettersi all'access point;
- wpa_key_mgmt, wpa_pairwise, rsn_pairwise si veda
/usr/share/doc/hostapd/examples/hostapd.conf.gz
.