Una sola línea que dice «último handshake, hace dos minutos» parece prueba de actividad continua y es más débil que eso. Marca el último intercambio de claves completado para un par, que ocurre con un temporizador fijo de renovación de claves mientras fluye el tráfico y se detiene cuando el par se calla. Que esa hora vincule a una persona con algo depende de los identificadores guardados junto a ella y de los relojes de ambos sistemas. Aquí está cómo se comporta el registro en las dos pilas más comunes y dónde falla su lectura.

Dos registros, dos significados distintos

WireGuard guarda una marca de tiempo de handshake por par, sustituida en cada renovación de claves, además de contadores de bytes en cada dirección. OpenVPN suele registrar el inicio de una sesión, una desconexión y lo que añada la verbosidad configurada, lo que hace que la unidad del registro sea una sesión y no un intercambio de claves.

Esa diferencia decide qué significa una ausencia:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

Por qué un handshake no es uso continuo

WireGuard renueva las claves aproximadamente cada dos minutos mientras hay datos que proteger, y un par que queda inactivo simplemente se detiene. Así, un handshake antiguo puede significar que el portátil duerme, que el usuario dejó de trabajar o que la red descartó los paquetes que habrían desencadenado el siguiente intercambio. La marca de tiempo es un límite inferior de la actividad, no un rastreador de la atención.

El error inverso es igual de fácil. El tráfico keepalive persistente mantiene el túnel caliente en un dispositivo inactivo, así que un handshake reciente puede aparecer en una máquina que nadie ha tocado en una hora. Los contadores de bytes ayudan aquí, porque distinguen un par que envía datos reales de uno que solo intercambia keepalives, y también dicen qué dirección llevó el volumen. Nada de eso revela un destino, una página ni una consulta.

Los identificadores viajan con la marca de tiempo

Una hora sin cuenta, clave pública ni dirección de origen es un huérfano. Empareje la marca de tiempo con la identidad del par y la observación se vuelve enlazable: una clave pública persiste entre cambios de dirección, mientras que una dirección de origen puede ser compartida por muchos abonados tras la traducción del operador.

Esa asimetría es lo que la mayoría de los debates sobre privacidad pasa por alto. La dirección parece anónima porque es compartida, y la clave parece técnica porque es larga, pero la clave es el identificador estable. Conservar un campo y descartar el otro cambia el riesgo de correlación sin cambiar la precisión aparente.

La correlación en sí es la preocupación documentada. Unir una hora de conexión con un evento de inicio de sesión del proveedor, un ticket de soporte o un registro de pago puede asociar una identidad con actividad incluso cuando nunca se anotó ningún destino, y por eso el emparejamiento importa más que el formato.

La correlación entre sistemas exige cuidado con los relojes

Dos sistemas que informan del mismo momento rara vez coinciden hasta el segundo. Uno puede aplicar un desfase de zona horaria en su salida, otro puede funcionar con un reloj desviado unos segundos, y una máquina virtual puede derivar tras una suspensión.

Antes de concluir que dos eventos ocurrieron juntos, convierta ambos a la misma zona y compruebe el desfase en el registro sin procesar y no en la visualización. Si el hueco que mide es menor que la desviación probable, no tiene ningún orden.

La regla práctica es conservar la precisión que necesita la tarea de diagnóstico y nada más. Un recuento de sesiones por hora responde a una pregunta de disponibilidad sin guardar un historial por cuenta, y un agregado puede retenerse mucho más tiempo que las filas sin procesar de las que proviene.

Lea el registro con comandos, no con imaginación

Imprima los campos sobre los que va a razonar, en las unidades que almacena la herramienta y no en las que muestra un panel.

Estas dos líneas muestran la edad del handshake y los contadores de bytes de cada par de WireGuard, y luego el mismo tipo de material de un archivo de estado de OpenVPN:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

Compare la edad con el intervalo de renovación de claves antes de sacar una conclusión, y lea los contadores junto con ella. Un par con un handshake reciente y casi ninguna transferencia intercambia keepalives, mientras que un par con un handshake antiguo y contadores grandes estuvo ocupado hasta que se detuvo. Ninguna de las dos líneas dice qué se hizo, y decirlo con claridad es más exacto que insinuar que la marca de tiempo demuestra una visita.

Artículos relacionados