Почему VPN постоянно отваливается и как заставить его держаться
Шесть причин в том порядке, в каком их надо проверять: сон устройства, смена сети, MTU, keepalive, оптимизация батареи и осознанная блокировка. К каждой — конкретная настройка.

- Большинство «отвалов» — не отказ туннеля. Это туннель, который снесла операционная система, или конфиг, которому не сказали продолжать разговор в простое.
- Начинайте с keepalive. Туннель WireGuard за домашним роутером замолкает, роутер забывает запись трансляции, и обратно ничего не приходит. Строка PersistentKeepalive = 25 закрывает это.
- MTU стоит за самым странным симптомом: соединение держится, текстовые страницы грузятся, а крупные загрузки и видео висят вечно. Поставьте 1360 и перепроверьте.
- На телефонах клиента убивает оптимизация батареи. On-Demand для iOS и Always-on плюс исключение из энергосбережения для Android — две настройки, которые решают.
- Если рвётся только в одной стране или в одной сети — это не баг. Это распознавание протокола, и лечится оно маскирующим протоколом, а не настройкой.
VPN, который отваливается каждые несколько минут, хуже, чем его отсутствие: непонятно, какой трафик прошёл через туннель, а какой мимо. Обиднее всего, что соединение обычно не сломано ни в каком осмысленном значении — что-то на устройстве, в роутере или на пути намеренно его сняло. Почти всё сводится к шести причинам. Здесь они выстроены по частоте, так что идите по списку сверху, а не начинайте с экзотики.
Первая: нет keepalive, и роутер про вас забыл
Самая частая причина и наименее известная. WireGuard намеренно молчалив: он шлёт пакеты только когда есть что отправить. Эта экономность сталкивается с тем, как устроены домашние роутеры.
Роутер держит таблицу соответствий между вашим внутренним устройством и внешним соединением. Записи протухают в простое, часто через тридцать-шестьдесят секунд. Если туннель минуту ничего не отправлял, запись исчезает, и пакетам от сервера некуда возвращаться. Исходящий трафик мгновенно восстанавливает связь — поэтому соединение будто работает, стоит его тронуть, и будто мертво каждый раз, когда вы к нему возвращаетесь.
Лечится одной строкой в секции Peer вашей конфигурации:
- PersistentKeepalive = 25. Отправляет крошечный пакет каждые 25 секунд — меньше любого распространённого таймаута, — и запись остаётся живой при ничтожном расходе трафика и батареи.
В наших конфигах строка уже есть. Если вы собрали туннель у провайдера, который её не кладёт, добавьте сами: она относится к Peer, а не к Interface, и в неверной секции молча не делает ничего.
Вторая: устройство ушло в сон
Ноутбуки усыпляют сетевые интерфейсы, и после пробуждения туннель протухший: интерфейс есть, клиент показывает «подключено», пакеты не идут. Мобильные устройства делают то же самое жёстче, полностью замораживая фоновые приложения.
Как выглядит: VPN всегда мёртв после того, как крышку закрывали, а ручное переподключение всегда срабатывает сразу.
На десктопе лечится клиентом, который ловит пробуждение и пересобирает туннель, — официальные клиенты WireGuard это умеют. На macOS дополнительно проверьте, включён ли On-Demand в свойствах туннеля. Если у вас самосборная схема на wg-quick, повесьте пересоздание на хук пробуждения или смиритесь с ручным переподключением после каждого сна.
Третья: вы сменили сеть
Вышли из дома — телефон переключился с Wi-Fi на мобильный интернет. Локальный адрес изменился, и туннель, привязанный к прежнему интерфейсу, шлёт пакеты с адреса, которого сервер не знает.
WireGuard справляется с этим лучше большинства протоколов благодаря роумингу: сервер принимает новый адрес пира, как только получает от него аутентифицированный пакет. Но работает это только если клиент продолжает отправлять — и вы снова возвращаетесь к keepalive. Без него роуминг просто не на чем запустить.
На iOS включите On-Demand в свойствах туннеля, чтобы соединение пересобиралось при смене сети само. На Android то же самое делает Always-on VPN: Настройки, Сеть и интернет, VPN, рядом с вашим клиентом.
Четвёртая: MTU, причина самого странного симптома
Если соединение держится, но ведёт себя странно — текстовые страницы открываются, большие загрузки стоят, видео буферизуется бесконечно, часть сайтов не догружается — почти всегда виноват MTU.
Каждый пакет прибавляет в размере, когда WireGuard его оборачивает. Если результат превышает то, что позволяет путь, пакет нужно фрагментировать или отбросить. Фрагментацию часто запрещают, а уведомление, которое подсказало бы устройству слать пакеты поменьше, нередко фильтруют, — и устройство продолжает отправлять пакеты, исчезающие в никуда. Мелкие запросы проходят, крупные передачи нет: ровно та картина, которую описывают словами «подключено, но не работает».
Лечится явным заданием MTU в секции Interface. Начните с 1360 и снижайте шагами по 40, если симптом остался. На мобильных сетях и PPPoE-подключениях часто нужны значения около 1280. Это стоит доли процента скорости и полностью снимает проблему.
- «Подключено, но ничего не грузится» — это не проблема соединения. Это почти всегда проблема размера пакета, и она решается одной строкой.
Пятая: телефон убил клиент
Оптимизация батареи в Android агрессивно завершает фоновые приложения, и VPN-клиенты — первые в очереди. Часть фирменных оболочек ведёт себя куда жёстче стокового Android; поведение хорошо задокументировано у разных производителей, и именно поэтому туннель умирает в кармане и никогда не умирает, пока вы смотрите на экран.
Что делать на Android, по убыванию эффекта:
- Исключить клиент из оптимизации батареи. Настройки, Приложения, ваш VPN-клиент, Батарея, режим «Без ограничений».
- Включить Always-on VPN. Система сама пересоздаёт туннель и не зависит от того, выжило ли приложение.
- Включить «Блокировать соединения без VPN». Это системный kill switch: пока он включён, трафик мимо туннеля вообще не уходит.
На iOS эквивалент — On-Demand, и система соблюдает его надёжно. iOS строже к фоновому выполнению, но лучше держит VPN-профиль, потому что профиль — системный объект, а не процесс приложения.
Шестая: его рвут намеренно
Первые пять причин — случайности. Эта нет, и у неё характерная подпись: туннель подключается и умирает через предсказуемый интервал, либо работает в одной сети и никогда в другой, либо перестал работать по всей стране в день, который вы можете назвать.
У стандартного WireGuard узнаваемое рукопожатие, и глубокая инспекция трафика опознаёт его за миллисекунды. После опознания его можно отбросить, придушить по скорости или дать подключиться и убить — последний вариант сбивает с толку намеренно, потому что выглядит как нестабильная связь, а не как политика.
Никакое значение MTU это не лечит: дело не в размере пакета, а в его внешнем виде. Ответ — протокол, чей трафик не похож на VPN: AmneziaWG, который добивает и рандомизирует рукопожатие, или VLESS/Reality, имитирующий обычный TLS. Наше сравнение трёх протоколов объясняет, когда каждый стоит накладных расходов, а в наши конфиги профили AmneziaWG входят именно для этого случая.
Конфиги, в которых всё это уже учтено.
Keepalive, разумный MTU и профили AmneziaWG идут в каждом конфиге Cypher VPN. Без аккаунта и почты, крипта от $1.99 за неделю.
Порядок диагностики, который экономит вечер
Вместо того чтобы менять пять настроек разом, сперва определите слой:
- Рвётся в одной сети или во всех? В одной — блокировка или таймауты того роутера. Во всех — ваше устройство.
- Рвётся в простое или под нагрузкой? В простое — keepalive. Под нагрузкой — MTU.
- Держится ли при включённом экране? Если да — это энергосбережение, а не туннель.
- Ведёт ли себя так же другая локация? Если один выход стабилен, а другой нет — дело в пути, а не в вашей конфигурации.
- Умирает ли через одинаковый интервал? Предсказуемое число секунд каждый раз — сильный признак активного вмешательства, а не случайности.
FAQ
Почему VPN постоянно переподключается на мобильном интернете?
Обычно складываются две причины: мобильная сеть меняет адрес чаще, чем Wi-Fi, а оптимизация батареи замораживает клиент между обращениями. Включите On-Demand на iOS или Always-on плюс исключение из энергосбережения на Android и убедитесь, что PersistentKeepalive задан.
Опасно ли переподключение?
Зависит от kill switch. В промежутке между обрывом и восстановлением трафик может уйти обычным маршрутом и раскрыть ваш настоящий адрес. Опция Android «Блокировать соединения без VPN» предотвращает это на системном уровне, и потому она важнее самого переподключения.
Почему подключено, но ничего не грузится?
В подавляющем большинстве случаев MTU. Пропишите MTU 1360 в секции Interface и перепроверьте, при необходимости снижая дальше. Живой туннель при висящих передачах — классическая подпись проблемы с размером пакета.
VPN работал, а потом перестал по всей стране. Почему?
Такое совпадение по времени указывает на блокировку, а не на неисправность. Стандартный WireGuard распознаётся по отпечатку и фильтруется как категория. Переходите на маскирующий профиль вроде AmneziaWG: перенастройка обычного WireGuard тут не помогает.
Помогает ли смена локации?
Она подсказывает, где проблема. Если один выход стабилен, а другой нет — дело в пути или в конкретном хосте. Если все выходы ведут себя одинаково, причина на вашем устройстве или в роутере.
Меньше обрывов по умолчанию.
Keepalive и AmneziaWG в каждом конфиге, три выхода: Нидерланды, Румыния, Финляндия. Без аккаунта и почты. Telegram: t.me/CypherESIM_bot