Creiamo una VPN con un Raspberry Pi e WireGuard

PREMESSA

La VPN o Virtual Private Network (Rete virtuale privata) è una connessione di rete privata tra dispositivi su Internet. Le VPN sono utilizzate per trasmettere dati sulle reti pubbliche in modo anonimo e sicuro attraverso meccanismi di autenticazione e di cifratura.

Creare una VPN è fondamentale se abbiamo la necessità di accedere dall’esterno ai dispositivi presenti all’interno della nostra rete domestica in tutta sicurezza e senza doverci preoccupare di fare port forwarding per un numero eccessivo di porte sul nostro router.

PROCESSO DI INSTALLAZIONE DEL SISTEMA OPERATIVO PER RASPBERRY PI

L’installazione della VPN non è complicata ma richiede attenzione e un minimo di competenze, oltre ai seguenti software:

  • Raspberry Pi Imager
  • PiVPN
  • Fing o software similare
  • PuTTy

Per prima cosa scarichiamo dal sito ufficiale il software Raspberry Pi Imager per “flashare” il sistema operativo di Raspberry Pi su una micro sd.

Una volta scaricato lo installiamo e lo eseguiamo. Inseriamo dunque nel nostro computer o in un adattatore di schede la micro sd della dimensione di 4 GB o superiore.

Davanti alla scelta dei diversi sistemi operativi che possiamo installare selezioniamo “Raspberry Pi OS (Other)” e poi scegliamo “Raspberry Pi OS Lite (32-bit) – versione leggera”.

Selezioniamo quindi la scheda SD su cui installare il sistema operativo e prima di procedere alla creazione della scheda accettiamo di compilare una serie di campi nelle “Impostazioni” da assegnare alla schedina. Inseriamo dunque il nome del Raspberry Pi, il nome utente e la password di root, la denominazione della Wi-Fi e la relativa password. Abilitiamo, in fine il collegamento SSH con nome utente e password. A questo punto confermiamo con i “SI” e procediamo alla creazione della scheda SD.

CONFIGURAZIONE DI UNA VPN

Terminata la procedura di installazione del sistema operativo estraiamo la scheda SD dal lettore e la inseriamo nel Raspberry Pi per il primo avvio. Apriamo l’applicazione Fing o similare sul nostro smartphone e dopo qualche minuto vedremo comparire tra l’elenco dei dispositivi di rete anche l’indirizzo IP del Raspberry Pi che annoteremo per l’eventuale configurazione e gestione attraverso il collegamento SSH con il software PuTTy.

Per il collegamento saremo chiamati ad inserire il nome utente e la password scelti in precedenza prima di procedere alla creazione della SD.

Prima di procedere all’installazione di WireGuard ci assicuriamo che il sistema opeartivo appena installato sia aggiornato. Per questo motivo digiteremo da terminale il comando:

sudo apt-get update

Successivamente lanciamo il comando:

sudo apt-get full-upgrade

Per installare una VPN su Raspberry Pi utilizziamo il tool PiVPN. Pertanto al termine dell’aggiornamento digitiamo:

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

Si aprirà una schermata che ci avvisa che siamo pronti per poter trasformare il nostro Raspberry Pi in un server con OpenVPN o con WireGuard.

Digitiamo il tasto Invio e alla schermata successiva PiVPN ci avvisa che poiché si tratta di un server, per poter funzionare correttamente, è necessario inserire un Indirizzo IP statico.

Premiamo nuovamente il tasto Invio e nella schermata successiva veniamo informati che il raspberry Pi sta utilizzando una configurazione in DHCP e ci mostra il suo indirizzo IP assegnato e l’IP del Gateway (Gateway = indirizzo IP del router)

Poichè intendiamo utilizzare un IP statico selezioniamo NO e premiamo il tasto Invio.

La nuova schermata ci propone se vogliamo utilizzare lo stesso IP dinamico come indirizzo statico. Selezioniamo NO e alla nuova schermata inseriamo un indirizzo IP non appartenente al range di indirizzi IP assegnati dinamicamente dal Router e premiamo il Tasto Invio su OK

Successivamente indichiamo l’indirizzo IP del Gateway. Quindi inseriamo in quel campo l’indirizzo IP del Router e premiamo su OK.

A questo punto ci viene chiesto di confermare la configurazione creata cliccando su Yes.

Nella schermata seguente PiVPN ci invita a selezionare l’utente che dovrà memorizzare le configurazioni OVPN. Per selezionare l’utente tra quelli proposti utilizziamo la barra spaziatrice e poi premiamo su OK.

Ci viene chiesto se vogliamo installare la VPN in formato WireGuard o OpenVPN. Selezioniamo WireGuard e premiamo Invio su OK.

Nella schermata che segue PiVPN ci mostra la porta predefinita con la quale negozieremo le nostre connessioni alla VPN, ovvero la porta 51820. Premiamo il tasto Invio e nella schermata successiva di riepilogo della porta di connessione scelta, selezioniamo Yes.

Nella nuova schermata ci viene chiesto che tipo di server DNS utilizzare per risolvere i nostri indirizzi all’interno della rete. Con la barra spaziatrice selezioniamo Google e premiamo su OK.

PiVPN ci pone la domanda se vogliamo utilizzare l’indirizzo IP pubblico per connetterci alla VPN oppure configurare un Public DNS come ad esempio NOIP. La scelta in questo caso dipende dal fatto se abbiamo o meno, a livello contrattuale con il nostro provider, la possibilità di usare un IP Statico oppure Dinamico. Nel mio caso avendo IP dinamico scelgo di utlizzare DNS Entry e premo su OK.

Nella schermata seguente inseriamo il nome del DNS pubblico del server, ad esempio wireguard.ddns.net confermiamo il ddns che abbiamo inserito premendo su Yes e confermiamo la generazione delle chiavi del Server premendo sempre su Invio

Nella schermata seguente PiVPN ci invita ad accettare di installare gli aggiornamenti. In questo caso selezioniamo Yes e premiamo su INVIO

L’installazione, a questo punto, è completata e pertanto premiamo su Invio e accettiamo di riavviare il raspberry Pi selezionado Yes e confermando con un Invio su OK.

Dopo il riavvio apriamo nuovamente putty indicando l’indirizzo IP statico scelto. Inseriamo le credenziali di accesso scelte in precedenza e siamo a questo punto pronti ad aggiungere i Client che potranno connettersi successivamente alla VPN che abbiamo configurato con WireGuard.

Per aggiungere un Client da terminale digitiamo:

sudo pivpn add

successivamente ci viene chiesto di inserire il nome del Client. Io consiglio di usare il proprio nome e premere Invio

Wireguard genera quindi la configurazione.

Tutte le configurazioni sono presenti all’interno della cartella configs. Pertanto digitiamo:

cd configs

digitiamo poi:

nano proprionome.conf (il file di configurazione generato precedentemente)

Si aprirà il file che si compone di 2 parti: Interface e Peer.

PER CREARE UN QR-CODE DI UN CERTIFICATO DI WIREGUARD DA IMPORTARE SUL DISPOSITIVO DA CUOI VOGLIAMO CONNETTERCI

Se si utilizza l’applicazione di WireGuard sul proprio smartphone o tablet per collegarsi in VPN, per generare il QR-Code del certificato è necessario aprire il terminale, inserire nome utente e password ed eseguire il comando:

pivpn -a

COME VISUALIZZARE LA LISTA DEI QR CODE DEI CERTIFICATI DI WIREGUARD

Per visualizzare la lista dei certificati WireGuard generati e far comparire il relativo QR-Code di configurazione è necessario aprire il terminale, inserire nome utente e password ed eseguire il comando:

pivpn -qr

Per poter far apparire a video il QR-Code di nostro interesse inseriamo il numero relativo al nominativo interessato.

COME ELIMINARE UN QR-CODE DI UN CERTIFICATO DI WIREGUARD

Per eliminare uno dei certificati di WireGuard creati è necessario aprire il terminale, inserire nome utente e password ed eseguire il comando:

pivpn -r

Digitare il numero relativo al certificato di WireGuard che si intende eliminare.