การออกแบบระบบบริหารจัดการผู้ใช้งานผ่านโปรโตคอล RADIUS ร่วมกับอุปกรณ์ NAS (Network Access Server) และส่วนขยายอย่าง API และ Database เป็นโครงสร้างที่นิยมมากในระบบ ISP, หอพัก หรือองค์กรขนาดใหญ่
เพื่อให้เห็นภาพการไหลของข้อมูล (Data Flow) อย่างละเอียด ผมขอแบ่งองค์ประกอบและขั้นตอนการทำงานออกมาดังนี้ครับ

- องค์ประกอบหลักของระบบ (System Components)
- User/Client: อุปกรณ์ที่ต้องการเข้าใช้งานเครือข่าย (เช่น มือถือ, PC)
- NAS (Network Access Server): อุปกรณ์ด่านหน้า เช่น MikroTik, Cisco Router หรือ WiFi AP ที่ทำหน้าที่ดักจับการเชื่อมต่อ
- RADIUS Server: หัวใจหลักในการประมวลผล (เช่น FreeRADIUS) ทำหน้าที่ตรวจสอบสิทธิ์ (AAA)
- Database: ที่เก็บข้อมูล User, Profile, Logs และ Usage (เช่น MySQL, PostgreSQL)
- RADIUS Manager (Web UI): ส่วนติดต่อผู้ใช้สำหรับ Admin เพื่อจัดการ User/Billing
- API Service: ส่วนกลางที่เชื่อมต่อระหว่าง RADIUS กับระบบภายนอก หรือ Mobile App
- ไดอะแกรมการทำงานเชิงลึก (System Architecture Diagram)
- อ้างอิงข้อมูลท้ายบทความ
- ขั้นตอนการทำงานโดยละเอียด (Step-by-Step Logic) กระบวนการนี้เรียกว่า AAA (Authentication, Authorization, and Accounting)
- A. ขั้นตอนการยืนยันตัวตน (Authentication & Authorization)
- Request: ผู้ใช้ส่ง Username/Password ผ่านหน้า Login (Captive Portal) ไปยัง NAS
- Access-Request: NAS ทำการ Pack ข้อมูลใส่ Radius Packet แล้วส่งไปยัง RADIUS Server (พอร์ต 1812)
- Query: RADIUS Server รับข้อมูลแล้วไป Query ใน Database หรือส่งผ่าน API เพื่อเช็คว่า “มีผู้ใช้นี้ไหม? รหัสถูกไหม? แพ็กเกจหมดอายุหรือยัง?”
- Response: * ถ้าผ่าน: ส่ง Access-Accept พร้อมระบุเงื่อนไข (Attributes) เช่น ความเร็วเน็ต (Bandwidth), เวลาที่เล่นได้ (Session-Timeout)
- ถ้าไม่ผ่าน: ส่ง Access-Reject
- B. ขั้นตอนการเก็บข้อมูลการใช้งาน (Accounting)
- Accounting-Start: เมื่อ NAS ปล่อยให้ผู้ใช้เข้าเน็ตได้ จะแจ้ง RADIUS ว่า “User นี้เริ่มใช้งานแล้วนะ”
- Interim-Update: NAS จะส่งข้อมูลเป็นระยะๆ (เช่น ทุก 5 นาที) เพื่อบอกว่า User ใช้ Data ไปเท่าไหร่แล้ว
- Accounting-Stop: เมื่อ User ตัดการเชื่อมต่อ NAS จะส่งสรุปยอดการใช้งานทั้งหมดไปบันทึกลง Database
- C. การจัดการผ่าน Manager & API
- Management: Admin ใช้งาน Radius Manager เพื่อเพิ่มลบผู้ใช้ ซึ่งจะไปเขียนข้อมูลลง Database โดยตรง
- API Integration: หากมีระบบ App ภายนอกต้องการดึงข้อมูล หรือสั่งตัดการเชื่อมต่อ (Disconnect Request/CoA) จะสั่งการผ่าน API Service ให้ไปคุยกับ RADIUS Server อีกที
- A. ขั้นตอนการยืนยันตัวตน (Authentication & Authorization)
- ตารางสรุปการรับส่ง Data (Attribute Table)
| ส่วนประกอบ | ข้อมูลที่ส่ง (Key Attributes) | จุดประสงค์ |
| NAS -> RADIUS | User-Name, User-Password, NAS-IP | ขอเข้าใช้งาน |
| RADIUS -> NAS | Mikrotik-Rate-Limit, Session-Timeout | กำหนดความเร็วและเวลา |
| NAS -> RADIUS | Acct-Input-Octets, Acct-Output-Octets | รายงานปริมาณ Data (Upload/Download) |

ข้อแนะนำเพิ่มเติมสำหรับการออกแบบ
- High Availability: หากระบบใหญ่ ควรทำ Database Cluster หรือ Load Balance RADIUS Server
- Security: การเชื่อมต่อระหว่าง NAS และ RADIUS ควรใช้ Shared Secret ที่ซับซ้อน และจำกัด IP ที่อนุญาตให้ส่ง Request (Client Definition)
เพื่อให้คุณเห็นภาพการทำงานเชิงลึกของระบบ RADIUS ร่วมกับ NAS, Database และ API ได้ชัดเจนยิ่งขึ้น นี่คือไดอะแกรมที่แสดงโครงสร้างและการไหลของข้อมูล (Data Flow) ครับ

อธิบายจากรูปภาพเพิ่มเติม (Deep Dive)
- User to NAS (The Entry): ผู้ใช้เชื่อมต่อกับ NAS (เช่น MikroTik หรือ Access Point) ผ่าน Protocol เช่น PPPoE หรือ Hotspot
- NAS to RADIUS (The Request): NAS จะใช้ RADIUS Protocol (UDP 1812/1813) ส่งข้อมูล
Access-Requestไปยัง RADIUS Server เพื่อขออนุมัติ - RADIUS to Database (The Auth): RADIUS Server จะทำการ Query ข้อมูลจาก SQL Database (เช่น MySQL) เพื่อเช็ค Username, Password และ Profile (ความเร็ว/เวลา)
- RADIUS to NAS (The Enforcement): เมื่อยืนยันเสร็จ RADIUS จะส่ง
Access-Acceptพร้อมค่า Attributes (เช่น Limit-Rate: 10M/10M) กลับไปให้ NAS บังคับใช้กับผู้ใช้ - Accounting Flow: NAS จะส่งข้อมูลการใช้งาน (Data Usage) กลับไปที่ RADIUS เป็นระยะ เพื่อบันทึกลง Database สำหรับทำรายงานหรือตัดยอดเงิน
- Manager & API Layer
- RADIUS Manager: เป็น Web GUI ที่เชื่อมต่อกับ Database เพื่อให้ Admin จัดการ User ได้ง่าย
- API: เป็นตัวกลางให้ระบบภายนอก (เช่น App มือถือ, ระบบตัดบัตรเครดิต) เข้ามาดึงข้อมูลหรือแก้ไขสถานะผู้ใช้ใน Database โดยไม่ต้องสั่งการ RADIUS โดยตรง
เรื่องที่เกี่ยวข้อง