Не нашёл удобные цепочки прокси на Android. В итоге написал свой VPN-клиент

Привет, Хабр!

Некоторые, возможно, помнят меня по статье о Nyagram — моей Java-библиотеке для Telegram-ботов. С тех пор я немного сменил направление. Видимо, одной собственной библиотеки мне оказалось недостаточно, поэтому теперь я взялся за VPN-клиенты.

На этот раз всё началось с довольно простой проблемы: мне понадобились цепочки прокси на Android.

Я перепробовал несколько клиентов, но так и не нашёл удобного способа собирать цепочки прямо через интерфейс приложения. Возможно, просто плохо искал — не исключаю.

В основном я пользовался Happ, но на моём устройстве он периодически подлагивал. В какой-то момент мне надоело искать компромиссы, и я решил попробовать написать собственный клиент.

Так появился Nextlink.

Главный экран NextlinkГлавный экран Nextlink

Всё началось с цепочек

Для меня это была главная причина разработки.

Хотелось самостоятельно составлять маршруты из нескольких серверов, менять их порядок и комбинировать разные протоколы без постоянного редактирования JSON.

Например:

Телефон → Германия → Нидерланды → Интернет

В Nextlink я реализовал редактор, позволяющий собирать подобные маршруты непосредственно через интерфейс.

Редактор цепочек NextlinkРедактор цепочек Nextlink

При этом можно использовать совместимые комбинации разных протоколов, например XHTTP и Hysteria2.

Настройка цепочки проксиНастройка цепочки прокси

Конечно, каждый дополнительный узел увеличивает задержку и создаёт ещё одну потенциальную точку отказа.

Я экспериментировал и с длинными маршрутами. Например, при использовании четырёх узлов сталкивался с забавной проблемой: текстовые сообщения в Telegram отправлялись, а изображения — уже нет.

С одним или двумя узлами всё работало нормально. Причину поведения длинной цепочки ещё нужно выяснить.

Впрочем, для моих повседневных задач обычно достаточно двух серверов.

А потом захотелось сделать красиво

Изначально я не планировал ничего необычного в плане дизайна.

Но однажды подумал: если уж я пишу собственный клиент, почему бы не дать пользователю возможность настроить его внешний вид?

Так появилась система пользовательских тем.

И нет, речь не только о переключении между светлым и тёмным режимом.

В Nextlink можно изменять оформление приложения, а готовые темы импортировать и экспортировать в формате .nlt.

Темы оформления NextlinkТемы оформления Nextlink

Для тех, кому недостаточно готовых вариантов, есть редактор тем.

Редактор тем NextlinkРедактор тем Nextlink

Никакой глубокой технической необходимости в этой функции не было. Просто захотелось сделать.

В результате приложение стало выглядеть совсем не так, как я представлял его в начале разработки.

Что получилось в итоге

Постепенно Nextlink перестал быть приложением исключительно для цепочек.

Сейчас он поддерживает Xray, sing-box и AmneziaWG, импорт конфигураций и подписок, маршрутизацию для отдельных приложений, настройки DNS и IPv6, журналы работы и статистику соединений.

В приложении можно просматривать информацию о выбранном сервере и управлять подключениями.

Информация о сервереИнформация о сервере

Есть и функция, которую я называю graceful switch.

При переключении серверов клиент старается сохранить старое рабочее соединение до тех пор, пока новое не будет готово. Если подключение к новому серверу не удалось, не хочется оставаться вообще без VPN.

Это не гарантирует, что все активные соединения переживут смену маршрута, но позволяет избежать преждевременного отключения.

Отдельное внимание я уделил настройкам.

Настройки NextlinkНастройки 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

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев