El registro de texto de OpenVPN pone una fecha, una hora y un us= valor en la misma línea, y el último de los tres es la parte que los lectores malinterpretan. Es el componente de microsegundos de esa marca de tiempo, impreso sin relleno de ceros. No es un identificador de sesión, un nombre de usuario ni un contador, y tratarlo como tal convierte una fracción de segundo en una conclusión errónea y segura. Conviértalo como una fracción del segundo mostrado y el resto de la línea sigue siendo legible.

Qué significan las tres partes de la línea

La fecha y el segundo entero van primero, y us= lleva el resto por debajo de un segundo. Un valor de 12345 son doce mil trescientos cuarenta y cinco microsegundos, es decir, 0.012345 segundos, así que la línea describe 09:15:30.012345 cuando la hora impresa es 09:15:30. El contador vuelve a empezar con cada segundo nuevo, así que una línea posterior puede imprimir una fracción menor sin que ningún reloj vaya hacia atrás. Solo la marca de tiempo completa ordena los eventos.

2026-11-02 08:41:07 us=4820

La unidad es una millonésima de segundo, y seis dígitos de us= cubren todo el rango de 0.000000 a 0.999999. Cinco dígitos describen decenas de milisegundos, mientras que seis describen centenas de milisegundos hasta casi un segundo completo. Si una conversión produce una fracción mayor que uno, el punto decimal se movió y la aritmética es incorrecta. Hacerlo a mano significa dividir el entero impreso por un millón y sumarlo al segundo entero.

El relleno es la trampa. us=42 son cuarenta y dos microsegundos, escritos como .000042, no .42. Rellene el entero a seis posiciones por la izquierda antes de convertir, y el valor deja de parecer una fracción decimal de los dígitos que ve.

Convertir una línea sin calculadora

Tome el segundo impreso como base y trate us= como la fracción. Para 09:15:30 con us=12345 la forma decimal es 09:15:30.012345; para us=900000 es 09:15:30.900000. Los dígitos después del punto decimal son el entero rellenado, nunca el entero dividido por mil. Escribir primero la forma de seis dígitos evita la mayoría de los errores.

Si analiza registros en marcas de tiempo, analice la fecha, el segundo entero y la fracción juntos. Un analizador que asume milisegundos ordenará los eventos mal por un factor de mil, y la salida sigue pareciendo plausible.

Cuando el campo falta en el registro

La parte de microsegundos pertenece al formato de registro de texto y aparece solo cuando las marcas de tiempo detalladas están activadas. En el formateador de marcas de tiempo de OpenVPN 2.6 se añade cuando esa salida está activada y el valor almacenado no es cero. Un registro sin us= por lo tanto no dice nada sobre el reloj ni la compilación; normalmente significa que la verbosidad configurada es demasiado baja. Revise la configuración antes de culpar a la sincronización horaria.

El ajuste es fácil de confirmar desde la configuración del servidor. Ejecute el comando de abajo y lea el número que devuelve. La salida detallada de marcas de tiempo aparece con verbosidad 4, así que un valor más bajo explica el campo ausente sin ninguna otra falla. Ejecutar la misma configuración con --verb 4 muestra el campo en cuanto el demonio se reinicia con ese nivel.

grep -nE '^[[:space:]]*verb[[:space:]]+[0-9]' /etc/openvpn/server.conf

Aumentar la verbosidad añade detalle al registro; no mejora el reloj. Tras el reinicio, compare una línea nueva con una antigua para confirmar que el formato cambió, y baje el nivel otra vez cuando la pregunta esté respondida.

Qué no demuestran seis dígitos

Seis dígitos describen la resolución, y la resolución no dice nada sobre si dos hosts coinciden en la hora. Un cliente y un servidor pueden imprimir microsegundos mientras sus relojes difieren en segundos. Cuando correlacione eventos entre máquinas, anote la zona horaria y cualquier desfase conocido, y prefiera un campo que nombre el par o la sesión por encima de cualquier marca de tiempo. Dos líneas que comparten una fracción no son necesariamente la misma conexión.

Un recolector puede sellar cada línea a su llegada, lo que añade una segunda marca de tiempo que pertenece al recolector y no a OpenVPN. Identifique cuál está leyendo antes de compararlas, y conserve la línea cruda para que la comparación pueda repetirse.

Un valor nuevo de us= no demuestra que haya entrado un cliente nuevo, y uno repetido no demuestra un evento duplicado. Los campos de par y conexión responden a esas preguntas.

Artículos relacionados