y83 code / справочник

VPN

Интернет телефона идёт не через оператора, а через ваш личный сервер, а приложение следит, чтобы туннель не рвался.

раздел
Подсистемы приложения
пунктов возможностей
27
источник
docs/about/vpn.md

Возможности

  • Включение и выключение 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) могут стать недоступны — весь трафик уходит на сервер.
  • Автоматического перехода на второй сервер при падении первого нет.

Источник: docs/about/vpn.md. Страница собрана из документации проекта при сборке сайта — без пересказа.