Nhật ký văn bản của OpenVPN ghi một ngày, một giờ và một us= giá trị trên cùng một dòng, và phần cuối trong ba phần là phần mà người đọc hiểu sai. Đó là thành phần micro giây của dấu thời gian ấy, được in mà không đệm số không. Nó không phải là mã định danh phiên, tên người dùng hay bộ đếm, và coi nó như vậy biến một phần nhỏ của giây thành kết luận sai đầy tự tin. Hãy chuyển nó thành một phần của giây được hiển thị và phần còn lại của dòng vẫn đọc được.

Ba phần của dòng nghĩa là gì

Ngày và giây nguyên đi trước, còn us= mang phần dư dưới một giây. Giá trị 12345 là mười hai nghìn ba trăm bốn mươi lăm micro giây, tức 0.012345 giây, nên dòng mô tả 09:15:30.012345 khi thời gian in là 09:15:30. Bộ đếm bắt đầu lại với mỗi giây mới, nên dòng sau có thể in một phần nhỏ hơn mà không có đồng hồ nào chạy lùi. Chỉ dấu thời gian đầy đủ mới sắp xếp được sự kiện.

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

Đơn vị là một phần triệu giây, và sáu chữ số us= bao trùm toàn bộ dải từ 0.000000 đến 0.999999. Năm chữ số mô tả hàng chục mili giây, còn sáu chữ số mô tả hàng trăm mili giây cho đến gần một giây trọn vẹn. Nếu phép chuyển đổi cho ra phần lớn hơn một, dấu thập phân đã dịch chỗ và phép tính sai. Làm thủ công nghĩa là chia số nguyên được in cho một triệu rồi cộng vào giây nguyên.

Đệm số không chính là cái bẫy. us=42 là bốn mươi hai micro giây, được viết là .000042, không phải .42. Hãy đệm số nguyên đến sáu vị trí bên trái trước khi chuyển đổi, và giá trị không còn trông giống một phần thập phân của những chữ số bạn thấy.

Chuyển đổi một dòng mà không cần máy tính

Lấy giây được in làm cơ sở và coi us= là phần lẻ. Với 09:15:30 và us=12345 dạng thập phân là 09:15:30.012345; với us=900000 là 09:15:30.900000. Các chữ số sau dấu thập phân là số nguyên đã đệm, không bao giờ là số nguyên chia cho một nghìn. Viết dạng sáu chữ số trước giúp tránh hầu hết lỗi.

Nếu bạn phân tích nhật ký thành dấu thời gian, hãy phân tích ngày, giây nguyên và phần lẻ cùng nhau. Bộ phân tích giả định mili giây sẽ sắp xếp sự kiện sai gấp một nghìn lần, và đầu ra vẫn trông hợp lý.

Khi trường này vắng mặt trong nhật ký

Phần micro giây thuộc định dạng nhật ký văn bản và chỉ xuất hiện khi dấu thời gian chi tiết được bật. Trong bộ định dạng dấu thời gian của OpenVPN 2.6, nó được thêm vào khi đầu ra đó bật và giá trị lưu không phải số không. Vì vậy nhật ký không có us= không cho biết gì về đồng hồ hay bản dựng; thường điều đó có nghĩa mức chi tiết được cấu hình quá thấp. Hãy kiểm tra cấu hình trước khi đổ lỗi cho việc đồng bộ thời gian.

Có thể xác nhận cài đặt dễ dàng từ cấu hình máy chủ. Chạy lệnh bên dưới và đọc con số nó trả về. Đầu ra dấu thời gian chi tiết xuất hiện ở mức chi tiết 4, nên giá trị thấp hơn giải thích trường bị thiếu mà không có lỗi nào khác. Chạy cùng cấu hình với --verb 4 sẽ hiển thị trường ngay khi daemon khởi động lại với mức đó.

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

Tăng mức chi tiết thêm thông tin vào nhật ký; nó không cải thiện đồng hồ. Sau khi khởi động lại, hãy so sánh một dòng mới với dòng cũ để xác nhận định dạng đã thay đổi, và hạ mức xuống lại khi câu hỏi đã được trả lời.

Sáu chữ số không chứng minh điều gì

Sáu chữ số mô tả độ phân giải, và độ phân giải không nói gì về việc hai máy chủ có đồng ý về thời gian hay không. Máy khách và máy chủ đều có thể in micro giây trong khi đồng hồ của chúng lệch nhau vài giây. Khi bạn tương quan sự kiện giữa các máy, hãy ghi lại múi giờ và mọi độ lệch đã biết, và ưu tiên trường nêu tên đối tác hoặc phiên hơn bất kỳ dấu thời gian nào. Hai dòng chia sẻ cùng một phần lẻ không nhất thiết là cùng một kết nối.

Bộ thu thập có thể đóng dấu từng dòng khi đến, điều này thêm một dấu thời gian thứ hai thuộc về bộ thu thập chứ không phải OpenVPN. Hãy xác định bạn đang đọc cái nào trước khi so sánh chúng, và giữ lại dòng thô để có thể làm lại phép so sánh.

Giá trị us= mới không chứng minh rằng một máy khách mới đã đăng nhập, và một giá trị lặp lại không chứng minh sự kiện trùng lặp. Các trường đối tác và kết nối trả lời những câu hỏi đó.

Bài viết liên quan