Immagina di avere cinque, dieci, venti server sparsi per il mondo. Ognuno con il suo IP pubblico, ognuno con la porta 22 aperta, ognuno con il suo set di chiavi SSH da gestire. Ogni volta che cambi laptop devi ridistribuire le chiavi. Ogni volta che un provider ti cambia IP devi aggiornare i firewall di tutti gli altri server. Ogni volta che vuoi aggiungere una macchina alla tua infrastruttura è un balletto di configurazioni che ti fa venire voglia di mollare tutto e aprire un agriturismo.
Tailscale è nato esattamente per risolvere questo casino. È un software che crea una rete privata virtuale — una VPN, ma non nel senso triste del termine che ti fa pensare a NordVPN e alle pubblicità degli youtuber. È una mesh network costruita sopra WireGuard, il protocollo VPN più moderno e performante in circolazione. Ogni macchina su cui installi Tailscale diventa un nodo della tua rete privata, e tutti i nodi possono parlare direttamente tra loro, ovunque si trovino nel mondo, come se fossero sulla stessa LAN.
La parola chiave qui è "mesh". Non c'è un server centrale che fa da collo di bottiglia — ogni nodo stabilisce connessioni dirette peer-to-peer con gli altri nodi. Il traffico non passa per un datacenter di Tailscale: va diretto da macchina a macchina, crittografato con WireGuard. Il coordination server di Tailscale serve solo per lo scambio iniziale delle chiavi e per il NAT traversal, poi si fa da parte.
Per capire Tailscale bisogna capire WireGuard, almeno a grandi linee. WireGuard è un protocollo VPN che vive nel kernel Linux dal 2020. È ridicolmente semplice rispetto ai suoi predecessori: circa 4.000 righe di codice contro le 600.000 di OpenVPN. Meno codice significa meno superficie d'attacco, meno bug, prestazioni migliori. Linus Torvalds stesso lo ha definito "un'opera d'arte" quando lo ha integrato nel kernel.
WireGuard usa crittografia moderna — Curve25519 per lo scambio chiavi, ChaCha20 per la cifratura simmetrica, Poly1305 per l'autenticazione. Non c'è negoziazione di cipher suite come in TLS o IPsec: usa un set fisso di primitive crittografiche moderne e basta. Se un giorno uno di questi algoritmi si rivelasse vulnerabile, si aggiorna WireGuard e si cambia. Niente backward compatibility con roba vecchia e rotta.
Il problema di WireGuard usato da solo è che richiede configurazione manuale. Devi generare le chiavi, distribuirle, configurare gli endpoint, gestire il routing. È potente ma grezzo. Tailscale è esattamente il layer di management che manca a WireGuard: prende tutta quella complessità e la nasconde dietro un singolo comando.
L'installazione è disarmante nella sua semplicità. Su un server Linux Debian esegui uno script che aggiunge il repository di Tailscale al tuo package manager, poi installi il pacchetto, poi esegui tailscale up. Ti viene dato un link da aprire nel browser per autenticarti — colleghi la macchina al tuo account Tailscale e il gioco è fatto. La macchina è nella tua tailnet, la tua rete privata.
Ogni macchina nella tailnet riceve un IP stabile nella subnet 100.x.y.z. Questo IP non cambia mai, indipendentemente da dove si trova fisicamente la macchina, da quale ISP usa, da quale IP pubblico ha. Se il tuo server Hetzner cambia datacenter, il suo IP Tailscale resta lo stesso. Se il tuo laptop passa dal WiFi di casa all'hotspot del telefono, il suo IP Tailscale resta lo stesso. È come avere un DNS privato che non si rompe mai.
La magia del NAT traversal è forse la cosa più impressionante. La maggior parte delle macchine oggi è dietro un NAT — il tuo laptop a casa, il tuo telefono, anche molti server cloud. WireGuard di per sé non sa attraversare i NAT. Tailscale usa una combinazione di tecniche — STUN, hole punching, e come ultima risorsa relay attraverso i loro server DERP — per stabilire connessioni dirette anche attraverso i NAT più ostici. Nella maggior parte dei casi riesce a fare hole punching e il traffico va diretto, senza relay.
Questa è probabilmente la feature più rilevante per chi gestisce server. Tailscale può prendere completamente in carico l'autenticazione e l'autorizzazione SSH, eliminando la necessità di gestire chiavi SSH tradizionali.
Quando abiliti Tailscale SSH su un server con tailscale set --ssh, succede qualcosa di interessante: Tailscale intercetta il traffico sulla porta 22 proveniente dalla tailnet e lo gestisce lui. L'autenticazione non avviene più tramite chiavi SSH ma tramite l'identità Tailscale del client — che a sua volta è legata al tuo account (Google, Microsoft, GitHub, o qualunque identity provider tu usi).
Le Access Control List sono il cuore del sistema. Nel pannello admin di Tailscale definisci regole in JSON che specificano chi può fare SSH su quali macchine e con quali utenti. Per esempio puoi dire: "l'utente giobi@gmail.com può fare SSH come root su tutte le macchine taggate prod". Oppure: "qualsiasi membro del mio account può fare SSH come utente non-root sulle proprie macchine". Le regole sono flessibili e granulari.
C'è anche una modalità "check" che richiede ri-autenticazione periodica. Per i server più critici puoi configurare che ogni ora, o ogni volta che ti connetti, devi ri-autenticarti attraverso il tuo identity provider. È un layer di sicurezza extra che con le chiavi SSH tradizionali semplicemente non esiste — una chiave SSH rubata funziona finché qualcuno non la revoca manualmente.
La revoca degli accessi è istantanea. Togli un utente dalle ACL e in pochi secondi le sessioni SSH attive vengono terminate e nuove connessioni rifiutate. Con le chiavi SSH tradizionali dovresti andare su ogni server a rimuovere la chiave dal file authorized_keys — e sperare di non dimenticarne nessuno.
Uno dei motivi più concreti per considerare Tailscale è il classico scenario del bastion host. Se hai un server centrale da cui fai SSH a tutto il resto — e quel server muore — sei chiuso fuori da tutta la tua infrastruttura. È il paradosso del lucchetto: più centralizzi l'accesso per sicurezza, più sei vulnerabile se quel punto centrale fallisce.
Con Tailscale ogni nodo è raggiungibile indipendentemente dagli altri. Se il tuo server principale va giù, apri il laptop, sei già nella tailnet, fai SSH direttamente al server che ti serve. Non c'è nessun punto singolo di fallimento nella rete mesh — ogni nodo ha le sue connessioni dirette con tutti gli altri.
E se Tailscale stesso va giù? I loro coordination server servono solo per lo scambio iniziale delle chiavi e per aiutare il NAT traversal. Una volta che le connessioni sono stabilite, funzionano anche se i server di Tailscale sono offline. Le chiavi WireGuard hanno una durata e le connessioni persistono. Ovviamente non puoi aggiungere nuovi nodi o modificare le ACL se il control plane è giù, ma le connessioni esistenti continuano a funzionare.
Il piano gratuito — che Tailscale chiama "Personal" — include fino a 100 dispositivi e 3 utenti. Per un freelancer o un piccolo team è più che sufficiente. Il piano a pagamento parte da 6 dollari per utente al mese e aggiunge cose come più utenti, log di audit avanzati, e supporto prioritario.
I limiti da conoscere: Tailscale SSH funziona solo su Linux e macOS. La porta è fissa sulla 22, non puoi usare porte custom. Su macchine multi-utente, qualsiasi utente del sistema operativo può usare le connessioni Tailscale SSH — se questo è un problema, devi usare la modalità "check" con ri-autenticazione obbligatoria.
C'è anche Headscale, un'implementazione open-source del coordination server di Tailscale. Se l'idea di dipendere da un servizio cloud di terze parti ti fa venire l'orticaria, puoi hostare tu il control plane. Perdi alcune feature enterprise ma guadagni indipendenza totale. È un progetto maturo e attivamente mantenuto dalla community.
La competizione principale è con le VPN tradizionali e con soluzioni simili. OpenVPN è il dinosauro del settore — funziona, è testato, ma è lento, complesso da configurare, e usa un modello hub-and-spoke (tutto passa per un server centrale). WireGuard puro è veloce e moderno ma richiede configurazione manuale. Nebula, creato da Slack, è un'altra mesh VPN ma richiede più lavoro di setup. ZeroTier è il concorrente più diretto di Tailscale — offre funzionalità simili ma con un approccio leggermente diverso alla gestione della rete.
Il vantaggio di Tailscale rispetto a tutti questi è la facilità d'uso. Tre comandi e sei dentro. L'integrazione con gli identity provider esistenti significa zero gestione di credenziali aggiuntive. Le ACL sono potenti ma comprensibili. E il fatto che sia costruito su WireGuard garantisce prestazioni eccellenti — il overhead è minimo, la latenza aggiuntiva quasi impercettibile.
Oltre all'accesso SSH, Tailscale apre scenari interessanti. Puoi esporre servizi interni — un database, un pannello admin, un tool di monitoring — solo sulla tailnet, senza aprire porte sul firewall pubblico. Il tuo Grafana gira sulla porta 3000 del server ma è raggiungibile solo via IP Tailscale? Nessuno su internet lo vede, ma tu ci accedi dal browser del laptop come se fosse in locale.
Puoi usarlo come alternativa ai tunnel Cloudflare per accedere a servizi self-hosted. Puoi creare una exit node per routare tutto il traffico del tuo laptop attraverso un server specifico quando sei su WiFi pubblici. Puoi condividere singole macchine con collaboratori esterni senza dare loro accesso a tutta la rete.
Per chi gestisce infrastruttura distribuita — anche piccola, anche da freelancer — Tailscale è uno di quei tool che una volta provati ti chiedi come facevi prima. Non risolve tutti i problemi di sicurezza del mondo, ma elimina una quantità imbarazzante di complessità accidentale dalla gestione quotidiana dei server.
Il percorso consigliato è incrementale. Installi Tailscale su due macchine — il tuo laptop e un server — e verifichi che riesci a fare SSH via IP Tailscale. Poi aggiungi gli altri server uno alla volta. Poi abiliti Tailscale SSH e configuri le ACL. Poi, quando sei sicuro che tutto funziona, chiudi la porta 22 pubblica sui server e lasci solo l'accesso via tailnet. Ogni passo è reversibile e non rompe nulla di quello che funzionava prima.
Non è un salto nel vuoto. È una scala con i pioli comodi.