Прототип застосунку SingLinkVPN тепер з відкритим кодом

Contents
Сьогодні SingLinkLabs, команда, що стоїть за SingLinkVPN, опублікувала на GitHub вихідний код прототипу першого покоління застосунку SingLinkVPN за ліцензією Apache-2.0. Це VPN-застосунок споживчого формату для Windows, macOS, Android та iOS, створений з єдиної кодової бази на основі щойно відкритого протоколу SingLink.
Він виходить разом із самим протоколом — див. протокол SingLink тепер з відкритим кодом. Разом вони показують, як відкритий VPN-протокол і повноцінний клієнт поєднуються між собою — від кнопки підключення до зашифрованих пакетів.
Репозиторій: SingLinkLabs / singlink-vpn-app · Статус: прототип першого покоління · Ліцензія: Apache-2.0 · Технології: Flutter (Dart) для інтерфейсу, Go для ядра
Це не той застосунок, який ви завантажуєте з нашого сайту
Офіційні застосунки SingLinkVPN, які ви завантажуєте з нашого сайту та з магазинів застосунків, — це окремі продукти. Вони працюють на наших робочих протоколах, зокрема на SingLink 2.0, і їхній основний вихідний код не входить до цього релізу. Для наявних користувачів нічого не змінюється.
Прототип — це еталонний клієнт для відкритого протоколу SingLink. Він підключається лише до серверів, які працюють за цим протоколом, і не має входу в обліковий запис: ви додаєте сервери самостійно, вставивши посилання на сервер або імпортувавши його з буфера обміну. Він не опублікований у жодному магазині застосунків.
Що вміє застосунок
- Підключення та відключення одним дотиком за допомогою великої круглої кнопки, що показує три стани: не підключено, підключення та підключено.
- Стан захисту ("Not protected" або "Protected") і таймер підключення.
- Ваш IP: після підключення застосунок показує вихідну IP-адресу, яку бачать вебсайти.
- Вибір локації: сервери показано з прапорами країн, а вгорі списку — "Quick connect (auto)". Якщо змінити локацію під час підключення, застосунок автоматично перепідключиться.
- Чесна затримка: показуються лише виміряні значення. Для серверів, які ще не виміряно, замість вигаданого числа відображається "—".
- Швидкість у реальному часі: швидкість завантаження й вивантаження, а також обсяг даних, використаних у поточному сеансі.
- Зрозумілі повідомлення про помилки, які підказують, що робити далі, а технічні подробиці — за один дотик.
- Світлий і темний режими відповідно до налаштувань системи.
Два режими підключення
На телефонах — VPN для всього пристрою. Android використовує системний VpnService, а iOS — Network Extension. Трафік усіх застосунків проходить через тунель, і DNS-запити теж виконуються всередині нього.
На комп'ютерах — режим системного проксі. Під час підключення застосунок налаштовує системний проксі, а коли ви відключаєтеся або виходите, відновлює попередні налаштування. Якщо застосунок примусово закрили під час підключення, він відновить їх під час наступного запуску. Браузери та більшість застосунків використовують системний проксі; кілька програм, які ігнорують налаштування проксі, — ні. VPN на рівні пакетів для настільних систем (Network Extension на macOS, Wintun на Windows) — запланований наступний крок.
Як його побудовано
- Одна кодова база Flutter дає всі чотири застосунки з однаковим інтерфейсом на кожній платформі. Інтерфейс — англійською мовою.
- Ядро на Go містить протокол SingLink і компілюється в нативну бібліотеку для кожної платформи, яку застосунок викликає напряму.
- На телефонах ядро додає мережевий стек gVisor від Google (Apache-2.0), що працює в просторі користувача й перетворює трафік усього пристрою на підключення SingLink.
- Написано з нуля. Окрім порожнього шаблону, який Flutter створює для нового проєкту, увесь код новий. Жодного коду, іконок чи зображень з інших VPN-застосунків не запозичено.
Стан кожної платформи
- macOS 13 або новіша (Apple silicon): режим системного проксі. Зібрано й перевірено з реальним підключенням.
- Android 7 або новіший: VPN для всього пристрою. APK зібрано й перевірено з реальним підключенням в емуляторі Android.
- iOS 15 або новіша: VPN для всього пристрою. Збирається й запускається в симуляторі iOS; симулятор не може створити VPN-тунель, а для запуску на справжньому iPhone потрібен обліковий запис Apple Developer.
- Windows 10 і 11 (x64): режим системного проксі. Бібліотеку ядра зібрано; сам застосунок потрібно компілювати на Windows, і репозиторій містить робочий процес GitHub Actions, який це робить.
Чесні обмеження
- Це прототип. Він призначений для розробників, дослідників і всіх, хто хоче побачити, як працюють окремі частини, а не як заміна офіційним застосункам.
- Для поширення потрібні додаткові кроки. Для публічного релізу на Mac потрібні підпис і нотаризація Apple, для справжнього iPhone — обліковий запис Apple Developer, а збірки для Android підписано тестовим ключем.
- Підтримка macOS наразі означає macOS 13 або новішу на комп'ютерах Mac з Apple silicon (M-series).
- На комп'ютерах використовується режим системного проксі, тож програми, які ігнорують налаштування проксі, поки не охоплено.
- Протокол, що лежить в основі, — чернетка. Він пройшов внутрішній аудит безпеки, але ще не мав незалежного аудиту й не перевірявся на практиці в материковому Китаї.
- Назви серверів показуються так, як їх надсилає сервер. Щоб інтерфейс був повністю англійською, давайте серверам англійські назви.
Зберіть і долучайтеся
README у репозиторії пояснює, як зібрати ядро й застосунок для кожної платформи. Ядро протоколу міститься в окремому репозиторії — SingLinkLabs / singlink-protocol.
Запитання, звіти про помилки та Pull Request вітаються на GitHub. Про вразливості безпеки, будь ласка, повідомляйте приватно, а не в публічному Issue, — порядок описано в SECURITY.md у репозиторії протоколу.
Ліцензія та торговельні марки
Код поширюється за ліцензією Apache-2.0: ви можете використовувати, змінювати й повторно поширювати його, зокрема в комерційних цілях, на умовах ліцензії. Назви "SingLink" і "SingLinkVPN", їхні китайські назви та логотип є торговельними марками SingLinkLabs, і ліцензія не дає дозволу їх використовувати. Форки мають використовувати власну назву та іконку. Застосунок містить мережевий стек gVisor, який також поширюється за ліцензією Apache-2.0.
Додаткові матеріали
- Протокол SingLink тепер з відкритим кодом
- Проєкти SingLinkLabs з відкритим кодом
- Технічна документація (whitepaper) SingLink 2.0 — робочий протокол офіційних застосунків
- Завантажити офіційні застосунки SingLinkVPN

