Пир, который перестал пропускать трафик, не теряет из-за этого свой ключ, а свежее рукопожатие не доказывает, что кто-то продлил разрешение на его использование. Таймеры WireGuard поддерживают ключи свежими, а пакеты — в движении; они не моделируют пользователя, который выходит из системы через заданное число минут. Здесь путают три вопроса, и у каждого свои доказательства. Это различие определяет, каким инструментом пользоваться.

Три вопроса, один вывод команды

Операторы спрашивают, доступен ли пир, был ли он активен и разрешён ли он до сих пор. Первое — состояние протокола, второе — счётчики трафика, третье — авторизация. Только первые два можно прочитать с интерфейса WireGuard, и их постоянно используют, чтобы ответить на все три.

QuestionEvidence it needsWhat does not answer it
Is the peer reachable now?A recent handshake and a working return pathAn interface that exists
Has it been active?Transfer counters moving over timeA handshake timestamp alone
Is access still granted?The configuration or controller that authorizes itAny protocol timer

Читайте строки как три отдельных расследования. Первые две дешёвы, и на них можно ответить по собственным счётчикам интерфейса. Третья требует конфигурации, которая предоставляет доступ, а она живёт в другом файле или другой системе. Выбрать не ту строку — значит попросить таймер протокола выполнять работу политики.

Чем на самом деле управляют таймеры

Протокол определяет константы для повтора рукопожатия, ротации транспортных ключей и отбрасывания пакетов, защищённых старым ключом. Они реагируют на трафик и на состояние, а не на календарь и не на политику, которая говорит, что человек может быть подключён до 17:00. Поэтому простаивающий пир может часами выглядеть неактивным и при этом оставаться авторизованным.

PersistentKeepalive часто принимают за недостающий тайм-аут. Он отправляет аутентифицированные пустые пакеты, чтобы поддерживать сопоставление NAT живым, а установка его в ноль останавливает эти пакеты, ничего не отзывая.

Читайте состояние времени выполнения по каждому пиру, используя открытый ключ, а не комментарий:

wg show wg0 latest-handshakes
wg show wg0 transfer

Свежее рукопожатие говорит о том, что одно рукопожатие завершилось. Оно не говорит, что частная служба за туннелем доступна, а старая метка времени может принадлежать пиру, который просто молчит.

Почему простаивающий пир — не вышедший из системы

В WireGuard нет объекта сессии с началом и концом. Пир — это открытый ключ с разрешёнными адресами, а рукопожатие, защищающее его трафик, заменяется по мере необходимости без какого-либо видимого пользователю входа. Считать отсутствие недавнего трафика выходом из системы — значит перевернуть модель.

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

Поместите срок туда, где живёт авторизация

Если доступ должен закончиться в определённое время, срок принадлежит тому, что предоставляет доступ. Контроллер, который выдаёт конфигурации пиров, может требовать повторного одобрения, прежде чем выдать новую, и это свойство контроллера, а не скрытый параметр на интерфейсе.

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

sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0

Затем проверяйте границу, а не ярлык. Убедитесь, что пир отклоняется после срока, что путь продления работает и что состояние переживает перезагрузку менеджера. Возраст рукопожатия — полезный операционный сигнал, и это не запись о доступе.

Похожие статьи