Соединение стояло час, а потом само пропало. Или отвалилось через двадцать секунд после нажатия кнопки. Или ночью телефон лежал на зарядке, а утром значка защиты нет. Мы держим журнал таких случаев и можем сказать, что происходит на самом деле: в подавляющем большинстве наших замеров туннель обрывала не сеть и не сервер, а сам телефон — ради экономии батареи. Ниже — числа, четыре причины по убыванию частоты и то, что снимается двумя касаниями.
Мы делаем Маяк. Сторож живости с тактом в три секунды, честная пометка пути на экране и проверка связи с вердиктом словами. 7 дней бесплатно после подтверждения почты, карта не нужна. Пробный доступ бесплатный и без карты; без почты — 3 дня.
🍎 Приложение только для Android — для iPhone его у нас пока нет.
«Отключился» — это три разных события
Прежде чем искать причину, стоит разделить случаи. Приложение записывает их по-разному, и это не формальность: у трёх событий три разных лечения.
| Что записано | За пять суток | Что это значит |
|---|---|---|
| Человек нажал «Отключиться» | 40 | Рука человека. Ни причин, ни лечения тут нет. |
| Туннель пропал сам | 9 | Связь оборвалась без участия человека — это и есть предмет статьи. |
| Приложение полечило само | 11 | Туннель перезаложен своими силами; человек чаще всего ничего не заметил. |
| Удачных подключений всего | 97 | Фон, на котором эти числа надо читать. |
Окно замера — 27–31 августа 2026 года. Девять обрывов на 97 подключений — это мало, и мы не собираемся делать вид, что построили статистику. Но у этих девяти есть форма, и она говорит больше, чем их количество. Вот сколько прожил каждый туннель до обрыва:
23 · 23 · 23 · 27 · 31 · 66 секунд, затем 27 минут, 3,5 часа и 11,6 часа.
Кучки две, и это две разные беды. Шесть обрывов из девяти случились в первые 66 секунд: туннель поднялся, но настоящего выхода за ним не оказалось — так бывает, когда соединение сложилось формально, а трафик через него не идёт (про это у нас есть отдельный разбор «Подключился, а интернета нет»). Три оставшихся — наоборот: связь работала часами и потерялась. Именно они и есть «VPN отключился сам по себе», и дальше речь про них.
Причина первая: телефон экономит батарею
Android по умолчанию ограничивает фоновую работу приложений. Это разумно — иначе полсотни программ будили бы телефон всю ночь, — но у приложения, которое держит туннель, это ограничение отбирает ровно то, ради чего оно запущено. Приложение не «падает»: система усыпляет его процесс, таймеры перестают тикать, служебные пакеты не уходят, и через какое-то время соединение оказывается мёртвым, хотя значок ещё висит.
Насколько это частая история, мы можем сказать по своим числам. В приложении есть проверка связи: человек нажимает кнопку, программа снимает несколько десятков фактов о телефоне и сети и выносит вердикт. Вместе с фактами она записывает и то, снято ли с неё ограничение фоновой работы. За 7–31 августа 2026 года таких проверок с настоящих телефонов — 158, с шести моделей.
| Модель | Проверок | Из них с ограниченным фоном |
|---|---|---|
| Samsung SM-S948B | 106 | 96 |
| vivo V2454DA | 28 | 24 |
| Samsung SM-G955F | 11 | 10 |
| Samsung SM-S936B | 10 | 10 |
| OnePlus 8 Pro | 2 | 2 |
| Google Pixel 6 | 1 | 1 |
| Всего | 158 | 143 |
143 проверки из 158. Три модели из шести не были свободны ни разу. И это не «включён режим энергосбережения» — его мы записываем отдельно, и во всех 225 отчётах диагностики (эти 158 плюс наши испытательные) он был включён ровно в одном, а «глубокий сон» застигнут в двух. Ограничение стоит просто по умолчанию, тихо, на обычном телефоне с полной батареей.
Второе число говорит уже не о состоянии, а о последствии. У проверки связи есть вердикт одним словом, и вот как они распределились на тех же настоящих телефонах:
| Вердикт | Сколько раз |
|---|---|
| Всё работает | 11 |
| Фоновая работа ограничена | 8 |
| Туннель поднят, но данные не идут | 5 |
| Сети нет вовсе | 3 |
| Сервер выхода недоступен | 1 |
Из 17 проверок, где что-то было не так, восемь назвали причиной именно ограничение фона — это больше, чем у любой другой причины: восемь против пяти у мёртвого туннеля и трёх у пропавшей сети.
Как снять, за два касания. Настройки телефона → Приложения → нужное приложение → Батарея → «Без ограничений» (на разных прошивках пункт называется «Работа в фоне», «Не ограничивать», Unrestricted). В нашем приложении до этого экрана ведёт кнопка прямо из проверки связи — искать в настройках не нужно.
Отдельная история — фирменные оболочки. У Huawei и Honor есть список «защищённых приложений», у Xiaomi — «Автозапуск» и «Экономия энергии» с отдельным выбором для каждой программы, у vivo и OPPO — то и другое под своими именами. Системного переключателя «Без ограничений» там мало: пока приложение не внесено в фирменный список, оболочка усыпит его по своим правилам. Наш собственный замер это подтверждает: у vivo ограничение стояло в 24 проверках из 28.
Причина вторая: тишина в туннеле
Вторая причина устроена совсем иначе, и её не видно вообще никак: туннель молчит.
Между телефоном и сервером всегда стоит чужое оборудование — домашний роутер, сеть оператора. Оно помнит, куда возвращать ответы, ограниченное время, и если по соединению давно ничего не шло, запись просто выбрасывается. Телефон при этом ничего не узнаёт: исходящие пакеты по-прежнему уходят, а входящие до него уже не доходят. Снаружи это выглядит как «VPN отключился сам», хотя ни одна из сторон соединение не закрывала.
Лечение известно давно и стоит одну строку в настройках: PersistentKeepalive — крошечный служебный пакет по таймеру. Он ничего не передаёт, его задача — чтобы запись о маршруте оставалась свежей.
У нас в конфигах стоит 10 секунд, а не привычные 25, и причина не в осторожности. На наших выходах работает модуль AmneziaWG, который отличает свой служебный пакет от обычных данных единственным способом — по длине. Но он же дописывает в начало каждого пакета заполнитель, поэтому длина не совпадает никогда: сервер принимает собственный служебный пакет за данные и ждёт на него ответа, которого по протоколу быть не может. Через 15 секунд ожидания он начинает договариваться о ключах заново — и так по кругу. Простаивающий телефон переустанавливал ключи примерно раз в 15,6 секунды: лишняя работа радио, лишний расход батареи, лишний трафик. Любой пакет от клиента этот отсчёт снимает, поэтому мы поставили 10 секунд — меньше 15 с запасом на одну потерю по дороге.
Практический вывод для тех, кто настраивает клиент руками: проверьте, что строка PersistentKeepalive в конфиге вообще есть. Без неё соединение живёт ровно до первой долгой паузы. Что означает каждая строка конфига, мы разобрали отдельно — «Как настроить AmneziaWG».
Причина третья: сеть сменилась
Человек вышел из дома, телефон ушёл с Wi-Fi на мобильную сеть. Адрес телефона стал другим, и сервер об этом пока не знает: он продолжает отвечать по старому. Протоколы семейства WireGuard такое переживают — сервер запоминает новый адрес из первого же пакета, который пришёл с правильной подписью. Но для этого пакет должен уйти. Если телефон в этот момент спит (см. причину первую) или в туннеле тишина (причина вторая), связь восстановится не сразу, а с задержкой, которую человек прочитает как «отвалилось».
Это единственная причина, где ждать смысла нет: сменилась сеть — туннель надо перекладывать сразу. Наше приложение так и делает; в журнале это отдельный вид самолечения — перепривязка к новой сети, за окно замера он встретился один раз.
Сюда же — две мелочи, которые часто списывают на VPN. Первая: на некоторых прошивках Wi-Fi засыпает вместе с экраном, и любое соединение, а не только туннель, умирает при блокировке. Вторая: сети в гостиницах и аэропортах со страницей входа периодически сбрасывают клиента обратно на эту страницу — туннель при этом рвётся всегда.
«Постоянный VPN» и блокировка соединений без него
В самом Android есть два системных переключателя, о которых знают немногие. Настройки → Сеть и интернет → VPN → шестерёнка рядом с приложением:
- «Постоянный VPN» — система сама поднимает туннель при загрузке телефона и восстанавливает его, если он упал;
- «Блокировать соединения без VPN» — то, что в англоязычных статьях называют kill switch: пока туннеля нет, интернета у телефона нет вовсе.
Первый включать стоит почти всем. У второго есть цена, и её надо знать заранее: с ним телефон не сможет открыть страницу входа в гостиничный Wi-Fi (а без неё не будет и интернета, чтобы поднять туннель), и любая поломка на нашей стороне превращается для вас в полное отсутствие связи, а не в «сайты открываются напрямую».
Важная тонкость для нашего приложения. Системный «Постоянный VPN» запускает нашу службу, а поднимает ли она туннель — решает переключатель автоподключения внутри приложения. Включать нужно оба: только системный переключатель без автоподключения даст запущенную службу и не даст соединения.
Что делает приложение само
Всё перечисленное — беды, с которыми приложение обязано справляться без человека. Как это устроено у нас:
- Такт раз в 3 секунды. Сторож живости живёт столько же, сколько туннель, и переживает закрытие экрана: свернули приложение — он продолжает работать. До конца июля 2026 сторож жил внутри экрана, и в шторке замирало последнее слово; мы намерили 42 секунды подряд, в течение которых человеку писали «Защищено» при выключенной сети.
- Судит по фактам, а не по значку. По порядку надёжности: есть ли вообще физическая сеть; вырос ли счётчик принятых байтов с прошлого такта; свежо ли рукопожатие с сервером. Всё это — локально и бесплатно, без запросов наружу.
- Лечит, но только по внешнему поводу. Правило одно: рабочий туннель перекладывают, когда случилось что-то новое снаружи (сменилась сеть, пропал трафик), а не когда просто прошло время. Автоматический перезапуск «на всякий случай» мы выкатывали дважды и дважды делали хуже.
- Перебирает пути. Если связь не вернулась, приложение проходит ступени подключения по очереди — об этом отдельный разбор «Три пути до сети».
За окно замера каждый из девяти обрывов сопровождался самолечением в ту же миллисекунду: приложение заметило пропажу и подняло связь заново, не дожидаясь человека.
Чего эти числа не говорят
Самая важная часть, и мы предпочитаем сказать её сами.
- Это не «статистика пользователей». 158 проверок связи с шести моделей и пяти учётных записей, девять обрывов за пять суток. Телефоны здесь — наши собственные и близких к проекту людей. Такой выборкой можно объяснять устройство, но нельзя обещать «у вас будет так же».
- «Фон ограничен» ≠ «из-за этого и оборвалось». 143 из 158 — это состояние телефона в момент проверки, а не доказанная причина обрыва. Причиной фон назван в восьми случаях — это утверждение строже, и именно оно тут главное.
- Три обрыва по 23 секунды пришли с трёх разных отладочных сборок — почти наверняка это один и тот же испытательный телефон, а не три разных случая.
- Мы не знаем причину каждого обрыва по отдельности. Поле «повод» в нашем журнале сейчас во всех девяти строках говорит одно и то же — «заметило самолечение», то есть отвечает на вопрос «кто увидел», а не «что случилось». Это наша недоделка, а не свойство мира, и мы называем её здесь прямо.
- Окно короткое. Журнал событий приложения заведён в конце августа 2026 года, проверки связи копятся с 7 августа. Через месяц у этих же строк будет другой вес.
Если после всего перечисленного связь всё равно рвётся — имеет смысл пройти четыре проверки за минуту и посмотреть, на каком именно шаге всё ломается.