Il log testuale di OpenVPN mette una data, un’ora e un us= valore sulla stessa riga, e l’ultimo dei tre è la parte che i lettori fraintendono. È il componente in microsecondi di quella marca temporale, stampato senza riempimento con zeri. Non è un identificativo di sessione, un nome utente o un contatore, e trattarlo come tale trasforma una frazione di secondo in una conclusione errata e sicura. Convertilo come frazione del secondo mostrato e il resto della riga resta leggibile.

Che cosa significano le tre parti della riga

La data e il secondo intero vengono prima, e us= porta il resto sotto un secondo. Un valore di 12345 è dodicimila trecentoquarantacinque microsecondi, cioè 0.012345 secondi, quindi la riga descrive 09:15:30.012345 quando l’ora stampata è 09:15:30. Il contatore riparte con ogni nuovo secondo, così una riga successiva può stampare una frazione più piccola senza che nessun orologio vada all’indietro. Solo la marca temporale completa ordina gli eventi.

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

L’unità è un milionesimo di secondo, e us= coprono l’intero intervallo da 0.000000 a 0.999999. Cinque cifre descrivono decine di millisecondi, mentre sei descrivono centinaia di millisecondi fino a quasi un secondo intero. Se una conversione produce una frazione maggiore di uno, il punto decimale si è spostato e l’aritmetica è sbagliata. Farlo a mano significa dividere l’intero stampato per un milione e aggiungerlo al secondo intero.

Il riempimento è la trappola. us=42 sono quarantadue microsecondi, scritti come .000042, non .42. Completa l’intero a sei posizioni a sinistra prima di convertire, e il valore smette di sembrare una frazione decimale delle cifre che vedi.

Convertire una riga senza calcolatrice

Prendi il secondo stampato come base e tratta us= come la frazione. Per 09:15:30 con us=12345 la forma decimale è 09:15:30.012345; per us=900000 è 09:15:30.900000. Le cifre dopo il punto decimale sono l’intero riempito, mai l’intero diviso per mille. Scrivere prima la forma a sei cifre evita la maggior parte degli errori.

Se analizzi i log in marche temporali, analizza insieme la data, il secondo intero e la frazione. Un parser che presume millisecondi ordinerà gli eventi in modo errato di un fattore mille, e l’output sembra comunque plausibile.

Quando il campo manca dal log

La parte in microsecondi appartiene al formato di log testuale e compare solo quando le marche temporali dettagliate sono abilitate. Nel formattatore di marche temporali di OpenVPN 2.6 viene aggiunta quando quell’output è attivo e il valore memorizzato non è zero. Un log senza us= quindi non dice nulla sull’orologio né sulla build; di solito significa che la verbosità configurata è troppo bassa. Controlla la configurazione prima di dare la colpa alla sincronizzazione dell’ora.

L’impostazione è facile da confermare dalla configurazione del server. Esegui il comando qui sotto e leggi il numero che restituisce. L’output dettagliato delle marche temporali compare con verbosità 4, quindi un valore più basso spiega il campo mancante senza altri guasti. Eseguire la stessa configurazione con --verb 4 mostra il campo non appena il demone si riavvia a quel livello.

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

Aumentare la verbosità aggiunge dettagli al log; non migliora l’orologio. Dopo il riavvio, confronta una riga nuova con una vecchia per confermare che il formato è cambiato, e abbassa di nuovo il livello quando la domanda ha una risposta.

Che cosa non dimostrano sei cifre

Sei cifre descrivono la risoluzione, e la risoluzione non dice nulla sull’accordo di due host sull’ora. Un client e un server possono entrambi stampare microsecondi mentre i loro orologi differiscono di secondi. Quando correli eventi tra macchine, annota il fuso orario e qualsiasi scostamento noto, e preferisci un campo che nomini il peer o la sessione rispetto a qualsiasi marca temporale. Due righe che condividono una frazione non sono necessariamente la stessa connessione.

Un collettore può marcare ogni riga all’arrivo, aggiungendo una seconda marca temporale che appartiene al collettore e non a OpenVPN. Identifica quale stai leggendo prima di confrontarle, e conserva la riga grezza perché il confronto possa essere rifatto.

Un valore nuovo di us= non dimostra che un nuovo client abbia effettuato l’accesso, e uno ripetuto non dimostra un evento duplicato. I campi peer e connessione rispondono a queste domande.

Articoli correlati