ทำไมการเตือน VPN 23 ชั่วโมงจึงดังผิดเซสชัน
การแจ้งเตือน 23 ชั่วโมงควรติดตามหนึ่งเซสชัน ไม่ใช่บัญชี ผูกตัวจับเวลาไว้กับการเชื่อมต่อที่เริ่มขึ้น และถือว่าการพักเครื่องและการเชื่อมต่อใหม่เป็นคนละกรณี
การแจ้งเตือนปรากฏขึ้นยี่สิบนาทีหลังเชื่อมต่อ ตัวนับข้างใต้ทำงานมาตั้งแต่เช้าของวันก่อน หรือตั้งแต่บัญชีพิสูจน์ตัวตนครั้งล่าสุด และไม่มีอะไรในการเตือนบอกว่าเป็นอันไหน นั่นคืออาการ: การเตือนที่ผูกกับสิ่งอื่นที่ไม่ใช่การเชื่อมต่อตรงหน้าคุณ
วิธีแก้ไม่ใช่การเตือนที่ดีขึ้น แต่คือการตัดสินว่าข้อกำหนดหมายถึงนาฬิกาเรือนไหน แล้วผูกตัวจับเวลาไว้กับวัตถุที่มีอยู่ในนาฬิกาเรือนนั้น
อะไรดังขึ้น และมันนับอะไรอยู่
แหล่งที่เป็นไปได้สามแหล่งให้ข้อความเดียวกัน กฎปฏิทินทำงานตามเวลาท้องถิ่นคงที่และไม่รู้อะไรเกี่ยวกับอุโมงค์ ตัวนับในไคลเอนต์สะสมตราบใดที่มีการเชื่อมต่อใดทำงานอยู่และอยู่รอดจากการเชื่อมต่อใหม่ นโยบายเกตเวย์ทำให้เซสชันหมดอายุฝั่งเซิร์ฟเวอร์และส่งคำเตือนมาก่อน
มีเพียงสองอันหลังที่เกี่ยวกับเซสชัน และแม้แต่สองอันนั้นก็ไม่ตรงกัน ตัวนับของไคลเอนต์วัดสิ่งที่กระบวนการท้องถิ่นสังเกตเห็น เกตเวย์วัดสิ่งที่พิสูจน์ตัวตนและบันทึกบัญชีไว้ การพักเครื่อง การเปลี่ยนเครือข่าย หรือการรีสตาร์ทผู้สังเกตสามารถแยกทั้งสองออกจากกันได้หลายชั่วโมง และนั่นคือเหตุผลที่คำเตือนกับการหมดอายุที่บังคับใช้แยกจากกัน
สามนาฬิกาเบื้องหลังข้อกำหนดเดียว
เริ่มด้วยการเขียนประโยคที่คุณต้องการจริง ๆ การเตือนก่อนที่เกตเวย์จะยุติการเชื่อมต่อนี้ไม่ใช่ข้อกำหนดเดียวกับการเตือนหลังเวลาที่เชื่อมต่อมาหนึ่งวัน และไม่เหมือนกับการรายงานว่าเซสชันนี้เปิดมา 23 ชั่วโมงแล้ว แต่ละฉบับระบุเหตุการณ์ต่างกัน และองค์ประกอบต่างกันต้องตอบมัน
จากนั้นตรวจสอบว่ามีข้อมูลหรือไม่ การประทับเวลาเริ่มต้นในเครื่องให้อายุของเซสชันโดยไม่ต้องพึ่งเซิร์ฟเวอร์ นโยบายเกตเวย์ให้อายุคงเหลือ แต่เฉพาะเมื่อเกตเวย์เปิดเผย รายงานการใช้งานให้ระยะเวลาหลังเหตุการณ์ และสิ่งนั้นไม่สามารถขับเคลื่อนการแจ้งล่วงหน้าได้
ผูกตัวจับเวลาไว้กับเซสชัน ไม่ใช่บัญชี
เลือกวัตถุก่อน บัญชีหนึ่งอาจถืออุปกรณ์หลายเครื่องและเซสชันหลายอันพร้อมกัน ดังนั้นการเตือนที่ผูกกับชื่อผู้ใช้จึงบอกไม่ได้ว่าการเชื่อมต่อใดถึงอายุนั้น ผูกกับโปรไฟล์บวกการเปิดใช้งานนั้น และยกเลิกการแจ้งที่รออยู่เมื่อการเปิดใช้งานสิ้นสุด
| Evidence you can read | What it establishes | Where it misleads |
|---|---|---|
| Connection state changes to active | A session started now | Does not carry the gateway's own session identifier |
| Duration reported at disconnect | Total service time for that session | Arrives too late for any advance notice |
| Interim usage update | Time accounted up to that update | Staleness equals the update interval |
| Local timestamp taken at activation | Age of your observation | Resets whenever the observer restarts |
ตารางนั้นเป็นสัญญาสำหรับตัวแจ้งเตือนของคุณเอง ไม่ใช่คำอธิบาย API เรียกกลับของไคลเอนต์ใด ๆ สิ่งที่ผลิตภัณฑ์ที่ติดตั้งจัดทำเอกสารเกี่ยวกับสถานะการเชื่อมต่อคือแหล่งที่ต้องผูกเข้าไป ที่ใดเปิดเผยเฉพาะเหตุการณ์พิสูจน์ตัวตน ให้พูดออกมาดัง ๆ และยอมรับพฤติกรรมที่หยาบกว่าแทนการอนุมานเซสชัน
ทดสอบด้วยขีดจำกัดสั้น ๆ
อย่าดีบักตัวจับเวลาหนึ่งวันด้วยการรอหนึ่งวัน เพิ่มขีดจำกัดที่กำหนดค่าได้ ตั้งไว้ที่สามสิบวินาที และรันการเปลี่ยนสถานะสี่ครั้งตามลำดับ: เชื่อมต่อ รอ ตัดการเชื่อมต่อ เชื่อมต่อใหม่ การเปลี่ยนแต่ละครั้งควรให้การเปลี่ยนสถานะเพียงหนึ่งครั้ง และการเชื่อมต่อใหม่ควรกำหนดเส้นตายใหม่แทนที่จะสืบทอดอันเก่า
# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work
# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat
ดูที่การประทับเวลา ไม่ใช่ถ้อยคำ การแจ้งที่มาพร้อมเวลาเริ่มของเซสชันก่อนหน้าผูกวัตถุผิด และการแจ้งที่มาสองครั้งสำหรับเส้นตายเดียวหมายความว่าธงส่งแล้วไม่เคยถูกบันทึก
การพักเครื่อง การเชื่อมต่อใหม่ และการส่งที่ไม่ถึง
การพักเครื่องทำให้ทั้งสองดีไซน์ง่าย ๆ พัง การนับถอยหลังแบบโมโนโทนิกหยุดเมื่อเครื่องหลับ เส้นตายตามนาฬิกาผนังยังคงเคลื่อนที่ และตัวจับเวลาที่ทำงานระหว่างการพักเครื่องจะถูกส่งช้าหรือไม่ถูกส่งเลย ตัดสินว่าข้อกำหนดของคุณต้องการพฤติกรรมใด แล้วให้เครื่องหลับข้ามขีดจำกัดและยืนยัน
การส่งก็สมควรได้รับการดูแลเช่นเดียวกัน หากแสดงการแจ้งไม่ได้ ให้ใส่คิวไว้ และตรวจสอบอีกครั้งว่าเซสชันเป้าหมายยังมีอยู่ก่อนจะแสดงในที่สุด มิฉะนั้นผู้ใช้จะได้รับการเตือนเกี่ยวกับการเชื่อมต่อที่สิ้นสุดไปแล้ว การตัดการเชื่อมต่อแบบบังคับและการต่ออายุข้อมูลรับรองอยู่นอกเส้นทางนี้ เพราะการเตือนที่เปลี่ยนชะตากรรมของการเชื่อมต่ออย่างเงียบ ๆ คือการตัดสินเชิงนโยบายที่สวมเสื้อผ้าของการแจ้งเตือน