يكتب السجل النصي في OpenVPN تاريخًا ووقتًا وقيمة us= على السطر نفسه، والجزء الأخير من الثلاثة هو ما يقرأه المستخدمون خطأ. إنه مكوّن الميكروثانية في ذلك الطابع الزمني، مطبوع دون حشو بالأصفار. ليس معرّف جلسة ولا اسم مستخدم ولا عدّادًا، واعتباره كذلك يحوّل كسرًا من الثانية إلى استنتاج خاطئ واثق. حوّله ككسر من الثانية المعروضة وسيبقى بقية السطر مقروءًا.

معنى الأجزاء الثلاثة للسطر

يأتي التاريخ والثانية الكاملة أولًا، ويحمل us= الباقي دون الثانية الواحدة. القيمة 12345 هي اثنتا عشرة ألفًا وثلاثمائة وخمس وأربعون ميكروثانية، أي 0.012345 ثانية، لذا يصف السطر 09:15:30.012345 عندما يكون الوقت المطبوع 09:15:30. يبدأ العدّاد من جديد مع كل ثانية جديدة، لذا يمكن لسطر لاحق أن يطبع كسرًا أصغر دون أن تسير أي ساعة إلى الخلف. فقط الطابع الزمني الكامل يرتب الأحداث.

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

الوحدة هي جزء من مليون من الثانية، وستة أرقام من us= تغطي المدى كله من 0.000000 إلى 0.999999. خمسة أرقام تصف عشرات الميلي ثانية، أما ستة فتصف مئات الميلي ثانية حتى قرابة ثانية كاملة. إذا أنتج التحويل كسرًا أكبر من واحد فقد تحركت الفاصلة العشرية والحساب خاطئ. إجراء ذلك يدويًا يعني قسمة العدد الصحيح المطبوع على مليون وإضافته إلى الثانية الكاملة.

الحشو هو الفخ. us=42 هي اثنتان وأربعون ميكروثانية، تُكتب .000042، وليس .42. املأ العدد الصحيح إلى ستة خانات من اليسار قبل التحويل، وسيتوقف العدد عن الظهور ككسر عشري للأرقام التي تراها.

تحويل سطر دون آلة حاسبة

خذ الثانية المطبوعة كأساس وعامل us= كالكسر. من أجل 09:15:30 مع us=12345 تكون الصيغة العشرية 09:15:30.012345؛ ومن أجل us=900000 تكون 09:15:30.900000. الأرقام بعد الفاصلة العشرية هي العدد الصحيح المحشو، وليست أبدًا العدد مقسومًا على ألف. كتابة الصيغة ذات الستة أرقام أولًا تمنع معظم الأخطاء.

إذا كنت تحلل السجلات إلى طوابع زمنية، فحلل التاريخ والثانية الكاملة والكسر معًا. المحلل الذي يفترض الميلي ثانية سيرتب الأحداث خطأً بمعامل ألف، وسيبدو الناتج معقولًا رغم ذلك.

عندما يغيب الحقل من السجل

ينتمي الجزء الميكروثاني إلى صيغة السجل النصي ولا يظهر إلا عند تفعيل الطوابع الزمنية التفصيلية. في منسّق الطوابع الزمنية الخاص بـ OpenVPN 2.6 يُضاف عندما يكون ذلك الناتج مفعلًا والقيمة المخزنة غير صفرية. لذا لا يقول سجل بلا us= شيئًا عن الساعة أو البناء؛ وهو يعني عادة أن مستوى التفصيل المهيأ منخفض جدًا. تحقق من الإعدادات قبل أن تلوم مزامنة الوقت.

من السهل تأكيد الإعداد من إعدادات الخادم. نفّذ الأمر أدناه واقرأ الرقم الذي يعيده. يظهر ناتج الطوابع الزمنية التفصيلية عند مستوى التفصيل 4، لذا تفسر القيمة الأقل الحقل الغائب دون أي عطل آخر. تشغيل الإعداد نفسه مع --verb 4 يُظهر الحقل بمجرد أن يعيد الخادم التشغيل بهذا المستوى.

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

رفع مستوى التفصيل يضيف تفاصيل إلى السجل؛ ولا يحسّن الساعة. بعد إعادة التشغيل، قارن سطرًا جديدًا بسطر قديم للتأكد من تغيّر الصيغة، ثم اخفض المستوى مجددًا بعد الإجابة عن السؤال.

ما لا تثبته ستة أرقام

ستة أرقام تصف الدقة، والدقة لا تقول شيئًا عن اتفاق مضيفين على الوقت. يمكن لعميل وخادم أن يطبعا الميكروثانية بينما تختلف ساعتهما بثوانٍ. عند ربط الأحداث عبر الأجهزة، سجّل المنطقة الزمنية وأي إزاحة معروفة، وفضّل حقلًا يسمّي النظير أو الجلسة على أي طابع زمني. سطران يتشاركان كسرًا ليسا بالضرورة الاتصال نفسه.

قد يختم المجمّع كل سطر عند وصوله، ما يضيف طابعًا زمنيًا ثانيًا يخص المجمّع لا OpenVPN. حدّد أيّهما تقرأ قبل مقارنتهما، واحتفظ بالسطر الخام كي يمكن إعادة المقارنة.

لا تُثبت قيمة us= جديدة أن عميلًا جديدًا سجّل الدخول، ولا تُثبت القيمة المكررة وجود حدث مكرر. حقلا النظير والاتصال يجيبان عن هذين السؤالين.

مقالات ذات صلة