Headscale, реалізація Tailscale з відкритим кодом

Кілька днів тому ми говорили тут, у блозі, про Firezone, яка є чудовою утилітою для створення VPN-серверів на базі WireGuard.

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

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

Окрім підтримки керування маршрутами та доступом на основі ACL , а також можливості встановлення каналів зв'язку в умовах використання трансляції мережевих адрес (NAT), система підтримує механізми STUN, ICE та DERP (аналог TURN, але на основі HTTPS). Якщо канал зв'язку між певними вузлами заблоковано, мережа може перенаправляти трафік через інші вузли.

Tailscale відрізняється від проекту Nebula , який також призначений для створення розподілених VPN-мереж з mesh-маршрутизацією, використовуючи протокол 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 (Серверна ліцензія на стороні сервера), який не відкритий через наявність дискримінаційних вимог.

Tailscale розповсюджується за моделлю freemium, пропонуючи безкоштовний доступ для окремих осіб та платний доступ для підприємств і команд. Клієнтські компоненти Tailscale, за винятком графічних додатків для Windows та macOS, розробляються як проекти з відкритим кодом за ліцензією BSD.

Аутсорсингове серверне програмне забезпечення Tailscale, яке автентифікує нових клієнтів , координує управління ключами та організовує зв'язок між вузлами, є власним. Проект Headscale вирішує цю проблему та пропонує реалізацію з відкритим кодом, незалежну від серверних компонентів Tailscale.

Headscale бере на себе функції обміну відкритими ключами між вузлами , а також виконує операції призначення IP-адрес та розподілу таблиці маршрутизації між вузлами.

У своєму поточному вигляді Headscale реалізує всі основні функції сервера керування, за винятком підтримки MagicDNS та Smart DNS. Зокрема, він підтримує реєстрацію вузлів (включаючи веб), адаптацію мережі для додавання або видалення вузлів, поділ на підмережі за допомогою просторів імен (що дозволяє створювати VPN для кількох користувачів), організацію спільного доступу вузлів до підмереж у різних просторах імен, керування маршрутизацією (включаючи призначення вихідних вузлів для доступу до зовнішнього світу), спільний доступ через ACL та виконання DNS.

Код Headscale написаний на Go та розповсюджується під ліцензією BSD. Проект розробляється Хуаном Фонтом з Європейського космічного агентства.

Зрештою, якщо ви зацікавлені дізнатися більше, ви можете знайти деталі за наступним посиланням.


Додати як пріоритетне джерело в Google