Wireless Access Point (WAP) personalizzato

Edit-clear-history.png 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.


Debian-swirl.png 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.
  Nota
Non tutti i dispositivi wireless supportano la modalità master, necessario per far funzionare tale dispositivo come AP. Verificare quindi tale aspetto come descritto nella sezione "Configurazione" prima di comprare un dispositivo.


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.