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:
- un inoltro della porta UDP scelta, dal router verso il dispositivo che esegue WireGuard, se non è il router stesso;
- 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.