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.