OpenVPN:s textlogg sätter ett datum, en tid och ett us= värde på samma rad, och det sista av de tre är den del som läsare missförstår. Det är mikrosekundskomponenten i den tidsstämpeln, utskriven utan nollutfyllnad. Det är inte en sessionsidentifierare, ett användarnamn eller en räknare, och att behandla det som ett gör en bråkdel av en sekund till en självsäker felaktig slutsats. Konvertera det som en bråkdel av den visade sekunden och resten av raden förblir läsbar.

Vad de tre delarna av raden betyder

Datumet och hela sekunden kommer först, och us= bär resten under en sekund. Ett värde på 12345 är tolvtusen trehundrafyrtiofem mikrosekunder, vilket är 0.012345 sekunder, så raden beskriver 09:15:30.012345 när den utskrivna tiden är 09:15:30. Räknaren börjar om för varje ny sekund, så en senare rad kan skriva ut en mindre bråkdel utan att någon klocka går baklänges. Bara den fullständiga tidsstämpeln ordnar händelser.

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

Enheten är en miljondels sekund, och sex siffror us= täcker hela intervallet från 0.000000 till 0.999999. Fem siffror beskriver tiotal millisekunder, medan sex beskriver hundratal millisekunder upp till nästan en hel sekund. Om en konvertering ger en bråkdel större än ett har decimalpunkten flyttats och aritmetiken är fel. Att göra det för hand innebär att dividera det utskrivna heltalet med en miljon och lägga det till hela sekunden.

Utfyllnaden är fällan. us=42 är fyrtiotvå mikrosekunder, skrivna som .000042, inte .42. Fyll ut heltalet till sex platser till vänster innan du konverterar, och värdet slutar se ut som en decimalbråkdel av siffrorna du ser.

Konvertera en rad utan miniräknare

Ta den utskrivna sekunden som bas och behandla us= som bråkdelen. För 09:15:30 med us=12345 är decimalformen 09:15:30.012345; för us=900000 är den 09:15:30.900000. Siffrorna efter decimalpunkten är det utfyllda heltalet, aldrig heltalet delat med tusen. Att skriva sexsiffrig form först förhindrar de flesta fel.

Om du parsar loggar till tidsstämplar, parsa datumet, hela sekunden och bråkdelen tillsammans. En parser som antar millisekunder ordnar händelser fel med en faktor tusen, och utdata ser fortfarande rimliga ut.

När fältet saknas i loggen

Mikrosekundsdelen tillhör textloggformatet och visas bara när detaljerade tidsstämplar är aktiverade. I tidsstämpelformateraren i OpenVPN 2.6 läggs den till när den utdatan är på och det lagrade värdet inte är noll. En logg utan us= säger därför ingenting om klockan eller bygget; vanligtvis betyder det att den konfigurerade detaljnivån är för låg. Kontrollera konfigurationen innan du skyller på tidssynkroniseringen.

Inställningen är lätt att bekräfta från serverkonfigurationen. Kör kommandot nedan och läs talet det returnerar. Detaljerad tidsstämpelutdata visas vid detaljnivå 4, så ett lägre värde förklarar det saknade fältet utan något annat fel. Att köra samma konfiguration med --verb 4 visar fältet när daemonen startar om med den nivån.

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

Högre detaljnivå lägger till detaljer i loggen; det förbättrar inte klockan. Efter omstarten kan du jämföra en ny rad med en gammal för att bekräfta att formatet ändrats, och sänka nivån igen när frågan är besvarad.

Vad sex siffror inte bevisar

Sex siffror beskriver upplösningen, och upplösningen säger ingenting om huruvida två värdar är överens om tiden. En klient och en server kan båda skriva ut mikrosekunder medan deras klockor skiljer sig åt med sekunder. När du korrelerar händelser mellan maskiner, notera tidszonen och eventuell känd förskjutning, och föredra ett fält som namnger peer eller session framför någon tidsstämpel. Två rader som delar en bråkdel är inte nödvändigtvis samma anslutning.

En insamlare kan stämpla varje rad vid ankomst, vilket lägger till en andra tidsstämpel som tillhör insamlaren och inte OpenVPN. Identifiera vilken du läser innan du jämför dem, och behåll den råa raden så att jämförelsen kan göras om.

Ett färskt us=-värde bevisar inte att en ny klient loggade in, och ett upprepat bevisar inte en dubbel händelse. Peer- och anslutningsfälten svarar på de frågorna.

Relaterade artiklar