Come Configurare in Modo Semplice una VPN su Raspberry Pi

Angelo Sorbello

Non dappertutto c'è una connessione Internet sicura e in particolare le reti pubbliche sono adatte solo in parte a una navigazione senza pensieri. Allora perché non portare con te la rete domestica ovunque tu vada? Con una connessione VPN è possibile. Un metodo particolarmente pratico per impostare una connessione VPN sicura a casa è utilizzare Raspberry Pi come server VPN. Di seguito ti spieghiamo come farlo.

Un Raspberry Pi è un mini computer senza involucro a basso costo. Gli smanettoni usano questo tipo di dispositivo poco costoso per sperimentare, così se qualcosa va storto, il danno non è particolarmente grande. Configurando il tuo Raspberry Pi come server VPN domestico, puoi accedere alla tua rete di casa anche da reti molto distanti tramite un tunnel VPN sicuro per navigare sul Web e accedere alle tue applicazioni senza rischi.

Vantaggi di un Raspberry Pi Come Server VPN con OpenVPN

Il principale vantaggio del Raspberry Pi è sicuramente il suo prezzo contenuto. Rispetto a un computer Linux completo come server VPN, non solo i costi iniziali, ma anche i costi di gestione sono significativamente inferiori. Infatti il dispositivo può rimanere connesso alla rete senza raffreddamento con un basso consumo energetico e quindi mantenere attivo il tunnel VPN tutto il giorno.

Un altro grande vantaggio è che con OpenVPN hai accesso a un software per server VPN completamente gratuito, che supporta un gran numero di sistemi operativi come Windows, MacOS, Android, iOS o Linux

La struttura semplice del mini-computer rende la configurazione relativamente facile e garantisce che il server VPN sia stabile e potrai quindi farci affidamento al 100%.

Preparazione per la Configurazione

Cosa ti serve:

  1. Un Raspberry Pi (idealmente un modello a partire dal 2 o più recente)
  2. Una scheda di memoria micro SD su cui è installato Raspbian-Jessie come sistema operativo.
  3. Una connessione Internet permanente tramite cavo di rete (o WiFi) al Raspberry Pi
  4. Una connessione micro USB alla fonte di alimentazione

Dovresti anche considerare se vuoi collegare un monitor, un mouse e una tastiera direttamente al Raspberry Pi o preferisci accedere al dispositivo tramite SSH. In linea di massima usare una SSH ha più senso, in questo modo, infatti, puoi accedere facilmente al Raspberry Pi dal tuo computer utilizzando strumenti come PuttY, WinSCP o OpenSSH.

Per poter accedere al tuo Raspberry Pi tramite SSH, ti basta conoscere l'indirizzo IPv4 del dispositivo. Puoi verificarlo tramite il router quando il Raspberry Pi è connesso alla rete.

Modificare gli indirizzi IP

Se vuoi accedere al server VPN tramite SSH, ha senso assegnare al server un indirizzo IP statico tramite il quale potrai poi sempre raggiungerlo in seguito. Anche per OpenVPN è importante che il server abbia un indirizzo IP locale statico nella tua rete.

Ovviamente, il server VPN dovrebbe essere sempre accessibile allo stesso indirizzo su Internet se si desidera accedervi dall'esterno. La maggior parte dei provider, tuttavia, assegna un nuovo indirizzo IP dinamico al router ogni 24 ore, quindi dovrai utilizzare anche un servizio di DNS dinamico (DDNS - dynamic domain name system).

Ecco come fare:

  1. Assegnare al server VPN un IP statico nella LAN
    Nell'area amministratore del router è possibile assegnare al Raspberry Pi un indirizzo IPv4 statico, basato sull'indirizzo MAC.
  2. Port forwarding sul router
    Tramite il port forwarding l'indirizzo IP locale statico viene reso accessibile dall'esterno. Solitamente per OpenVPN viene utilizzata la porta 1194. Ad esempio, se il Raspberry Pi nella LAN ha l'IP 192.168.1.10, tutto il traffico UDP sul router deve essere inoltrato tramite la porta 1194 alla stessa porta del Raspberry Pi.
  3. Assegnare un host name tramite il servizio DNS
    Se desideri accedere alla tua rete dall'esterno, dovrai configurare un servizio DNS dinamico, infatti il tuo provider molto probabilmente modifica il tuo indirizzo IP ogni 24 ore. Se necessario, in alternativa, puoi richiedere la possibilità di ricevere un indirizzo IP statico. Altrimenti dovresti usare un servizio come No-IP, che è supportato dalla maggior parte dei router e che fornisce un host name fisso che viene inoltrato automaticamente al nuovo indirizzo IP quando l'indirizzo IP del router viene aggiornato. Sul sito del servizio puoi trovare le informazioni su come installare NO-IP.

Aggiornare Raspberry Pi

Prima di iniziare l'installazione di OpenVPN o Pi VPN, vanno eseguiti tutti gli aggiornamenti disponibili per il sistema operativo. Puoi farlo con i seguenti comandi:

Modificare nome utente e password

Ti consigliamo per sicurezza di modificare la password e il nome utente standard del tuo Raspberry Pi ("Pi" e "Raspberry"). Puoi farlo sia localmente che tramite SSH con il seguente comando:

2 Opzioni: PiVPN vs. OpenVPN

OpenVPN è la soluzione VPN più popolare per sistemi Linux e di conseguenza anche per Raspberry Pi. Il programma non solo è molto sicuro, ma è anche open source e quindi completamente gratuito. Poiché la configurazione a volte può risultare difficile, soprattutto per i principianti, a causa della riga di comando basata su testo, esiste un'opzione notevolmente semplificata che è PiVPN.

Opzione 1: Configurare un Server VPN con PiVPN

Poiché PiVPN è basato su OpenVPN, è compatibile con gli stessi sistemi operativi, comprese le più recenti distribuzioni Linux come Raspbian, Debian o Ubuntu.

Passaggio 1: installare Pi VPN

Poiché si tratta di un bash script, non c’è bisogno di scaricare PiVPN e installarlo come si farebbe con un normale software. Basta invece inserire questi comandi nella riga di comando:

Passaggio 2: configurare PiVPN

All'avvio di PiVPN, riceverai un messaggio che indica che è necessario utilizzare un indirizzo IP statico. Se hai già assegnato un indirizzo IP statico sul router, come consigliato, puoi saltare questo punto.

È quindi necessario impostare un account utente locale in cui è memorizzata la configurazione del servizio OpenVPN. Qui puoi selezionare il tuo nome utente e attivare gli aggiornamenti automatici nel passaggio successivo ("unattended upgrades").

Nella finestra di dialogo seguente, seleziona UDP come protocollo VPN e lascia il numero di porta suggerito su 1194, questo ovviamente se hai impostato questa porta per il port forwarding anche sul tuo router (come suggerito).

È possibile impostare la lunghezza della chiave su 2048 bit, lunghezza assolutamente sufficiente per un buon standard di sicurezza. La creazione della chiave può richiedere del tempo, a seconda del modello del Raspberry Pi.

Nel prossimo passaggio ti verrà richiesto se il server VPN è raggiungibile tramite indirizzo IP statico o tramite Hostname ("DNS Entry"). Se hai installato un servizio DNS come NO-IP sul router, inserisci l'Hostname corrispondente.

Dopo il riavvio, la configurazione iniziale è completata.

Passaggio 3: aggiungere e rimuovere client di rete

L'impostazione delle configurazioni del client è molto semplice con PiVPN. Tutto quello che devi fare è inserire quanto segue nella riga di comando:

Ti verranno richiesti il nome utente e una password. Il file di configurazione finito viene quindi chiamato "[Client].ovpn" e salvato nella cartella "~ / ovpns".

Nel client tramite il quale si desidera accedere al server VPN, ti servirà solo questo file, infatti tutte le chiavi e il certificato server sono già contenuti nel file. Quindi puoi facilmente importarli in qualsiasi client OpenVPN.

I client possono essere facilmente rimossi con il seguente comando:

Opzione 2: Configurare un Server VPN con OpenVPN

Se hai un po' più di esperienza con Linux e desideri più libertà nella configurazione e gestione del server VPN, puoi, in alternativa, installare OpenVPN direttamente su Rasberry Pi.

Le nostre istruzioni passo per passo partono dal presupposto che venga utilizzata l'ultima versione di Raspbian. Se segui tutti i passaggi, la configurazione di un server OpenVPN sul tuo Pi non è problematica, anche senza conoscenze pregresse.

Passaggio 1: installare OpenVPN e creare un file .rsa

Il software in sé e il protocollo di sicurezza OpenSSL, possono essere installati utilizzando il seguente comando:

Dopo aver installato OpenVPN, è necessario copiare gli script easy-RSA nella directory di configurazione corrispondente. Puoi farlo con il seguente comando:

In seguito devi aprire il file "vars" nella relativa cartella e modificarlo.

La riga export EASY_RSA = "'pwd' " deve essere sostituita dalla seguente riga:

Inoltre qui puoi anche modificare la lunghezza della chiave. Per evitare problemi di prestazioni, su Raspberry PI 3 è meglio scegliere una lunghezza della chiave di 2048 bit. Con il modello 2, già questa porta a problemi di prestazioni, per cui puoi sacrificare un po' di sicurezza a favore di prestazioni migliori con una lunghezza della chiave di 1024. Per cambiare la crittografia devi solo cambiare il valore nella riga "export KEY_SIZE = " con 2048 o 1024.

A questo punto puoi tornare alla directory di configurazione easy-RSA e avviare le impostazioni con i permessi di root eseguendo lo script vars. Infine, il file di configurazione viene reso accessibile tramite un link simbolico. Puoi fare tutto ciò eseguendo i seguenti comandi:

Passaggio 2: creare i certificati

I keyfile per OpenVPN verranno modificati e quindi ricreati. Come Paese immettere IT per Italia. Puoi accettare tutte le altre richieste.

Ora i keyfile possono essere generati con il seguente comando:

Passaggio 3: configurare il client VPN

È necessario configurare un client per ogni dispositivo da cui si desidera accedere al server VPN. Ogni client necessita di un certificato e della sua chiave. Anche qui devi inserire il codice Paese durante la creazione e assegnare un nome al client. Nel nostro esempio abbiamo chiamato il client "desktop-pc"

In alternativa, puoi usare il comando build-key-pass invece di build-key per impostare una password per il client.

A questo punto puoi ultimare la creazione dei certificati e delle chiavi con il seguente comando:

Infine, disconnettiti dall'utente root utilizzando il comando exit.

Passaggio 4: generare il file di configurazione

Il file di configurazione di OpenVPN può essere generato con il seguente comando:

A questo file di configurazione, è necessario fare delle aggiunte che spiegheremo brevemente di seguito. Assicurati che sia selezionato UDP come protocollo, e che il routing venga attivato tramite IP tunnel e che sia specificata la porta (standard 1194).

Il root certificate (ca) SSL / TSL, il certificato digitale (cert) e la chiave (key) devono essere creati tramite la directory easy-RSA. Assicurati di inserire la crittografia corretta (1024 o 2048).

Utilizza il comando server 192.168.2.100 255.255.255.0 per impostare che Raspberry Pi debba essere utilizzato come server VPN. Con redirect-gateway def1 bypass-dhcp il traffico viene ridiretto attraverso l'IP tunnel.

Infine, scegli il server DNS pubblico che verrà utilizzato dal server VPN. Ad esempio, 8.8.8.8 è un server DNS pubblico di Google. Naturalmente, è possibile utilizzare anche indirizzi IPv4 di un altro server DNS. In questo caso le informazioni di log vengono scritte nel file openvpn.

Infine, aggiungi ulteriori parametri come persist-key in modo che i keyfiles non vengano letti di nuovo. persist-tun assicura, invece, che i driver non vengano riavviati. Utilizzando user nobody e group nogroup vengono ridotti i permessi del demone e con verb si determina l'eseguibilità del file di log. Con l'aggiunta di 0, oltre ai messaggi di errore, non vengono salvate ulteriori informazioni nel file di log. Noi consigliamo 3 come valore. Il parametro client-to-client, permette che anche altri client VPN vengano riconosciuti, con comp-lzo si attiva anche la compressione LZO.

Il file config dovrebbe ora apparire così:

Puoi salvarlo con Ctrl + O e uscire dall'editor con Ctrl + X.

Passaggio 5: creare uno script per l'accesso a Internet

Per poter accedere alla rete domestica tramite il tunnel VPN, è necessario impostare un percorso corrispondente. Per fare ciò, per prima cosa crea il file rpivpn con il seguente comando:

In questo file puoi aggiungere commenti che servono da header per l'init script di Linux. Inoltre, puoi attivare ip_forward, crea iptables come filtro dei pacchetti per il forwarding e concedi l'accesso alla LAN e Internet. Il file dovrebbe quindi apparire così:

Salva e chiudi il file con Ctrl + O e Ctrl + X.

Infine, concedi i permessi allo script, puoi farlo con il seguente comando:

Ora puoi eseguire lo script e quindi riavviare il server.

Passaggio 6: completare la configurazione del client

È quasi fatta. Per finire, devi solo raggruppare i certificati e le chiavi dei client (se ne sono stati creati più d'uno) e prepararli per l'esportazione. Per fare ciò, loggati di nuovo come utente root e richiama il file client che desideri modificare. Noi scegliamo di nuovo il nostro client di esempio "desktop-pc".

Ora aggiungi nella riga 4 di questo file le informazioni sul tuo provider DNS oppure inserisci il tuo indirizzo IP statico (nell'esempio 10.10.10.10) e inserisci nelle righe 10 e 11 il nome del client. Infine salva e chiudi l'editor con Ctrl + O e Ctrl + X. Il file dovrebbe apparire così:

Infine, raggruppa il file di configurazione con i certificati e le chiavi in un file ZIP (se non hai ancora installato un pacchetto zip, puoi farlo facilmente tramite apt-get install zip).

Quindi regola i permessi del file con chown pi: pi /home/pi/raspberry_desktop-pc.zip e termina l'installazione con exit. Puoi ora trasferire il file zip creato sul PC utilizzando il software SCP o SFTP.

A questo punto è tutto fatto e puoi accedere alla tua rete locale da qualsiasi dispositivo tramite il server Raspberry Pi OpenVPN.

Autore: Angelo Sorbello
Angelo Sorbello, si è laureato in Economia e Management presso l'Università Bocconi di Milano. E' il co-fondatore di DIGITALE.co insieme ad altre attività online. La sua prima azienda, che ha fondato a soli 13 anni, è stata acquisita nel 2013. E' stato consulente per multinazionali e PMI in oltre 9 paesi.
Altre lingue:
English Deutsch