SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI: |
GUIDA maggiormente indicatA per: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.1 |
Abstract
Negli ultimi anni c’è stato un proliferare di servizi VPN a pagamento, i quali consentono da dentro la propria rete domestica (o comunque un qualsiasi host connesso a Internet) di navigare in modo anonimo attraverso tale servizio. In sostanza ci si collega (sempre con la filosofia del tunnelling) alla rete del provider VPN e da lì si naviga anonimizzati verso Internet (per questioni di estrema privacy o altro).
A prescindere dall’anonimizzazione di cui sopra, le motivazioni per collegarsi tramite VPN a una rete target possono essere le più disparate. Si immagini quindi la connessione VPN come un generico “tunnel” che ci consenta ci collegarci, tramite client, sulla rete dell’host che ospita la controparte server, quale che sia – magari lavorativa, oppure di un proprio sito remoto, magari una seconda casa o altro.
Esempi di VPN “target” possono essere:
- servizi a pagamento per navigare anonimizzati, per esempio:
- un modem/router che permetta di collegarsi alla sua rete locale e che offra servizio VPN (come per esempio i FRITZ!Box);
- un computer generico che abbia configurato il servizio VPN server (con debite configurazioni lato modem/router per far sì che il traffico VPN in arrivo da Internet gli possa essere recapitato sulla rete locale). Esempi di questo tipo di configurazioni da noi trattati sono:
- altro.
Il tema VPN è vastissimo (leggi approfondimento) e non è pensabile trattarlo in dettaglio; la presente guida si concentra sulla possibilità di far sì che un proprio Raspberry Pi dotato di sistema operativo Raspberry Pi OS possa collegarsi con una VPN remota basata su OpenVPN, un server/client gratuito Open Source.
Utilizzeremo, allo scopo, una versione di OpenVPN client concepita per Docker; spiegheremo quindi passo passo come realizzare questa connessione verso la rete target, ovviamente basata su OpenVPN server.
Si parte
Assunti
Come anticipato, assumeremo che la VPN alla quale andremo a collegare il nostro Raspberry sia basata su OpenVPN.
Ciò che ci servirà è:
- il file (con estensione .ovpn) contenente le chiavi dell’utente configurato lato server OpenVPN;
- la password relativa all’utente configurato lato server OpenVPN.
Questa informazioni, quindi, si reperiscono lato server.
Si assume altresì che il Raspberry Pi sia configurato (inclusa la possibilità di collegarvisi tramite SSH), collegato alla rete locale e, attraverso essa, a Internet.
Credenziali d’accesso
Innanzitutto è necessario configurare Raspberry in modo da accogliere le informazioni che poi OpenVPN Client utilizzerà per collegarsi a OpenVPN server, ovvero alla nostra VPN target.
Collegarsi dunque via SSH al proprio Raspberry ed eseguire i seguenti comandi:
mkdir openvpn
cd openvpn
Entrati all’interno della cartella, creare il file della password relativo all’utente che utilizzeremo per collegarci alla VPN target (da non confondersi con l’utente con cui ci si collega a Raspberry Pi, per dire). Se l’utente si chiamasse openvpn-client, il file contenente la password si chiamerebbe openvpn-client.pwd:
sudo nano openvpn-client.pwd
all’interno dell’editor che si aprirà, scrivere semplicemente la password e uscire salvando (CTRL-X, Y, invio).
Sempre rimanendo all’interno della cartella in cui ci troviamo, creare il file .ovpn sempre relativo all’utente che utilizzeremo per collegarci alla VPN target. Se l’utente si chiamasse openvpn-client, il file contenente la password si chiamerebbe openvpn-client.ovpn.
sudo nano openvpn-client.ovpn
Apertosi il client, copia-incollare il seguente testo:
pull-filter ignore "route-gateway" askpass /vpn/NOME_UTENTE.pwd ping-restart 10
avendo cura di personalizzare il nome dell’utente (se fosse openvpn-client, la seconda stringa diventerebbe askpass /vpn/openvpn-client.pwd).
Andare poi a capo e copia-incollare il contenuto del file .ovpn che si dovrebbe, come spiegato negli assunti, avere a disposizione. Attenzione che il contenuto del file .ovpn sia copiato per intero.
Uscire salvando (CTRL-X, Y, invio).

Installare Docker
Installare Docker su Raspberry Pi dotato di sistema operativo Raspberry Pi OS è piuttosto semplice, esiste una procedura completamente automatica e una manuale. Entrambe le procedure sono illustrate in dettaglio in questa breve guida.
Se si ha già provveduto all’installazione di Docker, va da sé che questo passaggio possa essere saltato.
ATTENZIONE: affinché i comandi a seguire funzionino, è necessario aver aggiunto Docker al gruppo sudoers, come spiegato in guida. |
Installare OpenVPN Client su Docker
Una volta dotati di un proprio FQDN è dunque il momento di installare (o meglio, “istanziarvi sopra”) OpenVPN Client.
Istanziamo dunque OpenVPN Client su Docker tramite il comando specifico al quale passeremo i seguenti argomenti:
- nome del container: openvpn;
- immagine del container: dperson/openvpn-client (è una delle tante disponibili: abbiamo scelto questa perché funziona bene);
- la directory “vpn” nella quale sono presenti le credenziali di cui sopra.
Eseguire quindi il comando:
docker run -it -d --cap-add=NET_ADMIN --name openvpn -v /home/pi/openvpn:/vpn --restart always dperson/openvpn-client
Al termine, verifichiamo che tutto sia andato per il verso giusto:
docker logs openvpn
in fondo al log dovremmo trovare qualcosa come:
1980-01-01 00:00:00 Initialization Sequence Completed
il che confermerà il funzionamento del tutto.
In pratica, il log ci sta dicendo che Raspberry si è effettivamente collegato alla nostra VPN target utilizzando le credenziali configurate su Raspberry in precedenza.
Se invece si ottiene un errore del tipo:
1980-01-01 00:00:00 Exiting due to fatal errors
allora c’è qualcosa che non va. Solitamente la riga precedente all’errore indica il motivo (e quindi concentrarsi su tale motivo, correggerlo e riavviare il container col comando di cui sopra.
Congratulazioni: OpenVPN Client è ora operativo.
Configurazione Docker Compose
Per coloro che utilizzino, per la gestione dei container, l’utile tool Docker Compose, la configurazione è la seguente:
openvpn:
image: dperson/openvpn-client
container_name: openvpn
cap_add:
- net_admin
network_mode: host
volumes:
- /home/pi/openvpn:/vpn
restart: always
Una volta salvato il file docker-compose.yaml, eseguire il comando:
docker compose up -d openvpn
il quale provvederà a istanziare il container.
N.b. In caso il comando “docker compose” dovesse dare errore, verificare di non aver installata la versione applicativa di Docker Compose anzichè la versione plug-in alla quale il comando sopra fa riferimento. In tal caso, adeguare il comando da “docker compose” a “docker-compose” (col trattino in mezzo). |
Uso
A questo punto l’uso che se ne fa è personale: come detto, le casistiche sono le più disparate. Ovviamente, avendo usato il parametro “restart: always“, il container Docker si avvierà sempre e in automatico: laddove ci si voglia collegare alla VPN in modo manuale, di consiglia il parametro configurato con “restart: unless-stopped“, amministrando l’avvio/spegnimento del container con:
docker container start openvpn
o
docker container stop openvpn
in base alle esigenze.
Una volta che il container sarà in esecuzione, la connessione verrà stabilita e il nostro host locale si collegherà sulla rete del server remoto OpenVPN.
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Se ti sei perso, a tua disposizione c'è la mappa. |