Возможности
- Включение и выключение VPN одной кнопкой.
- На экране видно текущее состояние: подключено, переподключается или ошибка.
- Переподключение вручную, без перезапуска приложения и телефона.
- Автовосстановление после обрыва: приложение поднимает туннель заново само.
- Переподключение при смене сети: при переходе между Wi-Fi и мобильными данными туннель поднимается заново.
- Пока VPN включён, интернет телефона не идёт в обычную сеть напрямую.
- Показывается объём трафика и время работы туннеля.
- Два режима: весь трафик телефона через VPN или только выбранные приложения. Список приложений выбирается галочками и запоминается.
- В списке приложений видно, что уже выбрано: чипы «Все / Выбранные», секция выбранных сверху и галочка в каждой строке. Поиск ищет и по имени, и по пакету, а массовые действия работают по тому, что видно на экране.
- Изменения выбора и режима применяются сразу, без отключения и повторного подключения. Пока не выбрано ни одного приложения, подключиться в режиме «по приложениям» нельзя — иначе через VPN пошёл бы весь трафик.
- Автозапуск: после перезагрузки телефона VPN поднимается сам, если был включён.
- Свои серверы: добавить вручную по адресу, вставить готовую ссылку, выбрать сервер по умолчанию, отредактировать или удалить.
- Строка здоровья: результат проверки, проходит ли трафик через туннель.
Технические данные
| Параметр | Значение |
|---|---|
| Программа на сервере | hysteria2 |
| Тип подключения | QUIC (UDP), порт 443 |
| Локальный прокси | SOCKS5 на 127.0.0.1:1080 |
| Преобразование трафика | tun2socks, библиотека libtun2socks.so |
| Виртуальный интерфейс | TUN 10.0.88.88/16 |
| Разрядность | 64-битное устройство |
Как устроено соединение
Приложение поднимает в телефоне виртуальный сетевой интерфейс и направляет в него весь интернет системы. Трафик из интерфейса забирает tun2socks и подаёт в локальный SOCKS5-порт, который обслуживает процесс hysteria2 на телефоне. Тот соединяется с сервером по QUIC и передаёт трафик в интернет.
Терминал и SSH подключаются напрямую к локальному прокси, мимо виртуального интерфейса. Иначе трафик самого туннеля попал бы обратно в туннель.
Что делает связь стабильной
- Настоящая проверка готовности. После запуска приложение ждёт не только открытия SOCKS5-порта, но и успешного HTTP-запроса через туннель, до 8 секунд. Только после этого показывается «подключено». Раньше состояние ставилось сразу после запуска процесса, и туннель уходил в бесконечные перезапуски.
- Мягкие паузы между попытками. 1, 2, 4, 8, 16 секунд, дальше одна попытка в минуту. Счётчик сбрасывается после успеха, ручного переподключения или смены сети.
- Мягкий перезапуск. При обрыве перезапускается только hysteria2, виртуальный интерфейс остаётся поднятым. Уже открытые соединения не рвутся повторно, счётчик трафика не обнуляется. Интерфейс пересоздаётся полностью только после трёх неудач подряд.
- Защита от мигания сети. После смены сети приложение ждёт 1.5 секунды и только потом проверяет туннель. Если туннель жив, приложение ничего не трогает.
- DNS до запуска. Имя сервера находится в сети до старта туннеля, чтобы он не запускался с именем, которое не удалось разрешить.
Что агент умеет с VPN
Агент управляет VPN теми же командами, что и приложение, и читает его журнал. Отдельного «инструмента VPN» у агента нет — всё идёт через мост разработчика.
Управление подключением
- Узнать состояние: подключён, переподключается, отключён или ошибка. При подключении — имя и адрес сервера, сколько секунд длится сессия, сколько трафика принято и отправлено. При переподключении — номер попытки, максимум попыток и причина: сеть не ловится или сервер недоступен. При ошибке — её текст.
- Подключиться, выбрав конкретный сервер по его номеру. Если сервер не указан, берётся тот, что отмечен как основной. Если основной сервер не выбран, команда отвечает отказом и объясняет причину.
- Отключиться.
- Переподключиться принудительно: попытки сбрасываются и подключение идёт сразу, без ожидания.
- Перезапустить туннель: перезапускается только сама программа VPN, счётчик трафика и уже открытые соединения сохраняются.
Диагностика
Журнал процесса VPN читается отдельно от журнала приложения — это два разных файла, чтобы записи о туннеле не терялись в общем потоке. В журнале видно, на каком шаге всё сломалось: когда туннель признан готовым, почему пошла переподключение, что произошло при смене сети, чем закончилась проверка связности.
Экраны
Агент может открыть экраны VPN: сам VPN, список серверов, добавление сервера, правку сервера и выбор приложений для режима «по приложениям». Это нужно, когда требуется не команда, а подготовка — например, добавить сервер или отметить приложения, после чего подключение идёт обычной командой.
Ограничения
- Работает только на 64-битных устройствах (arm64).
- Туннель замедляет интернет: маршрут длиннее.
- Локальные сети (например, принтер в той же Wi-Fi) могут стать недоступны — весь трафик уходит на сервер.
- Автоматического перехода на второй сервер при падении первого нет.