Headscale, реализация Tailscale с открытым исходным кодом

Несколько дней назад мы рассказывали здесь, в блоге, о Firezone, отличной утилите для создания VPN-серверов на основе WireGuard.

А теперь поговорим об очень похожей утилите под названием «Headscale», которая представляет собой проект, разработанный как реализация с открытым исходным кодом компонента VPN-сервера Tailscale , позволяющего создавать VPN-сети, аналогичные Tailscale, на собственных серверах, не будучи привязанным к сторонним сервисам.

Tailscale позволяет объединять произвольное количество географически распределенных хостов в сеть , построенную по образцу ячеистой сети, в которой каждый узел взаимодействует с другими узлами напрямую (P2P) или через соседние узлы, без передачи трафика через централизованные внешние серверы VPN-провайдера.

Помимо поддержки маршрутизации и управления доступом на основе списков контроля доступа (ACL) и возможности установления каналов связи в условиях использования трансляции сетевых адресов (NAT), система поддерживает механизмы STUN, ICE и DERP (аналогичные TURN, но основанные на HTTPS). Если канал связи между определенными узлами заблокирован, сеть может перенаправлять трафик через другие узлы.

Tailscale отличается от проекта Nebula , который также предназначен для создания распределенных VPN-сетей с ячеистой маршрутизацией, используя протокол Wireguard для организации передачи данных между узлами, в то время как Nebula использует разработки проекта Tinc, который применяет алгоритм AES-256 для шифрования GSM-пакетов (Wireguard использует шифрование ChaCha20, которое в тестах демонстрирует более высокую производительность и скорость отклика).

Ещё один аналогичный проект, Innernet, разрабатывается отдельно, и в нём для обмена данными между узлами также используется протокол Wireguard. В отличие от Tailscale и Nebula, Innernet использует другую систему разделения доступа, основанную на списках контроля доступа (ACL); метки не привязаны к отдельным узлам и подсетям для разделения и изоляции различных диапазонов IP-адресов, как в обычных интернет-сетях.

Кроме того, Innernet использует Rust вместо Go, и стоит упомянуть, что 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. В частности, он поддерживает регистрацию узлов (в том числе через веб-интерфейс), адаптацию сети для добавления или удаления узлов, разбиение на подсети с использованием пространств имен (что позволяет создавать VPN для нескольких пользователей), организацию общего доступа узлов к подсетям в разных пространствах имен, управление маршрутизацией (включая назначение исходящих узлов для доступа к внешнему миру), общий доступ через списки контроля доступа (ACL) и выполнение DNS-запросов.

Код Headscale написан на Go и распространяется под лицензией BSD. Проект разрабатывает Хуан Фонт из Европейского космического агентства.

Наконец, если вас интересует более подробная информация, вы можете найти ее по следующей ссылке.


Добавить в качестве предпочтительного источника в Google