Configurare la propria VPN su Home Assistant (HASSIO) tramite WireGuard

4 minuti di lettura
Scopi della guida:
  • Definire un servizio di VPN (Virtual Private Network) sfruttando un add-on di HASSIO (“WireGuard”) al fine di potersi collegare remotamente sulla propria rete locale domestica
  • Livello di difficoltà: basso
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
COMPONENTI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.1

Abstract

La possibilità di collegarsi alla rete domestica “come si fosse fisicamente a casa” – ovvero ottenendo un indirizzo IP privato assegnato tipicamente dal DHCP presente sulla rete stessa – è qualcosa di utile e realizzabile facilmente e in buona sicurezza.

Alcuni modem/router evoluti, come per esempio i noti Fritz!, sono dotati (oltre delle comuni funzioni) anche di un server VPN (Virtual Private Network) il quale consente di definire un “tunnel sicuro” dentro il quale far transitare, criptato, il traffico da e per la rete locale domestica: un meccanismo per l’appunto cosiddetto di tunnelling.

Qualora non si disponga di questa funzionalità ma piuttosto di un Raspberry Pi (o comunque di un computer) con a bordo, in esecuzione, Home Assistant in distribuzione HASSIO (si tratta di uno dei più noti HUB personali per la domotica), è possibile sfruttare quest’ultimo per dotarsi  di tale servizio (in caso si utilizzi un Raspberry Pi con sistema operativo Raspbian, la guida corretta è questa).

Attenzione però: questo tipo di configurazione (server) non è da confondersi con quella di un client VPN: 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).

Quello che faremo invece con questa guida è de facto promuovere il Raspberry Pi (o al computer in questione) a una sorta di “provider VPN” al quale però ci collegheremo noi e soltanto noi (gratis, ovviamente), in modo da trovarci virtualmente sulla nostra rete locale domestica come se fossimo a casa.

Ma perché dovrei collegarmi con la rete di casa tramite VPN?

Innanzitutto perché questo ci consente di non esporre troppi servizi/porte all’esterno utilizzando il port forwarding: mi serve infatti una sola porta esposta, quella del servizio VPN, dopodiché una volta connesso ho a disposizione tutti i servizi della mia rete (perché, per l’appunto, è come se fossi a casa).

WireGuard logo

In secondo luogo, tutte le trasmissioni sono crittografate, cosa che aumenta il grado di sicurezza laddove i servizi precedentemente esposti non prevedano tale grado di sicurezza (si pensi a certe IP Cam, per esempio, il quale traffico è tutto “in chiaro”).

In terzo luogo (ma si potrebbe andare avanti), è possibile contattare host presenti sulla rete locale che per motivi di sicurezza non siano stati esposti esternamente (si pensi per esempio a dei componenti domotici come del Sonoff con firmware modificato o a uno Shelly in modalità LAN, o altri).

Allo scopo utilizzeremo il collaudato l’add-on HASSIO “WireGuard“.

Ma… cambia qualcosa rispetto alla connessione remota verso Home Assistant? No: WireGuard viene “esposto” alla rete pubblica su una specifica porta; le precedenti implementazioni – quali siano – rimangono inalterate.

N.b. In caso si utilizzi un Raspberry Pi con sistema operativo Raspbian, la guida corretta da leggere non è la presente ma questa.

Si parte

Assunti

Si assume che la propria installazione HASSIO sia già raggiungibile remotamente, non tanto per la raggiungibilità in sé quanto per la definizione del proprio nome FQDN (eg. casamia.duckdns.org) con risoluzione dinamica dell’IP*.

*La configurazione proposta da questa guida ipotizza che l’utente stia usando DuckDNS. Non è un must: è possibile utilizzare un qualsiasi servizio DDNS e quindi un qualsiasi nome FQDN – basta che la risoluzione di tale nome sia sempre aggiornata con l’IP assegnato al modem di casa dall’operatore telefonico.

Installazione add-on WireGuard

Prima cosa da fare è installare l’add-on in questione.

Per farlo, recarsi presso “Supervisor” / “ADD-ON STORE” e cercare (e trovare) “Wireguard“; una volta trovato, cliccare su “INSTALL“:

Wireguard add-n HASSIO - Install

Terminata l’installazione non cliccare su “START” ma recarsi in basso nella pagina, alla voce “CONFIG“. Si dovrebbe trovare una configurazione di default analoga alla seguente:

server:
  host: myautomatedhome.duckdns.org
  addresses:
    - 172.27.66.1
  dns: []
peers:
  - name: hassio
    addresses:
      - 172.27.66.2
    allowed_ips: []
    client_allowed_ips: []

la configurazone è funzionante così com’è, avendo cura però di modificare il campo host inserendovi il proprio nome FQDN (eg. casamia.duckdns.org) al posto di myautomatedhome.duckdns.org.

WireGuard comunque permette molte, diverse personalizzazioni, dalla gamma di IP da assegnare al server e al client, utenti ed altro. Per provvedere alla propria configurazione personalizzata, seguire le indicazioni di dettaglio dell’add-on.

Una volta completata la configurazione, quale sia, cliccare su “SAVE” e avviare l’addon premendo “START” (in alto sulla pagina).

Port forwarding

Sebbene il nostro server VPN 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 51820 UDP tale traffico sia “girato” verso l’IP (fisso, of course) del computer che ospita HASSIO sulla sua porta 51820 UDP.

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

Uso

Terminata la configurazione del port forwarding 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.

A questo punto non serve che un client WireGuard per collegare il nostro computer/smartphone/tablet alla nostra rete tramite il tunnelling VPN così creato.

I client che consigliamo sono:

Per collegarsi utilizzando una delle applicazioni desktop elencate è necessario utilizzare il file di configurazione emesso in fase di configurazione/prima esecuzione dell’add-on, il quale si trova presso il percorso /ssl/wireguard/hassio/client.conf.

Analogamente, per collegarsi utilizzando una delle app mobili (per iOS e Android) elencate è necessario utilizzare il codice QR, il quale si trova presso il percorso /ssl/wireguard/hassio/qrcode.png.

QR Code

Basterà quindi scaricare il file di configurazione o immagine dal filesystem di HASSIO (con SFTP, Samba o con le tecniche che si credono) e importarlo sul client e voilà, ci troveremo collegati alla nostra rete locale. ATTENZIONE PERÒ: non distribuire a nessuno, per nessun motivo, questi file: rappresentano “le chiavi per accedere direttamente alla vostra rete domestica.



Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel