Come progettare una virtual private network “VPN” per la Domotica

Come usare una VPN per accedere al propri impianto Domotico

Sono tanti i post nei gruppi che hanno come tema la Domotica, in cui leggo richieste su come poter accedere ai propri dispositivi di domotica dall’esterno della rete LAN casalinga. Progettare una Virtual Private Network, configurando un Server VPN è la soluzione più robusta e supportata dalla maggior parte dei Client di cui disporrai; vediamo come fare in dettaglio.

Come per ogni cosa, non esiste una soluzione unica per tutti casi: che chi adotta un Servizio di DNS dinamico (come DynDNS) o chi, come me ad esempio, adotta la soluzione VPN (Virtual Private Netwrok) per poter raggiungere i propri dispositivi domotici sempre e dovunque, anche dall’ esterno.

Entrambe sono valide al raggiungimento dell’ obiettivo: collegarsi da remoto al proprio impianto domotico.

Valide si, ma solo trascurando un aspetto fondamentale: la sicurezza.

In questo articolo vi mostrerò in pochi passaggi come progettare un VPN e configurare il Server VPN, basandoci sul servizio OpenVPN.

Prima di iniziare

La guida, sebbene scritta in modo da arrivare a tutti, per essere portata a termine e ben compresa, richiede alcuni requisiti:

  • Uso della shell in ambienti Linux
  • Nozioni di base sulle configurazioni di rete
  • Pazienza! 🙂

La VPN per la domotica

Ad oggi i pacchetti VPN offerti dai providers sono davvero tanti. Vi siete mai chiesti se questi facciano al caso nostro? La risposta e’: No! I servizi VPN offerti da NorthVPN e simili, non vanno bene se pensati per questo scopo.

Ma allora (vi starete chiedendo): come deve funzionare la VPN per consentire l’accesso remoto all’ impianto domotico?

In questo caso la VPN deve essere pensata come lo strumento mediante il quale la nostra LAN domestica viene estesa mediante Internet, consentendo di includere anche i dispositivi che non risiedono direttamente in casa (ad esempio lo smartphone quando siamo in giro, il PC dell’ ufficio, un tablet).

Per spiegarvi meglio, diamo un’occhiata allo schema:

Schema di una VPN per uso domotica
Schema di una VPN applicata ad un impianto domotico o IOT distribuito

Immaginiamo quindi di avere un impianto Domotico a casa ed uno in ufficio. Sarebbe utilissimo avere il controllo remoto, quindi intervenire da Casa per comandare i dispositivi presenti in Ufficio o viceversa. Ma anche comoda è la possibilità di comandare tutti i dispositivi da uno Smartphone. In Casa e Ufficio abbiamo un sottogruppo di dispositivi IOT, non importa quali, l’importante è che siano gestibili via rete.

Come accennato inizialmente, i nodi potrebbero colloquiare anche usando gli IP pubblici assegnati dagli ISP e un appropriato port-forwarding, ma resterebbe ingestito il fattore sicurezza: esporre al traffico l’accesso ai propri dispositivi potrebbe comportare gravi violazioni.

La configurazione dell’accesso ai Nodi mediante VPN, invece, si basa sull’adozione di una subnet di rete privata: ad ogni nodo aggiunto alla VPN verrà assegnato un IP (ad esempio 10.8.0.2, 10.8.0.120 o 10.8.0.250) mediante il quale sarà possibile essere raggiunto dagli altri Nodi che compongono la VPN. L’accesso alla VPN viene gestito da un Server e prevede la creazione di Certificati protetti da password: anche se il Server VPN sarà esposto pubblicamente, l’accesso ai Nodi sarà garantito solo grazie ai Certificati e all’ Autenticazione.

Riferendomi all’immagine qui sopra, immaginiamo di avere i dispositivi Casa A (web server porta 80) , Ufficio B (server mqtt porta 1883), e Smartphone Android. Una volta aggiunti alla VPN, otterremo gli IP “privati”:

  • Casa => Dispositivo A – IP VPN 10.8.0.8
  • Ufficio => Dispositivo B – IP VPN 10.8.0.6
  • Smartphone => IP VPN 10.8.0.10

A questo punto, il Dispositivo A potrà raggiungere il Dispositivo B mediante l’IP 10.8.0.6 e viceversa, il Dispositivo B potrà raggiungere il Dispositivo A mediante l’IP 10.8.0.8. A sua volta, lo smartphone potrà raggiungere entrambe i dispositivi mediante i loro IP privati e viceversa. Come notate, la gestione dei dispositivi diventa completamente indipendente dalla posizione fisica. Il tutto è assimilabile ad una LAN estesa, come se aggiungessimo un cavo virtuale tra i dispositivi.

Cosa serve per configurare una VPN

A prescindere dai componenti fisici, la creazione di una VPN custom si suddivide in queste fasi:

  1. Configurazione del Server OpenVPN
  2. Esporre il Server VPN ad Internet
  3. Creazione dei certificati Client
  4. Definizione dell’assegnazione statica degli IP ai client
  5. Installazione e configurazione del Client
  6. Accesso alla VPN e Test di connessione

Scendendo invece nel dettaglio “hardware”, potremmo elencare tantissime soluzioni. Per praticità possiamo suddividerle in:

  • Server VPN dislocato in casa
  • Server VPN in cloud

Per il primo gruppo, la soluzione migliore è configurare il server OpenVPN un Raspberry Pi: bassi consumi e ottime prestazioni, consentono senza problemi la gestione della VPN. I contro? Bhe, se vi va giù la connessione Internet, andrà giù tutta la rete VPN, anche quella relativa ai dispositivi esterni alla connessione Internet.

Configurare OpenVPN un server Cloud, ad esempio una Virtual Machine, è sicuramente più oneroso (i canoni medi si aggirano tra i 3 e i 20 Euro/mese), ma vi apre scenari molto più interessanti. Pensate che oltre che per la VPN, potreste usare il server per il backup delle configurazioni o per farvi un sistema di monitoraggio esterno. Un server nel cloud vi da modo di realizzare tante idee. Seguitemi, magari ve ne mostrerò qualcuna interessate 🙂

A questo punto non mi resta che mostrarvi come fare. Inizialmente avevo pensato ad un unico tutorial ma, vista la lunghezza di questo articolo, ho deciso di dividere in due il tutorial:

Creare una VPN usando Open VPN ed Raspberry PI

Ti ho preparato una guida chiara per l’installazione e la configurazione di OpenVPN su Raspberry PI.

Raspberry PI + Open VPN: Guida alla configurazione [in italiano]

Creare una VPN usando openvpn ed una virtual machine cloud (coming soon)

 

Lascia un commento

Il tuo indirizzo email non sarĂ  pubblicato.