Туннель поднят, всё работает. Через несколько минут страницы перестают открываться. Переподключение — и снова порядок, до следующего раза.

Причин у такого поведения четыре, и различаются они по характеру: важно, происходит обрыв в простое или под нагрузкой, на всех сетях или на одной, сразу или через фиксированное время.

Причина 1. Тайм-аут NAT в простое

Самая частая. Роутер по пути хранит запись о вашем соединении, пока по нему идёт трафик. Как только трафик прекращается, запись удаляется по тайм-ауту — для UDP обычно через 30–60 секунд, а на оборудовании оператора и того быстрее.

Сервер после этого не может достучаться до вас: маршрут обратно забыт.

Признак: обрывы происходят в паузах, а под нагрузкой соединение живёт часами. После обрыва первый же исходящий запрос обычно всё восстанавливает — но с задержкой.

Лечение — одна строка:

[Peer]
PersistentKeepalive = 25

Клиент начинает раз в 25 секунд отправлять крошечный служебный пакет, и запись в таблице трансляции не протухает. Значение выбрано с запасом относительно самых коротких распространённых тайм-аутов.

Если вы за CGNAT, эта строка обязательна: там записи вычищаются агрессивнее, чем на домашнем роутере.

Причина 2. Энергосбережение

Смартфоны и планшеты выгружают фоновые приложения, чтобы экономить заряд. VPN-клиент — обычное приложение, и под это правило он попадает.

Признак: обрывается только когда экран выключен или устройство долго лежит без дела. При активном использовании проблем нет.

Лечение зависит от системы. На Android найдите клиент в настройках батареи и снимите ограничения фоновой работы; у ряда производителей есть дополнительный собственный список автозапуска, и в него приложение надо добавить отдельно. На приставках Android TV выгрузка происходит ещё агрессивнее.

Отдельно стоит понимать: PersistentKeepalive держит соединение живым, но и будит устройство раз в 25 секунд. Это небольшой, но постоянный расход. Если обрывы вызваны только энергосбережением, а не NAT, лучше решать вопрос настройками системы, а не keepalive.

Причина 3. Смена сети

Переход с Wi-Fi на мобильную сеть, из одной точки доступа в другую, выход из зоны покрытия.

WireGuard переживает это лучше других протоколов: сервер узнаёт новый адрес клиента из первого же корректно подписанного пакета и продолжает диалог. Разрыва в привычном смысле не происходит.

Но работает это только в сторону сервера. Обратная ситуация — когда адрес меняет сам сервер — так не лечится.

Признак: обрывы совпадают со сменой сети и заметны при перемещении, а на стационарном подключении их нет.

Лечение: обычно ничего не требуется, соединение восстанавливается само за секунды. Если не восстанавливается — включите в клиенте автоматическое переподключение и убедитесь, что в конфигурации домен, а не IP.

Причина 4. Маршрут теряется при переподключении

Более редкий случай, но узнаваемый: после выхода из спящего режима или перезапуска сетевой службы туннель формально поднят, а трафик в него не идёт.

Признак: рукопожатие есть, счётчики не растут, помогает только полное wg-quick down и up.

Лечение: проверьте, не перезаписывает ли что-то маршрут по умолчанию — типичные виновники — менеджер сети и клиенты, поднимающие собственные туннели. Диагностика через ip route get 1.1.1.1 описана в разборе «подключился, но интернета нет».

Как различить по характеру

Когда рвётся Причина
В простое, через фиксированное время тайм-аут NAT
При выключенном экране энергосбережение
При перемещении и смене сети роуминг
После сна или перезапуска сети маршрут
Под нагрузкой, с потерями канал или транспорт

Последняя строка — отдельная история. Если соединение деградирует именно под нагрузкой, дело не в тайм-аутах, а в качестве канала: часть сетей плохо обращается с UDP, и WireGuard страдает первым. Тогда помогает не настройка, а смена транспорта на TCP.

Проверка вместо догадок

Оставьте открытым ping до внешнего адреса и не трогайте устройство. Засеките, через какое время прекратятся ответы:

  • около 30–60 секунд — почти наверняка NAT, ставьте keepalive;
  • несколько минут и только при погасшем экране — энергосбережение;
  • время каждый раз разное, с потерями до обрыва — качество канала.

Одно измерение экономит час перебора настроек.

Коротко

Обрывы в простое лечатся строкой PersistentKeepalive = 25 — это самая частая причина и самое дешёвое лечение. Обрывы при погасшем экране — настройками энергосбережения. Обрывы при перемещении обычно проходят сами. А если соединение деградирует под нагрузкой, настройки не помогут: там дело в канале или в том, как сеть обращается с UDP.