ทุกการถกเถียงเรื่องการเรียกเก็บเงิน VPN มักปนสองคำถามเข้าด้วยกัน คือ ผู้ใช้รายนี้ได้รับอนุญาตให้เชื่อมต่อหรือไม่ และเขาทำอะไรลงไปจริง ๆ คำถามแรกตอบได้ด้วยการพิสูจน์ตัวตน คำถามที่สองต้องอาศัยบันทึกการบัญชีที่เริ่มต้น อัปเดต และสิ้นสุด การเข้าสู่ระบบสำเร็จพิสูจน์คำถามแรกและไม่บอกอะไรเกี่ยวกับคำถามที่สอง การตั้งค่าการพิสูจน์ตัวตนด้วย RADIUS ที่ใช้งานได้จึงยังสร้างรายงานการใช้งานที่ว่างเปล่าได้

สองคำถามที่ต่างกัน

การพิสูจน์ตัวตนตัดสินว่าการเชื่อมต่อจะเริ่มได้หรือไม่ และ ส่งคำตัดสินพร้อมคุณลักษณะ เช่น กลุ่มที่อยู่หรือกลุ่มผู้ใช้ กลับมา การบัญชีบันทึกบริการที่ตามมาเป็นลำดับเหตุการณ์ที่ผูกกับเซสชันเดียว

ทั้งสองอย่างเดินทางผ่านโปรโตคอลเดียวกันและมักไปยังเซิร์ฟเวอร์เดียวกัน จึงเป็นเหตุให้ผู้คนคิดว่าอย่างหนึ่งหมายถึงอีกอย่างหนึ่ง

ไม่มีสิ่งใดในคำขอเข้าใช้ที่บอกระยะเวลาของเซสชัน และไม่มีสิ่งใดในบันทึก Stop ที่ตัดสินซ้ำว่าควรรับผู้ใช้หรือไม่ เมื่อมองว่าเป็นสัญญาแยกกัน งานเชื่อมต่อจึงปรากฏชัด เส้นทางหนึ่งต้องการการตัดสินใจ อีกเส้นทางต้องการวงจรชีวิตที่มีจุดเริ่มต้น ตรงกลาง และจุดสิ้นสุด

บันทึกทั้งสามประเภทให้อะไรบ้าง

บันทึก Start เปิดเซสชัน Interim-Update รายงานกิจกรรมระหว่างที่เปิดอยู่ และ Stop ปิดเซสชัน ทั้งสามมีตัวระบุเซสชันเพื่อให้ผู้รับเชื่อมโยงเข้ากับเหตุการณ์บริการเดียวได้

ตัวระบุนั้นเป็นเพียงสิ่งเชื่อมโยงที่เชื่อถือได้ระหว่างกัน เพราะชื่อผู้ใช้เดียวกันอาจมีหลายเซสชันต่อเนื่องหรือพร้อมกัน ควรออกแบบที่เก็บข้อมูลโดยยึดตัวระบุนี้ ไม่ใช่ยึดชื่อบัญชี

การตอบรับบันทึกเป็นคนละเรื่องกับการเก็บรักษาบันทึกอย่างดี ข้อกำหนดการบัญชีห้ามการตอบรับเมื่อไม่สามารถเขียนบันทึกได้ คำตอบจึงบอกได้จริงว่าผู้รับรับผิดชอบแล้ว แต่ไม่ได้บอกว่าการประมวลผลรายงานในภายหลัง แดชบอร์ด หรือการส่งออกเพื่อเรียกเก็บเงินนำบันทึกไปใช้อย่างถูกต้อง

ทำไมชื่อผู้ใช้จึงไม่ใช่เซสชัน

คนหนึ่งเชื่อมต่อจากแล็ปท็อปตอนเช้าและจากโทรศัพท์ตอนบ่าย ทั้งสองเซสชันใช้ชื่อบัญชีเดียวกัน บันทึก Start ที่มาถึงโดยไม่มี Stop คู่กันไม่สามารถปิดได้ด้วยการค้นหาชื่อแล้วเลือกแถวที่เปิดอยู่นานที่สุด

ทางลัดนี้เองที่ทำให้รายงานการใช้งานมีระยะเวลาที่เป็นไปไม่ได้

เก็บอัตลักษณ์ของเซิร์ฟเวอร์การเข้าถึงเครือข่ายไว้ข้างตัวระบุเซสชัน เพราะเซิร์ฟเวอร์สองเครื่องอาจกำหนดค่าเดียวกันในบริบทต่างกัน และการรวมข้อมูลด้วยตัวระบุเพียงอย่างอาจรวมเซสชันที่ไม่เกี่ยวข้องกัน เมื่อเซสชันสิ้นสุดอย่างไม่เรียบร้อย นโยบายการกระทบยอดต้องตัดสินว่าจะปิดอย่างไร และการตัดสินนั้นเป็นเรื่องของการออกแบบ ไม่ใช่การแก้ไขฐานข้อมูลด้วยมือเดือนละครั้ง

PAM เข้าที่ตรงไหนและไม่เข้าที่ตรงไหน

ปลั๊กอินพิสูจน์ตัวตนของ OpenVPN เรียกขั้นตอนพิสูจน์ตัวตนและการจัดการบัญชีของ PAM ขั้นตอนบัญชีตรวจสอบคุณสมบัติ ชื่อของขั้นตอนไม่ได้หมายถึงการบัญชีการใช้งาน และปลั๊กอินไม่ได้ขับฮุกเปิดและปิดเซสชันของ PAM

โมดูล PAM RADIUS บางตัวส่งบันทึกการบัญชีผ่านฮุกเซสชันเหล่านั้นได้ และจะทำงานเฉพาะเมื่อแอปพลิเคชันเรียกใช้ฮุกเหล่านั้นจริง

การเพิ่มโมดูลเช่นนี้เข้าไปในสแต็กพิสูจน์ตัวตนจึงไม่ได้สร้างเหตุการณ์ตัดการเชื่อมต่อ หากต้องการวงจรชีวิตเต็มรูปแบบ ให้เลือกการเชื่อมต่อที่ดูแลวงจรนั้นเอง คือปลั๊กอินหรือบิลด์ที่รองรับซึ่งส่ง Start, Interim-Update และ Stop เมื่อสถานะการเชื่อมต่อเปลี่ยน ตรวจสอบสถานะการบำรุงรักษาและพฤติกรรมที่บันทึกไว้เป็นเอกสารเมื่อผู้รับไม่พร้อมใช้งาน เพราะปลั๊กอินที่ทิ้งบันทึกอย่างเงียบ ๆ ดูเหมือนปลั๊กอินที่ไม่เคยส่งเลยข้อกำหนดการบัญชี กำหนดความหมายของบันทึกที่การเชื่อมต่อต้องเคารพ

การทดสอบการยอมรับที่พิสูจน์สัญญา

ทดสอบการเชื่อมต่อและการตัดการเชื่อมต่อปกติ จากนั้นเชื่อมต่อใหม่ภายใต้บัญชีเดิม จากนั้นไคลเอนต์ที่หายไปโดยไม่ตัดการเชื่อมต่อ

ติดตามตัวระบุเซสชันหนึ่งตัวตั้งแต่การสร้างผ่านการตอบรับจนถึงที่เก็บ และตรวจสอบทิศทาง หน่วย และอินเทอร์เฟซของตัวนับ จำนวนไบต์ที่ไม่มีป้ายกำกับไม่สามารถตรวจสอบย้อนหลังได้

สุดท้าย ยืนยันว่าเซสชันที่เซิร์ฟเวอร์ต้องปิดเพราะหมดอายุถูกนำเสนอในแบบที่รายงานเข้าใจ สัญญาที่ครอบคลุมเพียงการตัดการเชื่อมต่ออย่างเรียบร้อยคือสัญญาที่ล้มเหลวในวันที่คุณต้องการมากที่สุด

บทความที่เกี่ยวข้อง