Привет, Хабр!
Некоторые, возможно, помнят меня по статье о Nyagram — моей Java-библиотеке для Telegram-ботов. С тех пор я немного сменил направление. Видимо, одной собственной библиотеки мне оказалось недостаточно, поэтому теперь я взялся за VPN-клиенты.
На этот раз всё началось с довольно простой проблемы: мне понадобились цепочки прокси на Android.
Я перепробовал несколько клиентов, но так и не нашёл удобного способа собирать цепочки прямо через интерфейс приложения. Возможно, просто плохо искал — не исключаю.
В основном я пользовался Happ, но на моём устройстве он периодически подлагивал. В какой-то момент мне надоело искать компромиссы, и я решил попробовать написать собственный клиент.
Так появился Nextlink.
Главный экран Nextlink
Всё началось с цепочек
Для меня это была главная причина разработки.
Хотелось самостоятельно составлять маршруты из нескольких серверов, менять их порядок и комбинировать разные протоколы без постоянного редактирования JSON.
Например:
Телефон → Германия → Нидерланды → Интернет
В Nextlink я реализовал редактор, позволяющий собирать подобные маршруты непосредственно через интерфейс.
Редактор цепочек Nextlink
При этом можно использовать совместимые комбинации разных протоколов, например XHTTP и Hysteria2.
Настройка цепочки прокси
Конечно, каждый дополнительный узел увеличивает задержку и создаёт ещё одну потенциальную точку отказа.
Я экспериментировал и с длинными маршрутами. Например, при использовании четырёх узлов сталкивался с забавной проблемой: текстовые сообщения в Telegram отправлялись, а изображения — уже нет.
С одним или двумя узлами всё работало нормально. Причину поведения длинной цепочки ещё нужно выяснить.
Впрочем, для моих повседневных задач обычно достаточно двух серверов.
А потом захотелось сделать красиво
Изначально я не планировал ничего необычного в плане дизайна.
Но однажды подумал: если уж я пишу собственный клиент, почему бы не дать пользователю возможность настроить его внешний вид?
Так появилась система пользовательских тем.
И нет, речь не только о переключении между светлым и тёмным режимом.
В Nextlink можно изменять оформление приложения, а готовые темы импортировать и экспортировать в формате .nlt.
Темы оформления Nextlink
Для тех, кому недостаточно готовых вариантов, есть редактор тем.
Редактор тем Nextlink
Никакой глубокой технической необходимости в этой функции не было. Просто захотелось сделать.
В результате приложение стало выглядеть совсем не так, как я представлял его в начале разработки.
Что получилось в итоге
Постепенно Nextlink перестал быть приложением исключительно для цепочек.
Сейчас он поддерживает Xray, sing-box и AmneziaWG, импорт конфигураций и подписок, маршрутизацию для отдельных приложений, настройки DNS и IPv6, журналы работы и статистику соединений.
В приложении можно просматривать информацию о выбранном сервере и управлять подключениями.
Информация о сервере
Есть и функция, которую я называю graceful switch.
При переключении серверов клиент старается сохранить старое рабочее соединение до тех пор, пока новое не будет готово. Если подключение к новому серверу не удалось, не хочется оставаться вообще без VPN.
Это не гарантирует, что все активные соединения переживут смену маршрута, но позволяет избежать преждевременного отключения.
Отдельное внимание я уделил настройкам.
Настройки Nextlink
При этом я не пытался сделать универсальный интерфейс, в котором абсолютно все функции одинаково работают с любым движком. У Xray, sing-box и AmneziaWG есть собственные особенности и ограничения.
Original и Shadow
Для распространения приложения я сделал две редакции.
Original — более лёгкая сборка, которая загружает необходимые сетевые компоненты и ресурсы отдельно.
Shadow — сборка, в которой основные компоненты уже находятся внутри APK.
В остальном это один и тот же Nextlink с одинаковыми возможностями.
В первой публичной бете размеры APK составляют приблизительно 21 и 67 МиБ соответственно. Пока готовые релизные сборки ориентированы на Android ARM64.
Обе редакции доступны на странице релизов GitHub.
Насколько всё стабильно?
Сразу скажу: пока это бета.
Я пользуюсь Nextlink сам, но это не означает, что приложение идеально работает на каждом устройстве и с каждой конфигурацией.
Особенно много нюансов возникает при работе с нативными сетевыми компонентами, различными прошивками Android и нестандартными сочетаниями протоколов.
Некоторые ошибки проявляются только в определённых условиях, поэтому тестирование на других устройствах сейчас особенно полезно.
Я продолжаю дорабатывать интерфейс, обработку ошибок и совместимость конфигураций.
В общем, если что-то сломается — не удивляйтесь. Но желательно расскажите мне об этом, чтобы я мог исправить. 🙂
Открытый исходный код
Я решил сделать Nextlink открытым проектом под лицензией MIT.
Исходный код доступен на GitHub. Там же находятся документация, инструкции по сборке и готовые APK.
Сам Nextlink не предоставляет VPN-серверы и не продаёт подписки. Это клиент, который можно использовать со своими конфигурациями или совместимыми сервисами.
Открытый код, конечно, не означает автоматического отсутствия ошибок и уязвимостей. Зато позволяет самостоятельно изучить устройство приложения и при желании поучаствовать в разработке.
Что дальше?
Пока главная задача — довести до ума то, что уже реализовано.
Хочется улучшить стабильность, проверить больше устройств, разобраться с проблемами нестандартных конфигураций и продолжить работу над интерфейсом.
Какие-то новые возможности наверняка тоже появятся, хотя специально обещать их заранее не хочу.
Первые сохранившиеся у меня скриншоты Nextlink датированы 10 сентября 2026 года. Точную дату начала разработки я уже не помню.
Забавно, что изначально я хотел решить одну конкретную проблему, а в итоге получил целое приложение с несколькими сетевыми движками, цепочками прокси и системой тем.
И нет, я не считаю, что Nextlink должен заменить все существующие VPN-клиенты.
Мне просто захотелось сделать инструмент, которым самому будет удобно пользоваться.
А теперь интересно узнать, окажется ли он полезным кому-то ещё.
GitHub: https://github.com/Kaleert/nextlink
Скачать первую бету: https://github.com/Kaleert/nextlink/releases/tag/v1.0.0-beta%2B4
Буду рад отзывам, сообщениям об ошибках и предложениям.
И отдельно интересно узнать: какими VPN-клиентами вы пользуетесь на Android и встречали ли удобную реализацию цепочек прокси?
Вполне возможно, что нужное приложение всё это время существовало, а я просто умудрился его не найти.
Хотя теперь уже поздно. 🙂
Источник: habr.com