Sei il felice possessore di un RaspberryPi, sei pronto a sperimentare tutte le sue potenzialità, domotica, webserver, mediacenter, retrogame e tutto ciò che la tua fantasia di permette di creare, ma c’è un problema… il Raspberry Pi è confinato all’interno della rete a cui è collegato.
Come si può fare ad accedere a tutto ciò da remoto? Da uno smartphone, dall’ufficio, all’estero o comunque all’esterno della rete del RapsberryPi?
I servizi installati nel RaspberryPi restano in ascolto su determinate porte, di norma standard, ma che per ragioni di sicurezza o di “affollamento”, possono anche venire cambiate.
Alcuni esempi: la porta per i siti web non cifrati http, per convenzione, è la porta 80, per i cifrati HTTPS la 443, SSH usa la 22, ecc.
Chi “arriva” da internet si troverà il router/firewall che blocca tutte le porte non configurate su di esso, quindi questi servizi, e le loro porte, saranno accessibili solo dall’interno della rete locale.
Ci sono due modi per permetterne e reindirizzarne l’accesso e vanno usati in base alle esigenze.
Il primo è il NAT o Port Forwarding dove verrà aperta verso l’esterno una porta per ogni servizio, più porte si aprono e più i rischi di sicurezza aumentano.
Qui entra in gioco la seconda opzione, più idonea per i servizi che non necessitano di divenire pubblici, la VPN (Virtual Private Network).
Una VPN permette, aprendo una sola porta, l’accesso totale alla rete di destinazione trovando cosi disponibili tutte le porte e servizi del Raspberry ed eventuali altri dispositivi in rete, esattamente come se ci si trovasse fisicamente all’interno della rete locale, il tutto in modo cifrato e sicuro.
Il software più usato per creare una VPN è OpenVpn, dispone di client per Linux, Mac, Windows e Smartphone; il problema è che non è user-friendly, ma per ovviare a questo problema è stato creato il tool PiVpn che grazie ad un semplice comando ti permette di installare il server OpenVpn e di creare un semplice file da importare nei client da connettere.
Le caratteristiche principali:
– Semplicità assoluta: si installa con un comando e la configurazione è molto semplice anche grazie al comando da shell “pivpn [parametro]“. Inoltre crea già il file di configurazione da importare nei client;
– Flessibilità: si possono modificare le porte VPN, i certificati, la robustezza delle chiavi crittografiche, usare un nome DNS nel caso avessimo un ip pubblico dinamico e molto altro;
– Gestione: tramite il comando pivpn <command> [option];
Opzioni:
-a, add [nopass] Crea un utente per il client vpn, opzione nopass
-c, clients Elenca tutti i client connessi al server vpn
-d, debug Avvia il debug in caso di problemi
-l, list Elenca tutti i certificati validi e revocati
-r, revoke Revoca l’accesso ad un profilo client
-u, uninstall Rimuove PiVpn
Nelle mie guide parto sempre con Raspbian perché è conosciuto e la maggior parte dei tutorial in rete lo usano come riferimento.
Prerequisiti:
– RaspberryPi connesso in rete >> Guida
– Ip pubblico statico o un nome DDNS (No-Ip o consiglio DuckDns.org)
– Accesso al Router/Firewall della rete dove è connesso il RaspberryPi
Installazione:
PiVpn è pensato per rendere semplice, nel modo più assoluto, una cosa normalmente molto complicata, e per installare il nostro Server OpenVpn su RaspberryPi basta questo semplice comando
1 |
sudo curl -L https://install.pivpn.io | bash |
Lo script esegue apt-get update e poi scarica ed avvia l’installazione, che procederà con delle semplici schermate di selezione.
La prima cosa da scegliere sarà il nome dell’utente locale da utilizzare, verranno tutti proposti automaticamente in una comoda lista.
Successivamente consiglio di attivare [yes] alla proposta di attivare gli aggiornamenti di sicurezza automatici.
Poi la scelta tra il tipo di protocollo UDP o TCP, lasciamo UDP senza troppi problemi.
Ora la parte da modificare sarà la porta di ascolto, per scongiurare qualche attacco hacker, consiglio di cambiarla e restare magari tra la 10000 e la 20000, ovviamente la scelta spetta a voi.
Nella scelta del livello di criptazione loro consigliano 2048, un livello già molto sicuro.
Una volta avviata la procedura di creazione del certificato, vai pure a prendere un caffè, ci sarà molto da aspettare…
Dopo il caffè, si configurano l’ip pubblico, se hai un ip Pubblico statico seleziona la prima scelta, se invece è dinamico, puoi creare cinque nomi DDNS gratuiti con DuckDns.org, sceglierne uno e scrivilo nella voce dns entry .
Per il DNS Provider, lasciamo tranquillamente Google, va più che bene.
I Client:
Una volta completata l’installazione e riavviato il RaspberryPi eseguiamo il comando
1 |
sudo pivpn -a |
per creare una configurazione da importare nei client
La cosa bella è che verrà creato il file di configurazione /home/pi/ovpns/nomeScelto.ovpn e sarà sufficiente importarlo dal tuo client OpenVpn preferito per connetterti alla rete.
Infine è fondamentale creare nel Router/firewall il NAT/Port Forwarding dalla porta scelta prima verso l’ip Fisso INTERNO del RaspberryPi. Se il RaspberryPi non ha un ip fisso all’ interno della LAN, ti verrà chiesto di impostarlo durante l’installazione di Pivpn.
Sito ufficiale di PiVpn
La repository su GitHub
Di seguito il video di tutta questa procedura eseguita su Raspbian 2016-12-13 jessie.
Spero di essere stato utile
Se vuoi restare aggiornato seguici sui nostri social: Facebook , Twitter, YouTube, Google+, Telegram