Вік рукостискання WireGuard — не тайм-аут сесії
Таймери перевибору ключів керують ключами, а не доступом користувачів. Читання latest-handshakes говорить про стан протоколу одного піра, а не про те, чи минув термін його авторизації.
Пір, який перестав пропускати трафік, не втрачає через це свій ключ, а свіже рукостискання не доводить, що хтось поновив дозвіл на його використання. Таймери WireGuard тримають ключі свіжими, а пакети — в русі; вони не моделюють користувача, який виходить із системи через задану кількість хвилин. Тут плутають три питання, і кожне має інші докази. Це розрізнення визначає, яким інструментом користуватися.
Три питання, один вивід команди
Оператори питають, чи доступний пір, чи був він активний і чи досі дозволений. Перше — стан протоколу, друге — лічильники трафіку, третє — авторизація. Лише перші два можна прочитати з інтерфейсу WireGuard, і їх постійно використовують, щоб відповісти на всі три.
| Question | Evidence it needs | What does not answer it |
|---|---|---|
| Is the peer reachable now? | A recent handshake and a working return path | An interface that exists |
| Has it been active? | Transfer counters moving over time | A handshake timestamp alone |
| Is access still granted? | The configuration or controller that authorizes it | Any 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
Потім перевіряйте межу, а не ярлик. Підтвердьте, що пір відхиляється після терміну, що шлях поновлення працює і що стан переживає перезавантаження менеджера. Вік рукостискання — корисний операційний сигнал, і це не запис про доступ.