El proyecto Headscale desarrolla una implementación abierta del componente del servidor de la red VPN Tailscale, que permite crear redes VPN similares a Tailscale en sus propios recursos, sin depender de servicios de terceros. El código de Headscale está escrito en lenguaje Go y se distribuye bajo licencia BSD. El proyecto es desarrollado por Juan Font Alonso del Agencia Espacial Europea.
Tailscale permite unir un número arbitrario de hosts geográficamente dispersos en una única red, construida a imagen de una red en malla, en la que cada nodo interactúa directamente con otros nodos (P2P) o a través de nodos vecinos, sin transmitir tráfico a través de servidores externos centralizados. VPN- proveedor. Se admite la gestión de acceso y rutas basadas en ACL. Para establecer canales de comunicación en condiciones donde se aplican traductores de direcciones (NAT), se proporciona soporte para los mecanismos STUN, ICE y DERP (análogo a TURN, pero basado en HTTPS). En caso de bloqueo del canal de comunicación entre ciertos nodos, la red puede reconfigurar la enrutación para enviar tráfico a través de otros nodos.

El proyecto Nebula, también destinado a crear redes VPN distribuidas con enrutamiento en malla, se diferencia de Tailscale en el uso del protocolo Wireguard para organizar la transmisión de datos entre nodos, mientras que Nebula utiliza desarrollos del proyecto Tinc, en el que se emplea el algoritmo AES-256-GSM para cifrar paquetes (en Wireguard se utiliza el cifrado ChaCha20, que en las pruebas muestra una mayor capacidad de respuesta y rendimiento).
Además, se desarrolla otro proyecto similar: Innernet, que también utiliza el protocolo Wireguard para el intercambio de datos entre nodos. A diferencia de Tailscale y Nebula, en Innernet se aplica un sistema diferente de separación de acceso, basado no en ACL con etiquetas vinculadas a nodos individuales, sino en la división de subredes y la asignación de diferentes rangos. direcciones IP, como en las redes de internet convencionales. Además, en lugar de usar el lenguaje Go, Innernet utiliza el lenguaje Rust. Hace tres días se publicó una actualización de Innernet 1.5 con una mejorada compatibilidad para eludir NAT. También existe el proyecto Netmaker, que permite unir redes con diferente topología utilizando Wireguard, pero su código se distribuye bajo la licencia SSPL (Server Side Public License), que no es abierta debido a requisitos discriminatorios.
Tailscale se distribuye utilizando un modelo Freemium, que permite su uso gratuito para individuos y acceso de pago para empresas y equipos. Los componentes del cliente de Tailscale, excepto las aplicaciones gráficas para Windows y macOS, se desarrollan en forma de proyectos abiertos bajo la licencia BSD. El software del servidor que funciona del lado de la empresa Tailscale, que asegura la autenticación al conectar nuevos clientes, coordina la gestión de llaves y organiza la interacción entre nodos, es propietario. El proyecto Headscale soluciona esta limitación y ofrece una implementación independiente y abierta de los componentes del servidor Tailscale.

Headscale se encarga de las funciones de intercambio de claves públicas entre nodos, así como de realizar operaciones de asignación de direcciones IP y distribución de tablas de enrutamiento entre nodos. En su estado actual, Headscale implementa todas las funcionalidades principales del servidor de gestión, excepto el soporte para MagicDNS y Smart DNS. En particular, se soportan las funciones de registro de nodos (incluido a través de web), adaptación de la red para la adición o eliminación de nodos, segmentación de subredes mediante espacios de nombres (se puede crear una red VPN para varios usuarios), organización del acceso compartido de nodos a subredes en diferentes espacios de nombres, gestión de enrutamiento (incluida la asignación de nodos de salida para acceder al mundo exterior), segmentación de acceso a través de ACL y funcionamiento del servicio DNS.
Fuente: opennet.ru
