VPN gratis a casa o in ufficio con Raspberry Pi e WireGuard

Come allestire un server VPN gratis per collegarsi in sicurezza alla propria rete locale e proteggere i dati in transito mentre si utilizzano reti WiFi altrui.

Un server VPN consente di collegarsi da remoto alla rete locale dell’azienda, dell’ufficio o di casa in totale sicurezza. Si tratta di uno strumento molto utile allorquando ci si trovasse in viaggio o comunque lontani dalla sede dell’impresa o dall’abitazione: attivando la connessione VPN si può accedere alla rete locale e utilizzare le risorse condivise in LAN come se il dispositivo fosse collegato al router che si adopera abitualmente.

Una volta stabilita la connessione VPN, i dati saranno scambiati in forma cifrata e nessun soggetto terzo, lungo il percorso, potrà leggerli, modificarli o danneggiarli.

Acquistando una scheda Raspberry Pi è possibile configurare una VPN gratis e in pochissimi minuti.
La rete VPN che si allestirà non serve per superare le limitazioni geografiche oppure per sbloccare le principali piattaforme di streaming online ma permette di navigare su Internet in sicurezza mentre si usano WiFi altrui. In questo modo si proteggeranno i propri dati personali e si avrà la possibilità, come detto, di accedere a distanza alle risorse condivise in LAN, a casa come in ufficio.

Il protocollo WireGuard, rispetto a OpenVPN, punta non solo sulla sicurezza ma anche sulla velocità di connessione.
Il vantaggio di usare una Raspberry Pi come server VPN, poi, consiste nel fatto che si tratta di un dispositivo di dimensioni pari a quelle di una carta di credito. Per gestire le richieste di connessione alla propria LAN non sarà quindi più necessario tenere costantemente accesi e alimentati ingombranti dispositivi dotati di dissipatori attivi: sarà sufficiente lasciare connessa alla rete elettrica la piccola Raspberry Pi.

Una volta che un dispositivo client avrà stabilito la connessione con il server VPN basato sul protocollo WireGuard e installato sulla Raspberry Pi, esso avrà modo di accedere alle risorse condivise in rete locale e “pingare” tutti i sistemi ad essa connessi. Si potrà inoltre navigare sul web usando l’indirizzo IP pubblico del router.
Il suggerimento, come evidenziamo più avanti, è assegnare alla Raspberry Pi un indirizzo IP privato di tipo statico (non cambia nel tempo e non è attribuito via DHCP).

Come configurare una VPN gratis con Raspberry Pi, PiVPN e WireGuard

In questo articolo spieghiamo in breve come configurare una scheda Raspberry Pi (noi abbiamo utilizzato una Raspberry Pi 4) per fungere da server VPN.
La Raspberry Pi sarà connessa al router via WiFi o cavo Ethernet e si occuperà di gestire tutte le richieste di collegamento alla VPN.

Supponiamo di aver configurato la Raspberry Pi come nell’articolo Raspberry Pi 4: come usarla senza monitor e tastiera.
Prima di cominciare la configurazione del server VPN, suggeriamo di accedere alla scheda via shell SSH e lanciare i seguenti due comandi per aggiornare tutti i pacchetti software:

sudo apt update
sudo apt full-upgrade -y

Il passo successivo consiste nello scaricare e installare PiVPN, programma che rende semplice installare e configurare una VPN sulla scheda Raspberry Pi:

curl -L https://install.pivpn.io | bash

Digitato questo semplice comando, si accederà a una procedura guidata per impostare la VPN usando il protocollo OpenVPN o WireGuard.
Dal momento che WireGuard si è dimostrato molto più performante rispetto all’apprezzato OpenVPN, in questa guida ci concentriamo proprio su questo protocollo. Nulla vieta comunque di selezionare e impostare l’utilizzo di OpenVPN.

Premendo OK, l’installazione di PiVPN suggerirà di usare un indirizzo IP statico per la scheda Raspberry Pi evitando che sia assegnato un IP dinamico via DHCP.
Seguendo la guida Raspberry Pi 4: come usarla senza monitor e tastiera si sarà già associato un IP statico alla scheda.

Successivamente PiVPN chiederà di scegliere se utilizzare il protocollo WireGuard oppure OpenVPN: noi selezioneremo il primo.

Al passaggio successivo, PiVPN indicherà il numero della porta che sarà utilizzato dal server VPN WireGuard. Di default è 51820 ed è possibile accettare l’impostazione premendo Invio. Diversamente, sarà possibile modificare il numero della porta.

La routine di installazione di PiVPN chiederà quindi quale server DNS si preferisce usare: i tasti freccia consentono di scegliere le successive voci dell’elenco. Selezionando Custom, si può impostare manualmente l’indirizzo del DNS anziché scegliere tra quelli proposti.

Al passaggio seguente verrà richiesto in che modo si connetteranno i dispositivi client al server VPN: se sull’IP pubblico associato al router oppure usando un indirizzo mnemonico impostato come record DNS.

Proseguendo PiVPN genererà la chiavi crittografiche quindi proporrà all’utente di abilitare gli “unattended upgrades” in maniera tale che il server VPN possa aggiornarsi automaticamente, senza attendere alcun “via libera”, nel caso in cui venissero rilasciati aggiornamenti importanti (ad esempio quelli in materia di sicurezza). Suggeriamo di selezionare Yes.

A installazione conclusa si dovrà dapprima riavviare la Raspberry Pi premendo su Yes quindi su OK.

Dopo il riavvio della Raspberry Pi, effettuando una nuova connessione via shell SSH, si potrà impartire il seguente comando per aggiungere un profilo client:

sudo pivpn add

PiVPN chiederà di assegnare un nome al profilo che si utilizzerà per stabilire una connessione VPN da un qualsiasi dispositivo client.

Come ultimo passo basterà poi impartire il comando seguente per generare e visualizzare un codice QR contenente tutte le informazioni per la connessione remota con il server VPN:

pivpn -qr

di seguito indicare il nome del profilo client creato in precedenza

Il comando seguente consentirà di accertarsi che il server PiVPN basato su WireGuard sia in ascolto sulla porta UDP 51820:

nc -z -v -u 127.0.0.1 51820

Impostare il port forwarding sul router

Affinché il server VPN WireGuard impostato sulla Raspberry Pi possa gestire le richieste di connessione in ingresso, si dovrà accedere al pannello di configurazione del router e portarsi nella sezione Port forwarding/Inoltro delle porte: vedere Port forwarding, cos’è e qual è la differenza con il port triggering.

Bisognerà impostare l’inoltro delle porte così come in figura avendo cura di sostituire l’indirizzo IP interno con quello statico assegnato alla Raspberry Pi.

Stabilire la connessione VPN dai dispositivi client

A questo punto è tutto pronto per connettersi a distanza al server VPN stabilendo automaticamente un tunnel cifrato.

In questa pagina sono pubblicati tutti i client WireGuard. Supponendo di scaricare quello per Android o iOS, si dovrà toccare l’icona “+” in basso a destra quindi scegliere Scansione da codice QR.

Puntando l’obiettivo della fotocamera dello smartphone verso il codice QR comparso nella finestra della shell SSH, si potrà istantaneamente configurare il tunnel VPN.

Basterà toccare l'”interruttore” a destra del nome della VPN appena aggiunto perché a distanza ci si possa collegare alla LAN, accedere alle risorse condivise e navigare sul web utilizzando l’IP pubblico assegnato al router di casa o dell’ufficio.
Portandosi ad esempio a questo indirizzo si vedrà apparire in alto l’IP del router e non quello assegnato dall’operatore mobile.

Sugli altri dispositivi client, dopo aver installato WireGuard, sarà sufficiente importare il contenuto del file .conf che sulla Raspberry Pi si trova nella cartella /home/pi/configs.
Per accedere al contenuto di ciascun profilo client creato, basta digitare nano /home/pi/configs/ seguito dal nome del file (esempio: nano /home/pi/configs/michele.conf).

In caso di problemi, suggeriamo di digitare di nuovo curl -L https://install.pivpn.io | bash e scegliere Reconfigure ripetendo l’intera procedura precedentemente descritta.

È interessante evidenziare che nel caso in cui sulla Raspberry Pi fosse stato abilitato il firewall ufw (vedere Firewall: come configurarlo con ufw su Ubuntu), la routine di installazione di PiVPN provvederà a configurare le regole corrette per l’accesso da remoto al server VPN.

Ti consigliamo anche

Link copiato negli appunti