Проект Headscale развивает открытую реализацию серверного компонента VPN-сети Tailscale, позволяющего создавать похожие на Tailscale VPN-сети на своих мощностях, не привязываясь к сторонним сервисам. Код Headscale написан на языке Go и распространяется под лицензией BSD. Проект развивает Хуан Фонт Алонсо (Juan Font) из Европейского космического агентства.
Tailscale позволяет объединить произвольное число территориально разнесённых хостов в одну сеть, построенную по образу mesh-сети, в которой каждый узел взаимодействует с другими узлами напрямую (P2P) или через соседние узлы, без передачи трафика через централизованные внешние серверы VPN-провайдера. Поддерживается управление доступом и маршрутами на основе ACL. Для установки каналов связи в условиях применения трансляторов адресов (NAT) предоставляется поддержка механизмов STUN, ICE и DERP (аналог TURN, но на базе HTTPS). В случае блокировки канала связи между определёнными узлами сеть может перестраивать маршрутизацию для направления трафика через другие узлы.
От проекта Nebula, также предназначенного для создания распределённых VPN-сетей c mesh-маршрутизацией, Tailscale отличается использованием протокола Wireguard для организации передачи данных между узлами, в то время как в Nebula используются наработки проекта Tinc, в котором для шифрования пакетов используется алгоритм AES-256-GSM (в Wireguard применяется шифр ChaCha20, который в тестах демонстрирует более высокую пропускную способность и отзывчивость).
Отдельно развивается ещё один похожий проект — Innernet, в котором для обмена данными между узлами также применяется протокол Wireguard. В отличие от Tailscale и Nebula в Innernet применяется иная система разделения доступа, основанная не на ACL с привязкой тегов к отдельным узлам, а на разделении подсетей и выделении разных диапазонов IP-адресов, как в обычных интернет-сетях. Кроме того, вместо языка Go в Innernet применяется язык Rust. Три дня назад опубликовано обновление Innernet 1.5 с улучшенной поддержкой обхода NAT. Существует также проект Netmaker, позволяющий объединять сети с разной топологией при помощи Wireguard, но его код поставляется под лицензией SSPL (Server Side Public License), которая не является открытой из-за наличия дискриминирующий требований.
Tailscale распространяется с использованием модели Freemium, подразумевающей возможность бесплатного использования для индивидуальных лиц и платный доступ для предприятий и команд. Клиентские компоненты Tailscale, за исключением графических приложений для Windows и macOS, развиваются в форме открытых проектов под лицензией BSD. Работающее на стороне компании Tailscale серверное ПО, обеспечивающее аутентификацию при подключении новых клиентов, координирующее управление ключами и организующее взаимодействие между узлами, является проприетарным. Проект Headscale устраняет этот недостаток и предлагает независимую открытую реализацию серверных компонентов Tailscale.
Headscale берёт на себя функции обмена открытыми ключами узлов, а также выполняет операции назначения IP-адресов и распространения таблиц маршрутизации между узлами. В текущем виде в Headscale реализованы все основные возможности управляющего сервера, за исключением поддержки MagicDNS и Smart DNS. В частности, поддерживаются функции регистрации узлов (в том числе через web), адаптации сети к добавлению или удалению узлов, разделения подсетей при помощи пространств имён (одна VPN-сеть может быть создана для нескольких пользователей), организации общего доступа узлов к подсетям в разных пространствах имён, управления маршрутизацией (в том числе назначение выходных узлов для обращения к внешнему миру), разделения доступа через ACL и работы службы DNS.
Источник: opennet.ru