OpenWrt su Linksys WRT54G: Universal Repeater

29 09 2009

Quante volte vi siete trovati a girare per casa in cerca del vostro segnale wifi?
Quante volte avreste desiderato abbattere quella maledetta parete di tufo/pietra ottocentesca di casa vostra che riduce drasticamente le probabilità di navigare in wireless per tutta la casa?
Quante volte avete desiderato espandere il vostro wifi oltre i confini delle striminzite antennine del vostro Alice Gate di Telecozz?
Bene ora potete!

Universal Repeater

Bene, tralasciando questa ridicola introduzione e venendo al dunque ho ottenuto un comodo ripetitore di segnale configurando il mio WRT54GL con pochi passaggi.
La situazione in cui ci troviamo è tipo quella riportata in figura.

Ampliare la rete wifi con un repeater

Ampliare la rete wifi con un repeater

Per prima cosa è necessario (se si vuole utilizzare la WPA-PSK impostata di default da Telecom) scaricare i seguenti pacchetti direttamente su OpenWrt.

root@OpenWrt:~# ipkg install wpa-supplicant
root@OpenWrt:~# ipkg install hostapd
root@OpenWrt:~# ipkg install zlib
root@OpenWrt:~# ipkg install libopenssl

Per poter visionare cosa avete sul sistema usate questo

root@OpenWrt:~# ipkg list_installed
base-files-atheros-2.6 - 10-9078 -
bridge - 1.0.6-1 -
busybox - 1.4.2-2 -
dnsmasq - 2.39-1 -
dropbear - 0.50-2 -
hostapd - 0.5.7-1 -
hotplug2 - 0.9+r102-2 -
iptables - 1.3.7-1 -
kernel - 2.6.21.5-atheros-1 -
kmod-madwifi - 2.6.21.5+r2568-20070710-atheros-2 -
kmod-ppp - 2.6.21.5-atheros-1 -
kmod-pppoe - 2.6.21.5-atheros-1 -
libgcc - 4.1.2-10 -
libopenssl - 0.9.8e-1 -
mtd - 5 -
ppp - 2.4.3-8 -
ppp-mod-pppoe - 2.4.3-8 -
uclibc - 0.9.28-10 -
udevtrigger - 106-1 -
wireless-tools - 29-1 -
wpa-supplicant - 0.5.7-1 -
zlib - 1.2.3-4 -
Done.

Se i pacchetti che avete sono + o – questi possiamo andare oltre…
Passiamo ora alla configurazione delle interfacce. In primo luogo modifichiamo la network lan

root@OpenWrt:~# vi /etc/config/network

#### LAN configuration
config interface lan
option type bridge
option ifname eth0.0
option proto static
option ipaddr 192.168.1.111
option netmask 255.255.255.0

Poi passiamo alla parte wireless

root@OpenWrt:~# vi /etc/config/wireless

config wifi-device wl0
option type broadcom
option channel 11 # lo stesso canale della wifi di Alice


config wifi-iface
option device wl0
option network lan
option mode ap
option ssid RepeaterWifi # il nome della wifi del repeater

config wifi-iface
option device wl0
option network lan
option mode sta
option ssid Alice-12345678 # il nome della rete wifi da ripetere
option encryption 'psk'
option key 'xxxxxxxxxxxxxxxxxxxxx'

Fatto ciò dovresta avere un bel ripetitore wifi!!

Annunci




OpenWrt su Linksys WRT54GL: rete WDS

20 12 2008


Un pò di teoria

L’acronimo WDS sta per Wireless Distribution System, una modalità operativa che permette l’espansione di una rete senza fili usando diversi access point; senza però la necessità che questi siano collegati fra logo con un cablaggio, come è richiesto tradizionalmente.

L’interconnessione tra AP avviene a livello MAC, quindi è necessario che ogni AP conosca l’indirizzo fisico dell’AP a lui direttamente connesso. Le modalità di funzionamento dei nodi di una WDS possono essere:

  • Wireless Bridging in cui gli AP comunicano solo fra loro; non è permesso l’accesso alla rete ad altri clients wireless.
  • Wireless Repeating in cui gli AP comunicano fra loro e con tutti i client wireless che vogliono associarsi alla rete.

Tutti i nodi, che possiamo anche chiamare  Base Stations (BS), in un WDS devono essere configurati per usare lo stesso canale radio e la stessa crittografia. Non è invece necessairio che abbiamo anche lo stesso SSID, anche se personalmente credo sia comodo impostarlo uguale per tutte le BS. Spesso, in particolare quando utilizziamo il WDS nel secondo dei due modi illustrati in precedenza, ci si riferisce ad una rete di questo genere, come ad una rete di repeater, in quanto ogni nodo lavora sia in modalità bridge, che access point.

Svantaggi

Il Wireless Distribution System sembrerebbe, quindi la panacea per tutti i problemi di diffusione della connettività in assenza di cablaggio, tuttavia si presentano due aspetti negativi:

  • Il throughput massimo della connessione wireless è dimezzato dopo la prima ritrasmissione (hop). Questo è vero quando il secondo access point fa sia da bridge che da AP. Se l’AP si comporta solo da bridge, quindi i clients sono collegati tramite cavo, la banda non è dimezzata.
  • Le chiavi di crittografia assegnate dinamicamente non sono generalmente supportate nelle  WDS. Ciò è un problema se si vuole proteggere la propria rete con, ad esempio, una crittografia WPA (ormai praticamente lo standard, vista l’insicurezza del WEP). Ciò è dovuto dalla mancanza di regolazione in questo campo, che ha portato i produttori ad intraprendere metodi differenti di implementazione. Le implementazioni del WDS su apparati di vari produttori non sono necessariamente compatibili tra di loro.

OpenWrt e il WDS

La rete di esempio

La rete di esempio

Grazie ad OpenWrt possiamo facilmente impostare i LinkSys WRT54GL come nodi di una WDS e distribuire la nostra rete WiFi oltre i limiti di un solo AP. Inoltre, come vedremo, sarà possibile superare il suddetto problema della crittografia con una piccola modifica… Consiglio comunque, prima di partire, una letturina qui

Configurazione dei Dispositivi

Facciamo riferimento allo schema in Fig. il nostro scopo è ottenere una rete che permetta l’accesso wireless e wired (tramite un eventuale collegamento diretto ai WRT54GL) facendo uso di 2 devices impostati come repeater.

Dall’interfaccia web (X-Wrt) del WRT54_A andiamo in

Network->Wireless ed impostiamo i parametri come segue:

Wireless Adapter wl0 Configuration

Radio                   On
Channel                5

Wireless Virtual Adaptor Configuration for Wireless Card wl0

Network                lan
Mode                    Access Point
WDS                    Off
ESSID Broadcast   On
AP Isolation          Off
ESSID                  OpenWrt
Encryption Type    WPA(PSK)
Passphrase           pippozzo

aggiungiamo una nuova interfaccia con “Add Virtual Interface”…comparira’

Wireless Virtual Adaptor Configuration for Wireless Card wl0

Network     lan
Mode         WDS
ESSID        OpenWrt_WDS
BSSID        AA:BB:CC:DD:EE:02
Encryption Type    WPA(PSK)
Passphrase    pippozzo_wds

Ripetiamo la stessa cosa sul WRT54_B, stando attenti a mantenere gli stessi ESSID e le stesse crittografie ma inserire in BSSID il mac del WRT54_A

Trasmissioni sicure

Come è possibile immaginare, a meno che non vogliate lasciare aperta la vostra rete ai vicini, vorrete chiuderla con un chiave  WPA o WPA2. Così com è con il firmware Kamikaze 7.09 bisogna fare una piccola modifica.

Loggatevi in SSH ad uno dei due router ed editate il seguente file, ad es.

ssh 192.168.1.11
vi etc/hotplug.d/net/20-broadcom_wds

Inserire le seguenti righe come indicato in questo stralcio di file

[ "$encryption" != "none" ] && {
sleep 1
nas4not lan "$iface" up auto aes "$encryption" "$key" "$ssid"
# Righe da aggiungere per abilitare la crittografia nella WDS
case "$encryption" in
psk|PSK)
nas4not "$network" "$iface" up auto tkip psk "$key" "$ssid"
;;
psk2|PSK2)
nas4not "$network" "$iface" up auto aes psk "$key" "$ssid"
;;
psk+psk2|psk2+psk|PSK+PSK2|PSK2+PSK)
nas4not "$network" "$iface" up auto aes+tkip psk "$key" "$ssid"
;;
*)
nas4not lan "$iface" up auto aes "$encryption" "$key" "$ssid"
;;
esac
# Fine
}

Fate lo stesso con il secondo router e sarete pronti per testare la vostra rete WDS!!





OpenWrt su Linksys WRT54GL: introduzione

29 11 2008

Chi l’ha detto che Linux e il Networking sono cose complesse… con 4botte, un pò di googling si possono fare tante cose… anche sugli apparentemente ostici sistemi embedded.

WRT54GL
WRT54GL

L’Hardware

La linksys ha nel suo parco hw un simpatico router wifi, che ha visto diverse evoluzioni e che oggi è un perfetto strumento x divertirsi con l’hacking e provare Linux su sistemi embedded.

Il WRT54GL (ma sono disponibili anche il G e il GS, cambia solo il quantitativo di memoria ) è un router wifi che contiene un processore 32 bit MISP della Broadcom a 200MHz,  16MB di RAM e 4 MB di flash, una porta WAN e 4 LAN. Ma la cosa più interessante è che ci si può facilmente installare un S.O. Linux a tutti gli effetti, chiamato OpenWRT.

Potenzialità

Con un WRT flashato si può ottenere un sistema completo capace, tra le altre cose di lavorare come:

  • AP, Repeater, Bridge
  • Server DHCP, DNS, VPN, Proxy/Firewall
  • Asterisk Server
  • Gestire QoS
  • Lavorare come nodo di una rete Mesh

La lista della spesa

Io per i test ho usato un WRT54GL v 1.1 e openwrt kamikaze 7.09.

Scarichiamo il firmware da qui e rinominiamolo ad es. open.bin
Conviene calcolare l’MD5 del file con:

md5sum open.bin

e controllare che l’MD5 sia uguale a quello mostrato qui

N.B.: se non e’ uguale e’ possibile che il file scaricato sia corrotto! E’ importante caricare un firmware corretto, altrimenti si puo’ “brickare” il router!

Collegare il PC al router
Accedere all’interfaccia web di default del WRT54 (default IP:192.168.1.1; default login: admin, admin)
Andare in Administration->Firmware Update
e caricare il file output.bin

Dopo un paio di minuti apparira’ una schermata di Update Successfully (…si spera!)

Se tutto e’ andato bene si puo’ iniziare a pingare il 192.168.1.1 e poi aprire una sessione Telnet:

telnet 192.168.1.1

Cambiare la password di root con passwd (come suggerisce anche la schermata di benvenuto di OpenWrt)
e riavviare il router con un bel reboot

Ora e’ possibile accedere al router con ssh

Operazioni preliminari

Come prima cosa sblocchiamo il firewall

Aprire il file /etc/firewall.user ed aggiungere in fondo

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -F
iptables -F

poi consentiamo l’accesso ad internet al WRT54GL, che ci sarà utile per scaricare l’interfaccia web e tanto altro. Se si collega il WRT54 ad un normale router (il cui IP e’ ad es 192.168.1.254) si puo’ farlo accedere ad internet digitando dalla shell del WRT54GL

route add default gw 192.168.1.254
echo "nameserver 151.99.125.1" >>/etc/resolv.conf

OpenWrt ha un gestore di pacchetti simile ad apt-get o yum, chiamato ipkg per usarlo andiamo in /etc/ipkg.conf

e inseriamo (sotto l’ultima riga che inizia con “src”) la seguente stringa:

src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/7.09/brcm-2.4/packages

Ora e’ possibile aggiornare la lista pacchetti di IPKG ed installare, ad es. l’interfaccia web (X-wrt)

ipkg update
ipkg install webif

Aprire la pagina http://192.168.1.1 con il proprio browser preferito e digitare

Username: root; Password: (quella inserita con il comando passwd)

Avrete ora accesso a tutte le funzionalità di Openwrt da una semplice interfaccia web.





Broadcom BCM4311 e Ubuntu 8.04

8 11 2008

Sabato pomeriggio,

finalmente un pò di tempo libero per resuscitare la scheda wireless del mio portatile, già mi aspetto ore di lavoro e prove su prove, per giungere(magari a culo come al solito) alla soluzione…

Una gradita sorpresa…

Prima di passare alla versione 8.04 di (K)ubuntu la mia broadcom 4311 integrata andava su dapper  6.06 LTS solo con l’aiuto di ndiswrapper…

Quindi, pensando di dover perdere un bel pò per farla andare. Inizio a girare (come al solito) per forum e siti vari, sono al decimo modprobe quando mi imbatto nel salvatore

Grazie al nuovo kernel e ai driver opensource è bastato andare dal menu K in:

Sistema->Hardware Drivers Manager

e scoprire con piacere che selezionando di abilitare il nuovo driver della broadcom, ubuntu si occupa in toto di fare il resto!!

Dopo pochi secondi di download tutto è già pronto e si può usare ad esempio wireless assistant per scoprire che reti wifi ci stanno accanto (o semplicemente digitare da console iwlist scanning).

I nuovi driver

Dalla versione 2.6.24 del kernel, Linux fornisce due nuovi driver wireless B43 e B43-legacy, che sostituiscono il vecchio bcm43xx. Il primo funziona con la versione v4 e il secondo con la v3 del firmware Broadcom.
Per maggiorni informazioni cliccare qui