La antigüedad del handshake de WireGuard no es un tiempo de espera de sesión
Los temporizadores de renovación de claves gobiernan las claves, no el acceso de los usuarios. Leer latest-handshakes informa sobre el estado de protocolo de un par, no sobre si su autorización ha caducado.
Un par que deja de pasar tráfico no pierde por ello su clave, y un handshake reciente no demuestra que alguien haya renovado el permiso para usarla. Los temporizadores de WireGuard mantienen las claves frescas y los paquetes en movimiento; no modelan a un usuario que cierra sesión tras un número fijo de minutos. Aquí se confunden tres preguntas, y cada una tiene pruebas distintas. La distinción decide qué herramienta se usa.
Tres preguntas, una salida de comando
Los operadores preguntan si un par es alcanzable, si ha estado activo y si todavía está permitido. La primera es estado de protocolo, la segunda son contadores de tráfico y la tercera es autorización. Solo las dos primeras pueden leerse de una interfaz de WireGuard, y se usan habitualmente para responder a las tres.
| 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 |
Lea las filas como tres investigaciones separadas. Las dos primeras son baratas y pueden responderse con los contadores de la propia interfaz. La tercera necesita la configuración que concede el acceso, que vive en otro archivo o en otro sistema. Elegir la fila equivocada es pedirle a un temporizador de protocolo que haga el trabajo de una política.
Qué gobiernan realmente los temporizadores
El protocolo define constantes para el reintento del handshake, la rotación de claves de transporte y el rechazo de paquetes protegidos por una clave antigua. Responden al tráfico y al estado, no a un calendario ni a una política que diga que una persona puede conectarse hasta las 17:00. Por eso un par inactivo puede parecer inactivo durante horas y seguir autorizado.
PersistentKeepalive suele confundirse con el tiempo de espera que falta. Envía paquetes vacíos autenticados para mantener viva una asignación NAT, y ponerlo a cero detiene esos paquetes sin revocar nada.
Lea el estado en ejecución por par, usando la clave pública en lugar del comentario:
wg show wg0 latest-handshakes
wg show wg0 transfer
Un handshake reciente dice que se completó un handshake. No dice que el servicio privado detrás del túnel sea alcanzable, y una marca de tiempo antigua puede pertenecer a un par que simplemente está callado.
Por qué un par inactivo no es un par desconectado
WireGuard no tiene un objeto de sesión con un inicio y un final. Un par es una clave pública con direcciones permitidas, y el handshake que protege su tráfico se sustituye según sea necesario sin un inicio de sesión visible para el usuario. Tratar la ausencia de tráfico reciente como un cierre de sesión invierte el modelo.
Si la queja real es que una conexión falla tras estar inactiva, la causa suele estar en otro sitio: una asignación NAT caducada, un dispositivo que se durmió o un cortafuegos que descartó el estado. Pruebe enviando tráfico desde el otro lado y comenzando un flujo nuevo, y compare qué cambia.
Ponga el plazo donde vive la autorización
Si el acceso debe terminar a una hora concreta, el plazo pertenece a lo que concede el acceso. Un controlador que emite configuraciones de pares puede exigir una aprobación renovada antes de entregar una nueva, y eso es una propiedad del controlador y no un parámetro oculto en la interfaz.
Para los pares gestionados a mano, la eliminación tiene que llegar a dos sitios: la interfaz en ejecución y la configuración guardada. Eliminar el par solo en tiempo de ejecución lo deshace un reinicio o un bucle de reconciliación, que restaura la identidad que usted creía caducada:
sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0
Después pruebe el límite en lugar de la etiqueta. Confirme que el par se rechaza después del plazo, confirme que la ruta de renovación funciona y confirme que el estado sobrevive a una recarga del gestor. La antigüedad de un handshake es una señal operativa útil, y no es un registro de acceso.