Accedere a una LAN da remoto con Tailscale

Una guida su come accedere alla propria LAN da remoto con Tailscale e un subnet routers.

  ·   4 min read

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

tailscale-nat

  • 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.

pve-tailscale-script

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

machine-pages

  • 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:

nginx-proxy

Riferimenti #