Creare una VPN distribuita con Tailscale

Un ricercatore spiega come creare una rete VPN distribuita con Tailscale e fly.io. Un'idea smart per navigare in sicurezza sul Web da qualunque luogo.

Tailscale è uno di quei servizi che apre a infinite possibilità dove il limite, spesso, è solo l’immaginazione dell’utente. Si tratta di una piattaforma VPN che consente di creare una rete sicura e privata tra diversi dispositivi e reti, indipendentemente dalla loro posizione geografica. È progettata per semplificare la connessione e la comunicazione tra le risorse di rete in modo sicuro e privato. Tailscale utilizza il protocollo WireGuard per stabilire connessioni crittografate punto-punto tra i dispositivi. WireGuard è noto per la sua velocità, efficienza e sicurezza, ed è stato progettato per essere semplice da configurare e utilizzare.

Abbiamo visto, in precedenza, quali tipi di VPN esistono e come crearle con WireGuard e Tailscale. Più di recente ci siamo soffermati su Tailscale Funnel, soluzione che permette di condividere un server via VPN in totale sicurezza.

Un ricercatore indipendente ha mostrato su GitHub come creare una VPN distribuita in totale autonomia, da casa o dall’ufficio, con la possibilità di condividere l’accesso anche con amici, colleghi e parenti. Il sistema è ingegnoso e fa perno, oltre che su Tailscale, anche su Fly.io, piattaforma di hosting globale che offre un’infrastruttura di distribuzione di applicazioni per le aziende. L’obiettivo principale di Fly.io è semplificare la distribuzione delle app su una rete globale di server per migliorarne la prestazione, l’affidabilità e la scalabilità.

L’approccio presentato è perfettamente funzionante anche se richiede un minimo di competenze tecniche. Alla fine, però, si ottiene un’infrastruttura distribuita che permette di ridimensionare istantaneamente i nodi della VPN su tutto il pianeta e scegliere l’exit node ovvero impostare da quale host deve uscire il traffico di rete (è possibile selezionare una tra le 30 località disponibili su scala mondiale). Il meccanismo risulta affidabile, solido, performante e consente di godere di 160 GB di traffico dati gratis ogni mese.

Allestire la propria rete VPN distribuita con Tailscale e Fly.io

  • Come spiegato nella guida pubblicata su GitHub, per creare la propria rete VPN distribuita, sono necessari alcuni requisiti:
  • Disporre di un account GitHub;
  • Creare una propria organizzazione all’interno di GitHub;
  • Installare il client Tailscale su ogni dispositivo che deve partecipare alla VPN;
  • Accedere a Tailscale con l’account GitHub configurato in precedenza impostando lo stesso nome dell’organizzazione;
  • Portarsi nella configurazione DNS di Tailscale, all’interno del proprio account e impostare l’utilizzo di un server DNS pubblico (si possono usare, ad esempio, gli IP dei DNS Cloudflare 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001);
  • Creare una chiave di autenticazione Tailscale;
  • Creare un account su fly.io quindi installare il client per il sistema operativo in uso. Assicurarsi di effettuare il login con lo stesso account utente GitHub;
  • Aggiungere una propria organizzazione tramite il client di fly.io: flyctl orgs create nome-org-net;
  • Inserire quindi gli estremi di una propria carta di credito associandola all’organizzazione aggiunta. Non temete: fly.io non addebiterà nulla a meno che non si superino i limiti definiti per gli account gratuiti (tra cui 160 GB di traffico dati al mese).

Configurazione della macchina virtuale sul cloud e scelta del nodo di uscita

Sul sistema cloud ospitato su fly.io è possibile clonare il repository GitHub seguente quindi avviare il progetto:

git clone https://github.com/patte/fly-tailscale-exit.git
cd fly-tailscale-exit
flyctl launch

Alle varie domande che vengono presentate in sequenza, si può rispondere così come segue:

fly.toml file already exits would you like copy its configuration : (yes/no) yes

App Name (leave blank to use an auto-generated name) tailwings

Select organization: banana-bender-net-test (specificare il nome dell’organizzazione indicato ai passi precedenti)

would you like to deploy postgressql for the app: (yes/no) no

would you like to deploy now : (yes/no) no

Come passo finale, si può digitare il comando seguente per specificare la chiave di autenticazione Tailscale ottenuta in precedenza:

flyctl secrets set TAILSCALE_AUTH_KEY=

Purtroppo, fly.io non assegna più un indirizzo IPv4 dedicato per ciascuna applicazione caricata dall’utente sulla piattaforma. Per ovviare a questo problema si può acquistare un indirizzo IPv4 al prezzo di 2 dollari al mese oppure ripiegare su un IPv6. Le varie alternative sono disponibili al punto 10 Deploy (and IP and scale) della guida pubblicata su GitHub. Infine, con il comando flyctl deploy si può avviare il progetto mentre utilizzando flyctl scale count 1 si imposta l’utilizzo di una singola macchina per regione. È eventualmente possibile aggiungere regioni specifiche. Ad esempio: flyctl scale count 3 --region hkg,fra,ams

Dalla pagina con l’elenco delle macchine controllate attraverso la rete Tailscale, si deve configurare l’exit node: questo documento di supporto spiega per filo e per segno come procedere.

Per concludere, va detto che l’approccio descritto potrebbe comportare un aumento importante del traffico sui server DERP di Tailscale. I server DERP forniscono una connettività sicura tra i dispositivi che utilizzano Tailscale, anche quando sono presenti “ostacoli” come firewall, NAT o connessioni non affidabili. In generale Tailscale viene utilizzato per le reti interne: se tutti lo utilizzassero come VPN su base giornaliera, il traffico sui server DERP potrebbe aumentare in maniera anomala e imprevista.

È importante sottolineare che i server DERP di Tailscale non agiscono come un punto centrale per l’accesso ai dati o per il controllo degli utenti: la crittografia end-to-end utilizzata da Tailscale garantisce che solo i dispositivi autorizzati possano accedere ai dati trasmessi sulla rete.

Ti consigliamo anche

Link copiato negli appunti