Headscale, una implementació de codi obert de Tailscale

Fa pocs dies parlàvem aquí al blog sobre Firezone, la qual és una excel·lent utilitat per a la creació de servidors VPNs basats en WireGuard.

I ara en aquesta ocasió toca parlar sobre una utilitat bastant similar anomenada «Headscale» el qual és un projecte que es desenvolupa com una implementació de codi obert de l'component de servidor de la xarxa Tailscale VPN, que permet crear xarxes VPN similars a Tailscale en les seves pròpies instal·lacions, sense estar vinculat a serveis de tercers.

Escala de cua permet combinar un nombre arbitrari de hosts dispersos geogràficament en una xarxa, Construïda en la imatge d'una xarxa en malla, en la qual cada node es comunica amb altres nodes directament (P2P) o mitjançant nodes veïns, sense transmetre trànsit a través de servidors externs centralitzats de l'proveïdor de VPN.

A més de que s'admet el control de ruta i accés basat en ACL i que per poder establir els canals de comunicació en les condicions d'ús de traductors d'adreces (NAT) es dóna suport als mecanismes STUN, ICE i DERP (anàlegs TURN, però basats en HTTPS). Si el canal de comunicació entre certs nodes està bloquejat, la xarxa pot tornar a redireccionar per encaminar el trànsit a través d'altres nodes.

Tailscale si diferència de el projecte Nebula el qual també està dissenyat per crear xarxes VPN distribuïdes amb enrutament en malla, utilitzant el protocol Wireguard per organitzar la transferència de dades entre nodes, mentre que Nebula usa els desenvolupaments de el projecte Tinc, que fa servir l'algoritme AES-256 per xifrar paquets GSM (Wireguard fa servir el xifrat ChaCha20, que en les proves demostra un major rendiment i capacitat de resposta).

Un altre projecte similar, Innernet, s'està desenvolupant per separat, en què el protocol Wireguard també s'utilitza per intercanviar dades entre nodes. Per contra, d'Tailscale i Nebula en Innernet es va utilitzar un sistema diferent de separació d'accés basat en l'ACL no es vinculen etiquetes a nodes i subxarxes individuals en la separació i aïllament dels diferents rangs de les adreces IP, com a Internet convencional de xarxes.

A més, Innernet fa servir Rust en lloc de Go i cal esmentar que fa alguns dies es va publicar Innernet 1.5 amb suport transversal NAT millorat. També hi ha un projecte Netmaker, que li permet connectar xarxes amb diferents topologies utilitzant Wireguard, però el seu codi es subministra sota la SSPL (Llicència Pública de la banda de servidor), que no està oberta a causa de la presència de requisits discriminatoris.

Tailscale es distribueix utilitzant un model Freemium d'ús gratuït per a persones i accés de pagament per a empreses i equips. Els components de client Tailscale, amb l'excepció de les aplicacions gràfiques per a Windows i macOS, es desenvolupen en forma de projectes de codi obert sota la llicència BSD.

El programari de servidor subcontractat de Tailscale que autentica nous clients, coordina la gestió de claues i organitza la comunicació entre nodes és propietari. El projecte Headscale aborda aquest problema i proporciona una implementació de codi obert independent dels components de servidor Tailscale.

Headscale assumeix les funcions d'intercanvi de claus públiques de nodees i també realitza les operacions d'assignació d'adreces IP i distribució de taules d'enrutament entre nodes.

En la seva forma actual, Headscale implementa totes les característiques principals de l'servidor d'administració, amb l'excepció de el suport per MagicDNS i Smart DNS. En particular, admet les funcions de registrar nodes (Fins i tot a través del web), adaptar la xarxa per afegir o eliminar nodes, dividir subxarxes utilitzant espais de noms (es pot crear una xarxa VPN per diversos usuaris), organitzar l'accés compartit de nodes a subxarxes en diferents espais de noms, control d'enrutament (inclosa l'assignació de nodes de sortida per accedir a el món exterior), accés compartit a través d'ACL i execució de DNS.

El codi de Headscale està escrit en Go i es distribueix sota la llicència BSD. El projecte està sent desenvolupat per Juan Font de l'Agència Espacial Europea.

Finalment, si estàs interessat en poder conèixer més a l'respecte pots consultar els detalls en el següent enllaç.