Il blog è stato spostato! Redirecting...

Stai per essere spostato sul nuovo indirizzo. Se non funziona vai su http://www.lejubila.net e aggiorna il tuo bookmark.

Visualizzazione post con etichetta repeater. Mostra tutti i post
Visualizzazione post con etichetta repeater. Mostra tutti i post

3.1.09

Linksys wrt54gl con dd-wrt: repeater + wan cablata

Come descritto nel post Configurare DD-WRT come repeater sul SysLink wrt54gl (come utilizzare l'adsl del vicino via wifi) alcuni anni fa ho sotto scritto un contratto adsl "Alice Night & WeekEnd". Tale contratto ha la caratteristica di essere flat nel fine settimana, nei giorni festivi e durante le ore notturne, invece durante le ore giornaliere diventa a tariffa oraria.

Sempre come viene descritto nel post sopra mensionato, per ovviare al pagamento della tariffa oraria del mio contratto, utilizzo il mio LinkSys wrt54gl configurato in "repeater mode" per connettermi tramite il router wireles del mio vicino di casa che gentilmente mi ha offerto la sua connessione ad internet.

Grato di tanta gentilezza mi sembrava troppo approfittare anche delle ore che il mio contratto mi offriva come flat (sennò cosa lo pago a fare), così grazie ad uno script opportunamente richiamato dal crontab del LinkSys eseguo lo switch tra il repeat mode e la wan wired del mio wrt54gl.

Per cominciare diamo un'occhiata a come vengono riconosciute le interfacce di rete che ci offre il nostro wrt. Per fare questo dobbiamo accedere al SysLink tramite ssh e lanciare il comando ifconfig, oppure lanciare lo stesso comando da interfaccia web dalla sezione Amministrazione/Comandi. In entrami i casi l'output restituito sarà simile al seguente:

br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9C
inet addr:192.168.50.254 Bcast:192.168.50.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:426633 errors:0 dropped:0 overruns:0 frame:0
TX packets:328798 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:41495329 (39.5 MiB) TX bytes:347531594 (331.4 MiB)

br0:0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9C
inet addr:169.254.255.1 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:308010 errors:0 dropped:0 overruns:0 frame:0
TX packets:210662 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32081067 (30.5 MiB) TX bytes:224160287 (213.7 MiB)
Interrupt:4

eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9E
inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:557551 errors:0 dropped:0 overruns:0 frame:1013636
TX packets:667635 errors:400 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:363743762 (346.8 MiB) TX bytes:194900554 (185.8 MiB)
Interrupt:2 Base address:0x5000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:17312 errors:0 dropped:0 overruns:0 frame:0
TX packets:17312 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1382846 (1.3 MiB) TX bytes:1382846 (1.3 MiB)

vlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9C
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:307549 errors:0 dropped:0 overruns:0 frame:0
TX packets:209876 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:26485558 (25.2 MiB) TX bytes:223131703 (212.7 MiB)

vlan1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9C
inet addr:192.168.2.254 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:460 errors:0 dropped:0 overruns:0 frame:0
TX packets:786 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:51279 (50.0 KiB) TX bytes:82716 (80.7 KiB)

wl0.1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:9F
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


Le interfacce presenti sono le seguenti:
  • br0, è un bridge che rappresenta l'interfaccia sulla rete locale, il bridge che collega le due interfacce vlan0 e wl0.1, ovvero le porte dello switch presente sul linksys più la rete wireless
  • br0:0, interfaccia virtuale usata per assegnare un secondo ip alla rete locale (
    Dd-wrt: indirizzo ip di emergenza)
  • eth0, controller di rete programmabile su cui vengono definite le due vlan0 e vlan1
  • eth1, interfaccia wireless
  • lo, loopback
  • vlan0, vlan creata sul controller eth0, che rappresenta le quattro porte della rete locale dello switch presente sul LinkSys
  • vlan1, vlan creata sul controller eth0, che rappresenta la porta wan dove in un'installazione classica viene collegato un modemo/router adsl
  • wl0.1, interfaccia virtuale configurata come access point
Ricapitolando le interfacce che più ci interessano sono queste:
  • br0, la nostra rete locale con indirizzo 192.168.50.254
  • eth1, interfaccia che si affaccia sulla rete a cui siamo collegati in "repeater mode" (quella del vicino di casa) con indirizzo192.168.0.254;
  • vlan1, questa è porta wan del nostro LinkSys con indirizzo 192.168.2.254

In definitiva il wrt54gl si affaccia su tre reti:
  • la rete locale, 192.168.50.0/24
  • la rete del vicini di casa 192.168.0.0/24
  • la wan 192.168.2.0/24
Nella configurazione in "repeter mode" l'interfaccia che funge da wan viene assegnata a eth1, mentre vlan1 (la wan reale) non viene considerata; avremo il risultato che tutta la configurazione della connessione ad internet impostata da interfaccia web sarà applicata ad eth1.















Come è possibile vedere dall'immagine qui sopra, come gateway viene utilizzato l'ip 192.168.0.1 ovvero il router wireless che sta sulla rete a cui accediamo in "repeater mode" (quella del vicino di casa), avendo così una tabella di routing come segue:

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1

A questo punto volendo switchare il default gateway su router collegato sulla porta wan del nostro LynkSys eseguo questo script:

enablegw_casa

#!/bin/sh
date > /tmp/enablegw_casa.log

ifconfig vlan1 192.168.2.254 up
sleep 10
pingcheck 192.168.2.1
if [ $? == 0 ]; then
echo -e "\n router acceso\n" >> /tmp/enablegw_casa.log
if [ "$(findgw|grep 192.168.2.1)" != "192.168.2.1" ]; then
echo -e "\n default gw 192.168.2.1 abilitato\n" >> /tmp/enablegw_casa.log
route add default gw 192.168.2.1
stopservice ddns
startservice ddns
else
echo -e "\n default gw 192.168.2.1 gia abilitato\n" >> /tmp/enablegw_casa.log
fi
else
echo -e "\n router spento\n" >> /tmp/enablegw_casa.log
fi

Lo script provvede ad abilitare ed assegnare in indirizzo ip all'interfaccia wan
ifconfig vlan1 192.168.2.254 up
attende alcuni secondi dopo di che verifica che il router che fungerà da gateway (192.168.2.1) sia raggiungibile, per fare questo mi avvalgo dello script pingcheck
pingcheck 192.168.2.1
Se l'esito è positivo e non è già presente come default gateway il router adsl (192.169.2.1) questo viene impostato
route add default gw 192.168.2.1
dato che utilizzo anche un servizio di dynamic dns per potere accedere alla mia lan da remoto, vengono impartiti i comandi seguenti per riavviare il servizio che si occupa di aggiornare l'indirizzo pubblico con cui esce il SysLink su internet
stopservice ddns
startservice ddns
Ci sono alcuni script di servizio che vengono richiamati da enablegw_casa che sono pingchek che controlla la raggiungibilità di un host e findgw che restituisce in output i gateway di default.

pingcheck
#!/bin/sh
#
# Esegue il ping su una serie di indirizzi forniti come argomento,
# se uno do questo fallisce esce con errore se tutti i ping hanno successo esce senza errori.

SCRIPT=`basename $0`

if [ $# = 0 ]; then
echo -e "$SCRIPT v 0.1 15/05/2008\nNessun argomento passato: $SCRIPT addres [addres [addres [..] ] ]"
exit 1
fi

ADDRESES=$@

for ADDRES in $ADDRESES; do
ping -c 25 $ADDRES
#&> /dev/null
PINGCHECK=$?
if [ $PINGCHECK != 0 ]; then
echo "$SCRIPT FAIL $ADDRES"
exit 1
fi
done

echo "$SCRIPT OK"
exit 0

findgw
#!/bin/sh
#
# Mostra il default gateway

SCRIPT=`basename $0`

if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo -e "\n$SCRIPT v 0.2 01/01/2009\n"
echo -e "Parametri:"
echo -e " -h, --help\tQuesto messaggio"
echo -e " -1\t\tSe ci sono piu' default gateway ne restituisce soltanto il primo"
echo -e ""
exit 0
fi

ONLYFIRST=""

if [ "$1" == "-1" ]; then
ONLYFIRST="-m 1"
fi

route -n |grep $ONLYFIRST ^0.0.0.0 | tr -s ' ' | cut -d' ' -f2

exit 0

Una volta eseguito enablegw_casa se tutto sara andato nel modo giusto usciremo su internet dal router adsl collegato sulla porta wan del nostro wrt54gl.

A questo punto per ritornare alla situazione originale basterà eseguire lo script disablegw_casa che pensera a eliminare come default gateway l'ip 192.168.2.1 e a disabilitare l'interfaccia vlan1:

disablegw_casa
#!/bin/sh

route del default gw 192.168.2.1
ifconfig vlan1 down
stopservice ddns
startservice ddns
E' da tenere presente che sul wrt54gl è stato attivato il supporto al filesystem jffs e che tutti gli script sopra indicati sono posizionati in /jffs/usr/bin/.

Per concludere, personalente ho inserito i due comandi nel crontab del SysLink in modo che vengano eseguiti agli opportuni orari per switchare da una gateway a l'altro.

40 7 * * 1-5 root /jffs/usr/bin/disablegw_casa
05 21 * * 1-5 root /jffs/usr/bin/enablegw_casa

L'inserimento di tali linee nel crontab è possibile dall'interfaccia web di dd-wrt dal menù Amministrazione/Gestione/Cron

24.7.08

Configurare DD-WRT come repeater sul SysLink wrt54gl (come utilizzare l'adsl del vicino via wifi)

Un paio di anni fa ho sottoscritto l'abbonamento Alice Night & Weekend che mi permette di avere accesso ad internet durante le ore notturne, nel fine settimana e nei giorni festivi. Con il trascorrere del tempo mi sono accorto questo tipo di contratto iniziava a starmi un po stretto. Per fortuna il vicino di casa, avendo un contratto flat, mi ha gentilmente offerto la sua connessione.

ATTENZIONE !!!!!!

Come riportato nei commenti da alcuni lettori, attualmente questa pratica in Italia non è legale, in genere i fornitori di connettività vietano la fornitura a terzi, in più attualmente è vietato l'utilizzo di ponti radio al di fuori della propria abitazione.
Questo articolo NON VUOLE ESSERE IN NESSUN MODO UN INCITAMENTO PER IL LETTORE AD INFRANGERE LA LEGGE, ma solo una guida per chi si trovasse in difficoltà nel configurare DD-WRT.

L'adsl su cui mi apprestavo ad agganciarmi stava dietro un router wireless Sitecom, come fare ad eseguire la connessione ? Semplice ho acquistato un Cisco Linksys wrt54gl, ho upgradato dd-wrt v23rc7 alla v24 e l'ho sostituito al mio attuale AP, configurandolo in modalità Repeater.
Tra l'altro grazie a dd-wrt sono riuscito a configurare diversi servizi che prima non avevo: dns e dhcp sulla rete locale, visibilità pubblica grazie a DynDns, accesso da remoto verso la rete interna, wake on lan dei pc della lan, ecc...)

Scenario

Definiamo le due reti: HOME è la mia rete locale, mentre VICINOCASA è la rete del vicino di casa che offre la connessione adsl. La rete HOME sarà connessa ad internet grazie al nostro router SysLink con dd-wrt configurato in modalità repeater, in modo che questo faccia da ponte verso il router adsl wirelss (Sitecom) posto sulla rete VICINOCASA. Quindi avremo uno scenario simile a questo

Network HOME 192.168.50.0/24
  • router SysLink con dd-wrt
    192.168.50.254 - Interfaccia verso rete interna (HOME)
    192.168.0.254 - Interfaccia verso rete rete VICINOCASA (collegata via wifi in modalità repeater)
Network VICINO CASA 192.168.0.0/24
  • router Siecom (router adsl wifi)
    192.168.0.1 - Interfaccia verso rete interna (VICINOCASA)
Come possiamo notare i router SysLink e Sitecom sono in comunicazione tra loro grazie alle due interfacce che hanno in comune la rete 192.168.0.0/24













CONFIGURAZIONE LinkSys wrt54gl con DD-WRT

Passiamo ora alla configurazione di dd-wrt:
  1. Definiamo una interfaccia wireless virtuale che utilizzeremo in modalità access point per fare collegare i nostri dispositivi mobili (notebook, telefoni wifi, ecc...) sulla rete locale (network Home 192.168.50.0/24). Per fare questo posizioniamoci sul menu "Wireless/Impostazioni base", clickiamo su Aggiungi nella sezione Virtual Interfaces e definiamo l'SSID della nostra rete wireless (nel mio caso lejubila), mentre nella sezione Wireless Physical interface impostiamo la Modalità wireless come Repeater e nel campo Nome retewireless mettiamo l'SSID della rete wifi del vicino di casa(nel mio caso Sitecom). A questo punti clickiamo su "Applica", il nostro dd-wrt attivera la nostra rete wifi e contemporaneamente instaurerà la connessione alla rete wifi del vicino di casa.
  2. Definiamo il sistema crittografia e le chiavi per le l'interfaccia wifi fisica e virtuale. Posizioniamoci nel menu "Wireless/Wireless Security", nella sezione Interfaccia fisica wl0 impostiamo il sistema di crittografia adottato sull'access point del vicino di casa, mentre nella sezione Interfacce virtuali wl0.1 definiamo il tipo di crittografia della nostra wifi. Clickiamo sempre su Apllica per abilitare le modifiche.
  3. Definiamo ora l'indirizzo ip dell'interfaccia di dd-wrt che si affaccia sulla rete wifi del vicino (questa interfaccia viene considerata al pari della Wan e verrà utilizzata da dd-wrt per uscire su internet). Posizioniamoci su "Setup/Setup base" e nella sezione Tipo di connessione internet configurarla come segue:
    • Tipo di Connessione: IP Statico
    • Indirizzo IP Internet: impostare un indirizzo di rete compatibile con la rete wifi del vicino, nel mio caso 192.168.0.254
    • Subnet Mask: come sopra
    • Gateway: indirizzo ip del router del vicino di casa, nel mio caso 192.168.0.1
    • Dns statico: gli indirizzi ip del dns del provider
  4. Impostiamo l'indirizzo di rete locale di dd-wrt nella sezione Setup Rete sempre dal menu "Setup/Setup base" (nel mio caso 192.168.50.254)
  5. Applicare e salvare le modifiche
A questo punto se tutto è stato fatto correttamente dovremmo essere in grado di connetterci ad internet grazie alla linea del nostro vicino.

Buona navigazione.