ความหมายของ us= ในบันทึก OpenVPN และวิธีแปลงค่า
ฟิลด์ us= คือส่วนไมโครวินาทีของเวลาประทับในบันทึก ไม่ใช่รหัสเซสชัน เติมให้ครบหกหลักและอ่านทั้งบรรทัดก่อนเปรียบเทียบนาฬิกา
บันทึกข้อความของ 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= ใหม่ไม่ได้พิสูจน์ว่ามีไคลเอนต์ใหม่ล็อกอิน และค่าที่ซ้ำก็ไม่ได้พิสูจน์เหตุการณ์ซ้ำ ฟิลด์เพียร์และการเชื่อมต่อตอบคำถามเหล่านั้น