RahuNAS จัดเต็ม


ระบบ ติดตั้งให้ มหาวิทยาราชภัฏเทพสตรี จ.ลพบุรี
เป็นระบบที่เป็น OpenSource Software ทั้งระบบ

ตามแผนผังแล้ว เป็นระบบใหญ่ชุดแรก ที่ผมติดตั้งเองทุกส่วน เพราะตอนทำร่วมกับ มหาวิทยาลัยขอนแก่น ผมทำแค่หน้าด่าน (RahuNAS) ส่วนหลังบ้าน ม.ข. จัดไว้หมดแล้ว

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

เข้าเรื่อง ในแผนผังนี้ มีหลายส่วนที่ผมต้องเรียนรู้ใหม่ ซึ่งเป็นส่วนที่สำคัญ ๆ ของระบบ

* LDAP - OpenLDAP ใช้เป็น Backend ให้ FreeRADIUS ซึ่งก่อนหน้านี้ผมใช้ PostgreSQL เป็น Backend ไม่ใช่ PostgreSQL ไม่ดี แต่นี่ คือ ความต้องการของสถานศึกษา ส่วนนี้ เป็นส่วนที่ใช้เวลาพอสมควร ต้องเริ่มเรียนรู้ จนค่อย ๆ เข้าใจการทำงาน และนำไปใช้งานได้ในที่สุด

* LDAP Replica - ส่วนนี้ ติดตั้งเป็น Master - Consumer(s) ด้วยเหตุผลที่ว่า ฐานข้อมูลนี้ เขียนไม่บ่อย แต่อ่านบ่อย เพื่อลดความยุ่งยาก Master - Consumer(s) จึงเป็นทางเลือกที่ไม่เลว

* LDAP Loadbalancer - HAProxy - ไม่มีเหตุผลอะไรมากสำหรับส่วนนี้ เหตุผลเดียวนั้นคือ มีตัวอย่าง มีคนทำ และมันใช้งานได้ ^_^

* Radius Loadbalancer - ใช้ FreeRADIUS กำหนดค่าให้ทำหน้าที่เป็น Proxy ซึ่งในส่วนนี้ FreeRADIUS มีความพร้อมที่จะทำได้อยู่แล้ว แต่กว่าจะตบให้เข้าที่ก็เล่นเอาเหงื่อตกเหมือนกัน

ส่วนพระเอกของงาน หนีไม่พ้น RahuNAS

RahuNAS ที่ติดตั้งที่นี่ เป็นรุ่นที่ปรับปรุงล่าสุด ที่เตรียมการไว้ว่า จะออกรุ่น 1.0.0 ส่วนตอนนี้ ก็อยู่ในขั้น beta แล้วหละ(มั้ง)

ปรับปรุง หลายส่วนพอสมควร (จริง ๆ ก็ทำเรื่อย ๆ มา)

* ระบบ command message ที่ Web Login คุยกับ RahuNAS Bakend ยังเป็น xmlrpc แต่ปรับใช้ JSON-Base64 encoded เป็น message ทำให้เวลาปรับเปลี่ยน ส่งข้อมูลเพิ่มเติม ทำได้สะดวกขึ้นมาก

* PHP Web Login - ปรับมาใช้ Smarty template engine ทำให้ code ในส่วน PHP ดู clean ขึ้นเยอะ และ Smarty ยังมีส่วนของ caching ทำให้แสดงผลได้เร็วขึ้นด้วย

* เพิ่มส่วนของการทำ MAC Address Authen ซึ่งไม่ใช่แค่ MAC Allow (Bypass) แต่เป็นการทำ Authentication ด้วย MAC Address มีผูก MAC Address กับผู้ใช้งาน และมีการบันทึก Account ด้วยชื่อผู้ใช้งานนั้นเข้าในระบบด้วย ส่วนนีพัฒนาโดยใช้ความสามารถของ Netfilter และแน่นอนที่สุดสำหรับ RahuNAS คือ ถึงเพิ่มส่วน MAC Authen ต้องไม่ทำให้ระบบช้าไปกว่าที่เคยเป็น ^_^

* มีส่วนของการทำ Cross Network Roaming - ในระบบที่มีหลาย VLAN ซึ่งผู้ใช้งาน ที่เกาะแต่ละ VLAN จะได้ IP คนละชุด ทำให้เมื่อผู้ใช้งานเปลี่ยน VLAN ในระบบเดิม จะต้องทำการ login ใหม่ทุกครั้ง ส่วนนี้ จึงถูกสร้างขึ้นมาเพื่อช่วยให้ผู้ใช้งาน ไม่ต้อง login ใหม่ แต่ทำการย้ายผู้ใช้งานข้ามเครือข่ายให้เลย โดยหลักการคือ logout จากที่เดิม และ login (automatic) เข้าเครือข่ายใหม่

ข้อจำกัด คือ
1. ยังไม่สามารถย้ายเครือข่าย ข้ามเครื่อง Authen ได้ เช่น ย้ายจาก Authen1 ไป Authen2 ไม่ได้ แต่การย้ายเครือข่ายภายในเครื่องเดียวกันทำได้
2. เครื่องผู้ใช้ และ Browser จะต้องทำการเปิดรับ Cookies เนื่องจากระบบจำเป็นต้องฝาก token ไว้กับผู้ใช้เพื่อใช้ยืนยันตัวตน

* เพิ่มส่วนของการทำ IP accounting มีการบันทึก จำนวนการรับส่งข้อมูลของผู้ใช้แต่ละราย และจัดเก็บลง Radius Accounting เพื่อใช้ในการวิเคราะห์ และทำรายงานต่อไป ... ส่วนนี้ ใช้ pmacctd (ยังหวั่น ๆ ว่ามันจะไหวไหม แต่ก็ยังไม่เจอปัญหาอะไร)

* แก้ Bugs ในส่วนการบันทึก accounting ซึ่งพบว่า เกิดข้อผิดพลาดในการบันทึกซ้ำ ซึ่งจะส่งผลต่อการตรวจสอบ จำนวน session ของผู้ใช้ที่ใช้งานพร้อมกัน และส่งผลต่อ "users ค้าง"

ถัดไป คือ พระรอง DarkSolar Control Panel

ความสำคัญของ DarkSolar สำหรับผู้ดูแลระบบนั้น ไม่ยิ่งหย่อนกว่า RahuNAS

* เพิ่มการ Sync ลง LDAP Backend ซึ่งรอดตายด้วย ldapjs และด้วยความโชคดีที่วางระบบไว้ ว่าเดิม ให้เก็บ information ไว้ใน mongodb แล้วค่อย sync ลง PostgreSQL ทำให้ ตอน sync ลง LDAP ก็ทำในลักษณะเดียวกัน

* เพิ่มส่วนในการ นำเข้าข้อมูลจาก CSV ไฟล์ และมีส่วนสำหรับการ revert ในกรณีนำเข้าพลาด (ใช้เวลา 2 วันเต็ม ๆ อดหลับอดนอน) จนได้ระบบนี้ และใช้ระบบนี้ ในการนำเข้าผู้ใช้งาน กว่า 6 หมื่นรายการเข้าระบบ ^_^

* สำหรับคนที่ได้ใช้ DarkSolar มาก่อน จะพบว่าในส่วน Online Users ยังขาดส่วนของการค้นหา ซึ่งสำหรับระบบที่มีผู้ใช้เข้าใช้งานพร้อมกันระดับหลายพันราย เป็นการไม่สะดวกอย่างยิ่ง ในการค้นหาผู้ใช้เอง ทีละหน้า -_-''

* แก้ Bugs ในส่วนอื่น ๆ ทั้งที่เป็น error หรือแม้แต่ performance ซึ่งในส่วนของ performance ก็จะมาเจอก็ตอนมี 60k users อยู่ในฐานข้อมูล :)

และนั่นคืองาน สำหรับหลายเดือนที่ผ่านมา รวมอายุแล้ว RahuNAS ก็ค่อย ๆ เข้าใกล้ 1 ทศวรรษ และแน่นอน RahuNAS ก็โตเป็นผู้ใหญ่ขึ้นเรื่อย ๆ ตามกำลังของ 1 สมอง และ 2 มือ

ขอขอบคุณทุกท่าน ที่ยังไว้วางใจ RahuNAS
หวังว่า เราจะคบกันไป จนกว่า "จะเลิกรักกัน"

Happy Hacking