⌘ Reti domestiche

WireGuard per entrare nella rete di casa da fuori, in sicurezza

Configurare WireGuard per raggiungere NAS e servizi di casa dall'esterno: chiavi, indirizzi, AllowedIPs, porta sul router, DNS e tunnel completo o diviso.

Esporre su Internet il pannello del NAS o della videosorveglianza per poterlo usare da fuori è una delle scelte più rischiose che si possano fare in una rete domestica. L'alternativa corretta è una VPN che porti il telefono o il portatile "dentro casa" in modo cifrato, lasciando chiuso tutto il resto. WireGuard è oggi la soluzione più semplice per farlo.

Perché WireGuard

WireGuard è un protocollo VPN moderno, con un codice compatto e una configurazione essenziale. Rispetto a soluzioni più vecchie ha alcune caratteristiche pratiche molto utili in casa:

  • usa una sola porta UDP, facile da inoltrare sul router;
  • non risponde a pacchetti non autenticati, quindi dall'esterno la porta sembra chiusa;
  • si riconnette in modo rapido quando il telefono passa da Wi-Fi a rete mobile;
  • è integrato nel kernel Linux e disponibile su tutti i sistemi principali, oltre che su molti router e firmware alternativi.

Gli elementi di una configurazione

Ogni partecipante, chiamato peer, ha una coppia di chiavi: una privata, che non lascia mai il dispositivo, e una pubblica, che si comunica all'altra parte. Non ci sono utenti e password: chi possiede la chiave privata giusta entra, gli altri no.

Lato casa, sul router o su un piccolo server sempre acceso:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <chiave privata del server>

[Peer]
PublicKey = <chiave pubblica del telefono>
AllowedIPs = 10.8.0.2/32

Lato telefono:

[Interface]
Address = 10.8.0.2/32
PrivateKey = <chiave privata del telefono>
DNS = 192.168.1.1

[Peer]
PublicKey = <chiave pubblica del server>
Endpoint = <indirizzo o nome pubblico di casa>:51820
AllowedIPs = 192.168.1.0/24, 10.8.0.0/24
PersistentKeepalive = 25

La porta 51820 è quella usata per convenzione, ma se ne può scegliere un'altra.

AllowedIPs: la voce che confonde tutti

AllowedIPs ha due significati a seconda del verso:

  • in uscita indica quali destinazioni passano nel tunnel;
  • in entrata indica quali indirizzi sorgente sono accettati da quel peer.

Sul server, 10.8.0.2/32 significa: da questo telefono accetto solo pacchetti con quell'indirizzo. Sul telefono, 192.168.1.0/24 significa: il traffico verso la rete di casa passa nel tunnel, tutto il resto esce normalmente.

Tunnel diviso o completo

Modalità AllowedIPs sul client Effetto
Tunnel diviso Rete di casa e rete VPN Solo il traffico verso casa passa nel tunnel
Tunnel completo 0.0.0.0/0, ::/0 Tutto il traffico esce da casa

Il tunnel diviso è più leggero ed è sufficiente per raggiungere il NAS. Il tunnel completo è utile su reti Wi-Fi pubbliche di cui non ti fidi, perché tutta la navigazione passa dalla connessione di casa, a costo di usare la sua banda in upload.

Il router di casa

Perché il telefono raggiunga il server dall'esterno servono due cose:

  1. un inoltro della porta UDP scelta, dal router verso il dispositivo che esegue WireGuard, se non è il router stesso;
  2. un indirizzo raggiungibile: un IP pubblico, fisso o gestito con un servizio di DNS dinamico.

Se il provider usa il CGNAT e non hai un IP pubblico, l'inoltro non funziona: serve un'altra strada, come un server intermedio o una rete overlay.

Se WireGuard gira su un dispositivo diverso dal router, quel dispositivo deve sapere come restituire i pacchetti ai client VPN. Le soluzioni più semplici sono abilitare il NAT sull'interfaccia del tunnel oppure aggiungere sul router una rotta statica verso la rete 10.8.0.0/24.

Buone pratiche

  • Un peer per dispositivo: telefono, portatile e tablet hanno ciascuno le proprie chiavi. Se perdi il telefono, rimuovi solo quel peer.
  • Il codice QR: molte app permettono di importare la configurazione inquadrando un QR generato sul server. È comodo, ma il QR contiene la chiave privata: va mostrato solo a schermo e non salvato in giro.
  • DNS interno: indicando nella configurazione il DNS di casa, i nomi locali funzionano anche da fuori.
  • Evita sovrapposizioni: se la rete di casa usa 192.168.1.0/24, la stessa numerazione di molti hotel e uffici, le rotte possono entrare in conflitto. Nel mio lavoro preferisco numerare la rete di casa con un intervallo meno comune.

In sintesi

  • WireGuard permette di raggiungere casa senza esporre i singoli servizi.
  • Ogni dispositivo ha le proprie chiavi; nessuna password da indovinare.
  • AllowedIPs decide cosa entra nel tunnel e cosa viene accettato.
  • Serve una porta UDP inoltrata e un indirizzo pubblico raggiungibile.
  • Scegli tra tunnel diviso e completo in base alla rete da cui ti colleghi.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche