PI Guide/ Raspberry Pi come super router

Basta poco per costruire un dispositivo magico che, senza inutili configurazioni, permette di bypassare i limiti di banda imposti dai provider Internet

Riuscire a navigare o scaricare a una velocità superiore è il sogno nascosto di tutti. Dopotutto, la banda Internet non basta mai: pur avendo a disposizione un'ADSL o una fibra ottica, il numero sempre maggiore di dispositivi connessi tra le mura domestiche (PC, smartphone, tablet, console, TV) non permette di ottenere il massimo dalla propria connessione. Ciò perché mentre cerchiamo di scaricare un file, qualcuno dei nostri familiari è in salotto a guardare un film su Netflix o altri servizi di streaming. Quante volte ci siamo ritrovati di fronte a uno scenario simile? Ma oggi, una soluzione definitiva c'è e metterla in pratica non ci costa nulla, o quasi.


Il Raspberry Pi 3 integra un'interfaccia Wi-Fi, permettendoci così di utilizzare una delle 4 porte USB per aggiungere un ulteriore adattatore Wi-Fi

Oltre all'ADSL abbiamo sottoscritto un piano mobile che ci permette di navigare dal tablet o dal telefonino anche quando non abbiamo a disposizione la rete Wi-Fi di casa? Abbiamo a disposizione una chiavetta Internet che ci permette di navigare in mobilità? Se la risposta a questi due quesiti è affermativa, siamo a cavallo. Quello che faremo, infatti, è realizzare un "dispositivo magico" (utilizzando un Raspberry Pi 3) che permette di "unire" la potenza della connessione ADSL a quella di una Internet Key e del nostro fedele smartphone Android (sfruttando le funzionalità del tethering Wi-Fi). Solo così saremo in grado di realizzare una sorta di "super router" capace di unire 3 differenti connessioni e dire finalmente addio ai lunghi tempi di attesa durante il download di un file o il caricamento di un film in streaming.

Durante l'installazione di tutto il software necessario, ci imbatteremo anche in Node.js. Ma di cosa si tratta? Essenzialmente è un framework utilizzato dai programmatori e che consente il funzionamento di Dispatch-proxy, il software che si occuperà di "unire" fra loro le connessioni a Internet. Poiché Dispatch-proxy è scritto in Java, per il suo corretto funzionamento è necessario che Raspbian sia equipaggiato anche di Node.js.
Affinché il Raspberry Pi 3 riesca a fornire la connettività al resto della LAN, è necessario che tutti gli altri computer e dispositivi siano connessi al router ADSL (quest'ultimo collegato con un cavo Ethernet al mini PC). Inoltre, è preferibile disattivare il firewall integrato nel router. Per fare ciò, accediamo al pannello di gestione del router ADSL (solitamente raggiungibile tramite browser all'indirizzo 192.168.1.1). Disattivando il firewall del router non saremo protetti? Assolutamente no! Raspbian, infatti, offre di default un firewall ben più performante e sicuro.

Tutto in una microSD
Scarichiamo Raspbian, l'OS per il Raspberry Pi 3, e installiamo su una scheda di memoria. Per farlo, da un PC connesso a Internet (nel nostro caso abbiamo usato una distribuzione GNU/Linux) raggiungiamo la pagina Web ufficiale e clicchiamo sul pulsante Download ZIP in corrispondenza di Raspbian Jessie. Attendiamo la fine del download.


Scompattiamo l'archivio e spostiamoci nel Terminale. Inseriamo la microSD nel lettore di memory card del PC (se sprovvisto usiamo un adattatore USB) e lanciamo df -h per scoprire il nome assegnato alla scheda di memoria. Superata questa fase, lanciamo umount /dev/sdd, dove sdd è il nome della microSD.


Non resta che raggiungere (con il comando cd) il percorso nel quale abbiamo estratto l'ISO di Raspbian e da qui lanciare il comando dd bs=4M if=nome-immagine.img of=/dev/sdd dove sdd è il nome assegnato alla microSD.


Ad operazione conclusa rimuoviamo la scheda microSD dal lettore e inseriamola nel Raspberry Pi 3. Colleghiamo quest'ultimo a un monitor (tramite porta HDMI), a una tastiera, ad un mouse USB e al suo alimentatore. L'avvio di Debian Jessie avverrà in automatico entro qualche secondo.


No software, no party!
Prima di "unire" ADSL, 4G e 3G è necessario installare alcuni software fondamentali.
Colleghiamo il Raspberry Pi al Web (utilizzando un cavo Ethernet) e avviamo il Terminale (terza icona in alto a sinistra della GUI di Raspbian). Da qui, lanciamo sudo apt-get update per aggiornare tutti i pacchetti software disponibili.


Terminata questa fase, digitiamo sempre da terminale curl -sL https://deb.nodesource.com/setup_4.x sud -E bash - confermando con Invio. Node.js verrà scaricato: l'operazione può durare qualche secondo, ma varia in base alla connessione utilizzata.


È arrivato il momento di installare Node.js. Per farlo, digitiamo sudo apt-get install -y node.js. Al termine dell'operazione il software fondamentale per il funzionamento del nostro "load balancer" sarà pronto all'uso.


Prima di proseguire, però, è necessario procedere all'installazione di un altro software. Sempre da terminale, lanciamo il comando sudo apt-get install -y npm (confermando con Invio) e confermiamo con Yes.


Tutto è pronto per installare il load balancer (Dispatch-proxy). Per farlo, lanciamo sudo npm install -g dispatch-proxy. I pacchetti del software verranno scaricati e installati sul Raspberry Pi 3 (l'operazione dura una manciata di secondi).


Per verificare che la versione di dispatch-proxy scaricata sia la più recente e, in caso contrario, procedere al suo aggiornamento, lanciamo il comando sudo npm update -g dispatch-proxy. Al termine, il nostro mini PC sarà pronto per "unire" le connessioni Internet di cui disponiamo.


Load balancer: questo sconosciuto
Abbiamo scoperto che il software che ci permette di scaricare alla massima velocità "unendo" tutte le connessioni Internet che abbiamo a disposizione si chiama Dispatch-proxy. Ma essenzialmente, di cosa si occupa e come funziona? Tecnicamente, questo software, che in gergo prende il nome di "load balancer", non fa altro che bilanciare in maniera intelligente il carico (ovvero, il traffico dati) sulle diverse connessioni disponibili. Così facendo, ad esempio, se un PC della LAN richiede il download di un file, dispatch-proxy mette a disposizione la connessione ADSL. Per la semplice navigazione Web, invece, verrà utilizzata la connessione che offre la banda minore. Il tutto, come già detto, avviene in maniera automatica: non dobbiamo dunque perderci in mille configurazioni. Sarà dispatch-proxy a stabilire quale PC dovrà utilizzare questa o quella connessione a Internet.
E il bello è che non ci sono limiti. Se disponiamo di altre connessioni da condividere, ad esempio il Wi-Fi del vicino che ci autorizza a connetterci alla sua rete senza fili o un altro smartphone sul quale configurare il tethering, Dispatch-proxy potrà unirle alle altre connessioni. L'unico vero limite è il numero di interfacce Wi-Fi collegabili al Raspberry Pi 3: il numero di ingressi USB disponibili, infatti, è pari a 4 di cui 1 è già occupata dalla Internet Key. Di conseguenza, potremo connetterci "solo" ad altre 3 reti senza fili. Nel caso in cui volessimo strafare, per estendere il numero di porte USB sarà necessario acquistare un hub USB alimentato.

L'unione fa la forza
Vediamo ora come condividere con il Raspberry Pi 3 la connettività 4G del nostro smartphone Android e l'ADSL di casa.
Affidandoci ancora una volta al terminale, lanciamo dispatch list. Vengono mostrati tutti gli accessi a Internet disponibili e ai quali il Raspberry Pi 3 è già collegato. Da questi, dobbiamo escludere la sezione lo (diminutivo di localhost).


Dal nostro smartphone Android spostiamoci in Impostazioni e nella sezione Wireless e reti tappiamo su Altro: attiviamo il tethering Wi-Fi. Ritorniamo al Raspberry Pi 3 e cliccando sull'icona di rete selezioniamo la rete Wi-Fi condivisa dallo smartphone. Connettiamoci.


Lanciamo il comando dispatch list: l'interfaccia wlan0 del Raspberry Pi 3 è connessa al Web grazie al nostro smartphone Android. Se il vicino ce lo consente e abbiamo a disposizione una chiavetta Wi-Fi USB, possiamo connetterci a una seconda rete senza fili.


Colleghiamo il Raspberry Pi 3 al nostro router di casa tramite cavo Ethernet. Dopo aver connesso il cavo sia al router che alla scheda di rete del Raspberry Pi 3, lanciamo nuovamente il comando dispatch list per verificare che sia presente anche la connessione eth0.


Aggiungiamo anche il 3G
La maggior parte delle Internet key in circolazione viene fornita con un software a corredo che permette di stabilire la connessione in maniera semplice e veloce. Questi software, però, il più delle volte sono disponibili unicamente per Windows e, nel momento in cui colleghiamo la Internet key al Raspberry Pi 3 equipaggiato con Raspbian non saremo in grado di utilizzarli. Oltre a ciò, dobbiamo fare i conti anche con i driver che permettono il corretto riconoscimento della chiavetta al mini PC. Fortunatamente, le più diffuse Internet key (come la Huawei E353 che abbiamo utilizzato per i nostri test) vengono riconosciute al primo colpo e dunque non c'è la necessità di perdere ore ed ore per cercare il giusto driver. E se disponiamo di una chiavetta differente? In questi casi, è bene fare prima una semplice ricerca sul Web per verificare la compatibilità con GNU/Linux e l'eventuale disponibilità dei driver. Se non conosciamo il nome del modello di Internet key in nostro possesso, colleghiamola a uno degli ingressi USB del Raspberry Pi 3 e, da terminale, lanciamo il comando lsusb: nella lista che appare dovrebbe essere riportato produttore e nome del modello in nostro possesso.
Ecco dunque come configurare la Huawei E353 e far sì che si connetta al Web.

Dal terminale di Raspbian, lanciamo sudo apt-get install usb-modeswitch. Attendiamo che il pacchetto venga installato e, non appena apparirà un messaggio di conferma, colleghiamo la chiavetta 3G a un ingresso USB del Raspberry Pi 3.


Attendiamo qualche secondo (il tempo necessario che il sistema riconosca la chiavetta 3G appena collegata) e lanciamo ifconfig -a. Analizziamo l'output mostrato a schermo: se è presente la sezione wwan0, vuol dire che tutto sta andando per il verso giusto.


Lanciamo il comando sudo nano /etc/network/interfaces. Aggiungiamo al file di testo mostrato a schermo le nuove righe allow-hotplug wwan0 e iface wwan0 inet dhcp. Salviamo con Ctrl+O. A questo punto, usciamo dall'editor con Ctrl+X.


Lanciamo sudo reboot e attendiamo che il Raspberry Pi 3 venga riavviato. Non appena il sistema operativo sarà nuovamente disponibile, apriamo il terminale e digitiamo dispatch list: se è presente la nuova sezione wwan0, vuol dire che la chiavetta 3G è connessa al Web.


3 connessioni in 1
Lanciamo un solo comando e configuriamo a puntino tutti gli altri PC della LAN.
Tutto è pronto per "unire" le 3 connessioni: ADSL, chiavetta 3G e tethering Wi-Fi dello smartphone Android. Dal terminale di Raspbian, lanciamo dispatch start -http. Apparirà un messaggio che ci confermerà l'avvio di un nuovo server proxy.


Prima di poter navigare, però, è necessario smistare tutto il traffico Web sul nuovo proxy. Se sul mini PC abbiamo già installato Mozilla Firefox, spostiamoci nelle sue impostazioni e, da Connection Settings, compiliamo HTTP Proxy con localhost e Port con 8080.


Non resta che ripetere la configurazione anche sugli altri PC della LAN. Da un qualsiasi PC collegato alla Intranet avviamo dunque il browser preferito. Nel caso di Google Chrome, spostiamoci in Impostazioni/Rete. Clicchiamo su Modifica impostazioni proxy e compiliamo il campo Indirizzo con l'IP del Raspberry Pi 3. Indichiamo la Porta 8080.


Se utilizziamo Ubuntu 16.10, raggiungiamo le impostazioni di Rete e da qui spostiamoci in Proxy di rete. Compiliamo il campo Proxy http con l'indirizzo IP del Raspberry Pi 3. Indichiamo la porta 8080 e confermiamo con Applica all'intero sistema.


Tiriamo le somme
Per effettuare i nostri test, abbiamo utilizzato una classica connessione ADSL 20 Mega (velocità effettiva 17,4 Mb/s), aggiungendo il tethering 3G di uno smartphone nel quale abbiamo inserito una SIM H3G con connettività 4G (velocità effettiva 23,67 Mb/s). La nostra Internet key, invece, è capace di connettersi unicamente alla rete 3G (velocità effettiva 11,6 Mb/s). Nonostante ciò, effettuando dei test di velocità su Speedtest.net, siamo stati capaci di triplicare la banda a disposizione (banda totale effettiva 52,67 Mb/s).
Certo, la velocità effettiva di navigazione si manterrà sulla velocità della connessione utilizzata al momento (ADSL, 3G o 4G in tethering, ovvero quella che dispatch-proxy riterrà più "scarica" e idonea) ma di fatto le prestazioni nell'intera LAN miglioreranno di molto. Resta ovvio che, nel caso in cui avessimo avuto a disposizione una connessione in fibra ottica e una Internet key capace di navigare anche sulla rete 4G il risultato sarebbe stato notevolmente migliore.
Notizie collegate
13 Commenti alla Notizia PI Guide/ Raspberry Pi come super router
Ordina
  • pari pari l'articolo comparso questo mese su LinuxPRO.
    Ora: e' linuxPRO che copia PI o e' PI che copia linuxPRO?
    sicuramente uno dei due ha la faccia come il culo e io i miei sospetti ce li ho.
    non+autenticato
  • Non importa, meglio leggere articoli come questo copiati al posto dei soliti articoli marketta.
    non+autenticato
  • "Durante l'installazione di tutto il software necessario, ci imbatteremo anche in Node.js. Ma di cosa si tratta? Essenzialmente è un javascript runtime environmentframework, utilizzato dai programmatori e che consente il funzionamento di Dispatch-proxy, il software che si occuperà di "unire" fra loro le connessioni a Internet. Poiché Dispatch-proxy è scritto in Java Javascript, per il suo corretto funzionamento è necessario che Raspbian sia equipaggiato anche di Node.js"
    non+autenticato
  • Temo sia inutile.
  • L'unico utilizzo reale che ci vedo e' quello di avere una linea di backup automatica
    non+autenticato
  • Ottimo per la didattica ma completamente inutile e dannoso per la pratica.

    Oltre alla banda disponibile, la prima cosa che rende la connessione reattiva è la latenza.
    Switchare su 3g e 4g significa peggiorare la latenza dai 10/20ms di una buona adsl ai 200/2000ms di un 3g saturo.

    Il continuo cambio di "ip di uscita" non è affatto gradito dai server che sono costretti ad aprire nuove connessioni tcp ad ogni cambio di ip.
    Inoltre, per la navigazione web, non poter sfruttare il keep-alive e dover ristabilire connessioni https è drammaticamente peggiorativo.

    La somma delle prestazioni delle singole connessioni è pura utopia.
    Serve solo a far salire lo speedtest (che apre connessioni multiple per saturare la banda) ma per un normale download (a meno di usare un downloadmanager) non porta alcun beneficio, anzi, la connessione piu libera al momento dell'inizio del download (che dovrà completarsi senza cambi di ip) non è detto che sia sul canale piu veloce.

    La maggioranza dei putlocker non consentono connessioni multiple, quindi, considerato che a parte le solite distro linux, gli utenti scaricano solo roba pirata, a che serve tutto questo?

    Non dimentichiamo infine che con questo aggeggio puoi trovarti il piano dati 3g/4g mensile azzerato in un pomeriggio da tua figlia che guarda il tubo.
    non+autenticato
  • - Scritto da: nome e cognome
    > Ottimo per la didattica ma completamente inutile
    > e dannoso per la
    > pratica.
    >
    > Oltre alla banda disponibile, la prima cosa che
    > rende la connessione reattiva è la
    > latenza.
    > Switchare su 3g e 4g significa peggiorare la
    > latenza dai 10/20ms di una buona adsl ai
    > 200/2000ms di un 3g
    > saturo.
    >
    > Il continuo cambio di "ip di uscita" non è
    > affatto gradito dai server che sono costretti ad
    > aprire nuove connessioni tcp ad ogni cambio di
    > ip.
    > Inoltre, per la navigazione web, non poter
    > sfruttare il keep-alive e dover ristabilire
    > connessioni https è drammaticamente
    > peggiorativo.
    >
    > La somma delle prestazioni delle singole
    > connessioni è pura utopia.
    >
    > Serve solo a far salire lo speedtest (che apre
    > connessioni multiple per saturare la banda) ma
    > per un normale download (a meno di usare un
    > downloadmanager) non porta alcun beneficio, anzi,
    > la connessione piu libera al momento dell'inizio
    > del download (che dovrà completarsi senza cambi
    > di ip) non è detto che sia sul canale piu
    > veloce.

    Ma ci sarà pur qualche opzione per gestire queste situazioni, no?
    Sul mio router con sistema che è un fork di Vyatta che non messo sia niente di eccezionale, uso l’opzione sticky per indirizzi di sorgente e destinazione.
    Di algoritmi per dare priorità a una connessione piuttosto che a un’altra ce ne sono parecchi a seconda degli utilizzi.

    > Non dimentichiamo infine che con questo aggeggio
    > puoi trovarti il piano dati 3g/4g mensile
    > azzerato in un pomeriggio da tua figlia che
    > guarda il
    > tubo.

    Io ora ho in load balancing fibra e connessione wireless.
    Stavo valutando se mettere qualcosa LTE solo come failover, magari invece che con abbonamento mensile, un’offerta di quelle che costano tot al giorno. Ho visto purtroppo che queste “offerte” hanno limiti di traffico ridicoli.
    Teo_
    2666
  • Hai tecnicamente ragione ma:

    1) dipende da cosa devi fare
    2) dipende da quali protocolli utilizzi (legato ad 1)
    3) potrebbe essere utile (di solito lo si usa in questo modo) per unire più adsl (principale, bckup 1 e backup 2 per esempio) in modo di migliorare la connettività, renderla più fault tolerant e (dal punto di vista dell'azienda) ammortizzare, dando un utilizzo reale, le varie linee di bkc che, salvo sfighe, sono lì a far niente.
  • Interessante PoC ma considerando che i dispositivi mobili come le chiavette hanno un quantitativo di GB limitato a disposizione, di fatto è un trick inutile.

    Se ho connessione ADSL flat mica spreco preziosa banda della chiavetta 4G...

    Tamerlano
    non+autenticato
  • - Scritto da: Tamerlano
    > Interessante PoC ma considerando che i
    > dispositivi mobili come le chiavette hanno un
    > quantitativo di GB limitato a disposizione, di
    > fatto è un trick
    > inutile.
    >
    > Se ho connessione ADSL flat mica spreco preziosa
    > banda della chiavetta 4G...
    >
    >
    > Tamerlano
    Il traffico con chiavichette 4G sono state create per l'utonto a consumo come Aphex. Rotola dal ridere
    non+autenticato
  • alcuni dopo i primi giga velocei continuano a 64kbps(aad esempio fastweb)
    sarebbe possibile conquesto rasperry unire due connessioni a 64kbps per averne una a 128 kbps ^?
    non+autenticato