Creare Server VPN con Raspberry

Creare un server VPN con Raspberry Pi 4

Installiamo un server VPN con Raspberry in modo da avere una rete privata in casa e possibilità di raggiungere in qualsiasi momento e da qualsiasi posizione i tuoi dispositivi di rete usati, ad esempio, per la domotica.

Vediamo in dettaglio come puoi installare e configurare OpenVPN su un Raspberry PI, creando così la tua rete VPN domestica.

Nota: Occorre avere un Raspberry Pi 4 con Raspbian OS già installato e una connessione internet.

Se non hai ancora installato il sistema operativo della tua scheda puoi farlo con Raspberry Pi Imager.

Configurare IP Statico in Raspberry

Il primo passaggio per creare un server VPN con Raspberry è quello si assegnare un indirizzo IP statico in modo che non venga variato ad ogni riavvio o accensione del dispositivo.

Il file da modificare è:  /etc/dhcpcd.conf , dal terminale è sufficiente lanciare il comando:

sudo nano /etc/dhcpcd.conf

Scorrete il file fino all’ ultima riga e aggiungete  le seguenti configurazioni:

interface <interfaccia>
static ip_address=<ip da assegnare>/<subnet>
static routers=<ip del router>
static domain_name_servers=<server DNS>

Ecco un esempio di configurazione per l’interfaccia Ethernet con i DNS di Cloudflare:

interface eth0
static ip_address=192.168.1.55/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1

Per configurare l’interfaccia WiFi è sufficiente modificare la voce interface:

interface wlan0
static ip_address=192.168.1.55/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1

Per rendere effettive le modifiche salviamo il file (ctrl+x) e riavviamo il Raspberry.

Aggiornare Raspbian

Prima di ogni altro comando, è consigliabile procedere ad aggiornare eventuali pacchetti di Raspbian, per farlo puoi usare questi comandi:

sudo apt-get update
sudo apt-get upgrade

Server VPN con Raspberry con OpenVPN

In primis è necessario installare OpenVPN sul sistema operativo del Raspberry Pi, Raspbian.
Per farlo è necessario eseguire un comando via terminale (da CLI, via SSH oppure con control-alt-t da interfaccia desktop):

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

Tale comando scarica ed esegue l’ultima versione del tool PiVPN, strumento che utilizzeremo per installare e configurare OpenVPN.

Dopo aver eseguito il comando apparirà una schermata con scritto:

This installer will trasform you Raspberry Pi into an OpneVPN or WireGuard Server

Premere invio per iniziare la configurazione di un server VPN con Raspberry.

Una volta eseguito lo script, vi verrà presentata una serie di suggerimenti. Per la maggior parte, seguire le impostazioni predefinite dovrebbe andare bene, ma non vi farà male leggere attentamente tutte le schermate mentre le state seguendo.

Una volta che lo script ha raccolto da voi le informazioni di cui ha bisogno, ritornerà alla riga di comando. Questo può richiedere da quaranta minuti a diverse ore, quindi siate pronti ad aspettare un po’ di tempo.

Lo script vi informerà quando è finito e vi chiederà se volete riavviare. Questo non è strettamente necessario, ma non può far male.

Step configurazione server VPN con Raspberry:

  • PiVPN domanderà innanzitutto se l’indirizzo IP del Raspberry sia prefissato via DHCP  oppure si debba indicare un IP Statico. Premiamo OK e andiamo avanti.
  • il programma ci mostrerà la configurazione corrente del nostro raspberry e se non vogliamo cambiare interfaccia puntando all’altro indirizzo selezioniamo: Yes.
  • verrà chiesto ora di accettare e scegliere l’utente locale con il quale si potranno configurare gli accessi e gli utenti VPN.
  • scegliamo l’utente pi, per selezionare un utente diverso possiamo spostarci con le frecce selezionare con la barra spaziatrice e poi il tasto tab per spostarci sull’OK.
  • una volta selezionato ci verrà chiesto se attivare o meno gli aggiornamenti automatici, su questo punto vi lascio decidere in autonomia.
  • nella schermata successiva selezioniamo il protocollo UDP
  • poi la porta che intendiamo utilizzare per la connessione VPN, che dovrà poi essere la porta che apriremo sul router e nattata verso l’IP statico del nostro Raspberry che nel nostro caso è 192.168.1.55
  • Confermiamo la porta 1194
  • Verrà ora chiesto il livello di encryption (il numero di bit per la il certificato da utilizzare). 4096 è il livello massimo, 1024 il minimo, impostiamo 2048.
  • Generiamo le chiavi univoche del sistema, potrebbe richiedere molto tempo in base alla prestazione del PI.
  • A questo punto ci verrà chiesto in che modo raggiungere il server VPN, se sfruttando direttamente l’IP pubblico assegnato al modem dal nostro gestore o DNS Entry e, di conseguenza, valutare di utilizzare un servizio DDNS. A voi la scelta in questo caso, se impostate DNS Entry è possibile utilizzare DuckDNS aggiornato direttamente da Raspberry
  • Successivamente bisogna scegliere a quale DNS appoggiarsi, io preferisco Cloudflare voi potete scegliere tranquillamente quello che più vi è “simpatico”.
  • Ultima schermata prima del riavvio, selezionate no per la ricerca nel vostro dominio, in alternativa potreste indicare il dominio della vostra rete lan per consentire di risolvere più rapidamente i nomi interni alla LAN
  • Il Raspberry Pi verrà riavviato e l’installazione sarà stata completata

per gli utenti meno esperti è possibile seguire le indicazioni che ho trovato utili per creare un server VPN con Raspberry in questo video:

Creare Server VPN con Raspberry Pi 4

Creazione dell’utenza d’accesso

Per terminare la configurazione di un server VPN con Raspberry occorre creare la propria utenza d’accesso VPN.
Per farlo, eseguire il seguente comando:

pivpn add

Il sistema chiederà il nome dell’utente da creare (“Enter a Name for the Client“), la durata del certificato (“How many days should the certificate last?“, lasciare 1080), dopodiché la password scelta (due volte).

L’output dopo questo ultimo passo sarà pressappoco il seguente:

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating an EC private key
writing new private key to '/etc/openvpn/easy-rsa/pki/private/user1.key.BgIhj5Dzz1'
Enter PEM pass phrase:xxxxxx

Verifying - Enter PEM pass phrase:xxxxxx

-----
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'xxxxx'
Certificate is to be certified until Jan 24 21:43:31 2023 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated
Client's cert found: xxxxx.crt
Client's Private Key found: xxxxx.key
CA public Key found: ca.crt
tls Private Key found: ta.key

========================================================
Done! user1.ovpn successfully created! 
user1.ovpn was copied to:
  /ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================

Port forwarding

Sebbene il nostro server VPN con Raspberry sia essenzialmente pronto, manca ancora un passo fondamentale per poterlo contattare dall’esterno: il port forwarding è infatti necessario indicare al modem che, a fronte di una chiamata dall’esterno sulla porta 1194 UDP (o TCP, se prima si è scelto questo protocollo) tale traffico sia “girato” verso l’IP (fisso, of course) del Raspberry sulla sua porta 1194 UDP (o TCP).

Per far questo bisogna agire sul proprio modem; in ogni modem ovviamente questa procedura è variabile.

I client consigliati sono:

Per collegarsi utilizzando uno dei client elencati (o uno comunque compatibile con OpenVPN) è necessario utilizzare il certificato emesso in fase di creazione dell’utenza, il quale si trova presso il percorso /home/pi/ovpns (con nome NOMEUTENTE.opvn). Basterà scaricarlo dal Raspberry e importarlo sul client: all’atto della richiesta di connessione sarà poi necessario inserire la password dell’utente precedentemente creato e voilà, ci troveremo collegati alla nostra rete locale.

Conclusione

Abbiamo creato il nostro server VPN con Raspberry ed abbiamo tutti gli elementi che ci servono:

  • un FQDN che, quando risolto, ritorna l’IP WAN del modem;
  • un port forwarding che gira le chiamate dall’esterno all’interno;
  • un server VPN;
  • credenziali per accedervi.

Creare un server VPN con Raspberry non è semplicissimo ma se hai problemi puoi scrivermi nei commenti.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003