community italiana di domotica personale
 
Configurare una propria VPN su Home Assistant OS/Supervised tramite WireGuard

Configurare una propria VPN su Home Assistant OS/Supervised tramite WireGuard

Scopi della guida:
  • Definire un servizio di VPN (Virtual Private Network) sfruttando un add-on di Home Assistant OS/Supervised (“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:
GUIDA indicatA per UTENTI:

Ambiente Home Assistant HassOS-Supervised

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 2.0

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 un Mini PC con a bordo, in esecuzione, Home Assistant OS/Supervised (si tratta di uno dei più noti HUB personali per la domotica), è possibile sfruttare quest’ultimo per dotarsi  di tale servizio.

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 Home Assistant OS/Supervised “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 Raspberry Pi OS (Raspbian), la guida corretta da leggere non è la presente ma questa.

Si parte

Assunti

Si assume che la propria installazione HassOS 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 installare l’add-on, cliccare, presso il menu, la voce:

  • Configurazione” > “Componenti aggiuntivi”  e poi sul pulsante “Raccolta di componenti aggiuntivi“.

Si tratta di accedere ad una vera e propria “vetrina” di componenti aggiuntivi (gratuiti) che, proprio come mattoncini da costruzioni, andranno ad arricchire le funzionalità del nostro HUB.

Cercare dunque “Wireguard“; una volta trovato, cliccare su “INSTALLA“:

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 Home Assistant OS/Supervised (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.


⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

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. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.