Tailscale è una VPN zero-config basata sul protocollo WireGuard, progettata per collegare in modo sicuro dispositivi attraverso reti diverse come se fossero nella stessa rete locale (LAN).
Le sue caratteristiche principali:
- Ogni connessione è crittografata, garantendo la protezione dei dati durante il transito
- Opera in modalità mesh: a differenza dei tradizionali sistemi centralizzati, in cui un server dirige il traffico, in una rete mesh ogni dispositivo (nodo) comunica direttamente con gli altri in modalità peer-to-peer. Questo approccio riduce la latenza e migliora l’efficienza
- Gestisce automaticamente il NAT (Network Address Translation) e la configurazione di firewall, semplificando notevolmente le varie configurazioni
- Una volta che i dispositivi si connettono alla tailnet (la propria rete privata), Tailscale si occupa di instradare il traffico, garantendo che i dati raggiungano il destinatario corretto senza interventi manuali
Per maggiori informazioni, fare riferimento alla documentazione ufficiale
Installazione di un subnet routers #
Grazie ai Proxmox Helper-Scripts, possiamo installare Tailscale in maniera semplicissima.
Per prima cosa, dobbiamo creare un container LXC basato su Debian 12 sulla nostra infrastruttura PVE. Per maggiori dettagli, vedere gli articoli Come installare e configurare PVE e PBS utilizzando una connessione WiFi e Gestire il firewall di PVE.
Il container LXC agirà da subnet router
, ovvero da gateway, inoltrando il traffico della subnet 10.10.1.0/24
, consentendo così l’accesso via VPN a tutte le risorse della LAN.
Ora, come scritto nella documentazione, dal nodo PVE fisico dobbiamo lanciare il seguente script:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/add-tailscale-lxc.sh)"
Selezionare l’host su cui installare Tailscale e attendere il completamento del processo.
Configurazione del subnet routers #
Dal container LXC, seguendo la documentazione di Tailscale, abilitare l’IP forwarding:
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
Dopo aver abilitato l’IP forwarding sul dispositivo, eseguire il comando tailscale up --advertise-routes=10.10.1.0/24
.
L’opzione --advertise-routes
permette di specificare, tramite una lista separata da virgole, le subnet che il dispositivo renderà raggiungibili attraverso la tailnet. Il dispositivo, in altri termini, farà da gateway per quelle sottoreti, permettendo ai dispositivi della propria tailnet (la rete privata creata da Tailscale) di accedere alle risorse presenti in quella LAN.
Il comando tailscale
ha diversi altri parametri:
USAGE
tailscale [flags] <subcommand> [command flags]
SUBCOMMANDS
up Connect to Tailscale, logging in if needed
down Disconnect from Tailscale
set Change specified preferences
login Log in to a Tailscale account
logout Disconnect from Tailscale and expire current node key
switch Switch to a different Tailscale account
configure Configure the host to enable more Tailscale features
syspolicy Diagnose the MDM and system policy configuration
netcheck Print an analysis of local network conditions
ip Show Tailscale IP addresses
dns Diagnose the internal DNS forwarder
status Show state of tailscaled and its connections
metrics Show Tailscale metrics
ping Ping a host at the Tailscale layer, see how it routed
nc Connect to a port on a host, connected to stdin/stdout
ssh SSH to a Tailscale machine
funnel Serve content and local servers on the internet
serve Serve content and local servers on your tailnet
version Print Tailscale version
web Run a web server for controlling Tailscale
file Send or receive files
bugreport Print a shareable identifier to help diagnose issues
cert Get TLS certs
lock Manage tailnet lock
licenses Get open source license information
exit-node Show machines on your tailnet configured as exit nodes
update Update Tailscale to the latest/different version
whois Show the machine and user associated with a Tailscale IP (v4 or v6)
drive Share a directory with your tailnet
completion Shell tab-completion scripts
Abilitare la subnet dalla console di amministrazione #
Infine, dalla console di amministrazione, dobbiamo approvare la subnet:
- Aprire la pagina Machines nella console di amministrazione
- Selezionare il dispositivo con l’etichetta subnets, quindi navigare nella sezione Routing Settings
- Selezionare Edit per aprire le impostazioni di modifica delle rotte
- Spuntare le rotte da approvare
Tailscale sullo smartphone Android #
Possiamo installare Tailscale da Fdroid sullo smartphone e fare l’accesso col proprio account. Dopo aver attivato la VPN, se tutto é stato configurato nella maniera corretta, potremo accedere alle risorse della subnet che abbiamo approvato: