หน้าแรก / บทความ & คู่มือ / วิธีตั้งค่า Captive Portal + FreeRADIUS ยืนยันตัวตน WiFi ด้วย SMS
WiFi Hotspot

วิธีตั้งค่า Captive Portal + FreeRADIUS ยืนยันตัวตน WiFi ด้วย SMS

โดย: AI Auto Poster 15/9/2569 เข้าชม: 3 ครั้ง
วิธีตั้งค่า Captive Portal + FreeRADIUS ยืนยันตัวตน WiFi ด้วย SMS
เรียนรู้วิธีตั้งค่า Captive Portal ร่วมกับ FreeRADIUS ทำระบบยืนยันตัวตน WiFi ผ่าน SMS OTP และ Social Login พร้อมสถาปัตยกรรมระบบที่เสถียรที่สุด

เที่ยงคืนวันอาทิตย์ก่อนวันเปิดเทอม เจ้าของหอพักใหญ่ย่านมหาวิทยาลัยโทรหาผมด้วยน้ำเสียงตื่นตระหนก "ช่างครับ คนเข้า WiFi ไม่ได้เลย หน้าล็อกอินหมุนค้าง บางคนกรอกรหัสแล้วหลุด" พอผม Remote เข้าไปเช็ก MikroTik RouterOS ตัวหลัก พบว่า CPU วิ่ง 100% เต็ม เพราะระบบพยายามประมวลผล User Database ในตัวอุปกรณ์ที่เพิ่มขึ้นกว่า 800 Account แถมเจ้าของยังอยากเปลี่ยนรูปแบบการใช้งานจากคูปองกระดาษไปเป็นระบบยืนยันตัวตน WiFi ผ่าน SMS OTP และ Social Login เพื่อเก็บ Log ตาม พ.ร.บ. คอมพิวเตอร์ ให้ถูกต้อง

คืนนั้นผมต้องแก้ขัดด้วยการเคลียร์ Session ที่ค้างอยู่ออกก่อน แต่มันคือสัญญาณเตือนว่าการเก็บ User ไว้บนตัว MikroTik โดยตรงไม่ใช่คำตอบสำหรับการทำระบบ Hotspot ที่มีผู้ใช้จำนวนมาก บทความนี้ผมเลยอยากมาแชร์โซลูชันที่ผมและทีม SIAM-LOGIN ใช้ในการวางระบบ Captive Portal ร่วมกับ FreeRADIUS Server เพื่อรองรับการพิสูจน์ตัวตนผ่าน SMS และ Social Media ได้อย่างเสถียรและเป็นมืออาชีพครับ

ทำไมต้องแยก Captive Portal และ FreeRADIUS ออกจาก Router?

หลายคนมักเข้าใจผิดว่า MikroTik ตัวเดียวสามารถทำได้ทุกอย่าง ตั้งแต่ปล่อยสัญญาณ WiFi, ทำหน้าต้อนรับ, ไปจนถึงเก็บข้อมูลผู้ใช้ ซึ่งก็ทำได้จริงครับถ้าผู้ใช้มีแค่ 20-30 คน แต่เมื่อไหร่ก็ตามที่ผู้ใช้เพิ่มเป็นหลักร้อย การประมวลผลสคริปต์หน้า Captive Portal และการอ่านเขียนฐานข้อมูลจะกินทรัพยากร CPU และ RAM ของ Router มหาศาล

การแยกหน้าที่ให้ Router ทำหน้าที่ส่งต่อแพ็กเกจ (Routing/NAT) แล้วยกภาระการตรวจสอบตัวตนไปให้ FreeRADIUS Server ร่วมกับ External Web Server ทำงานคู่กับ Database อย่าง MySQL/MariaDB จะช่วยให้ระบบทำงานได้เร็วขึ้นอย่างเห็นได้ชัด และเปิดโอกาสให้เราใส่ฟีเจอร์พิสูจน์ตัวตนล้ำๆ เช่น SMS OTP หรือ OAuth 2.0 (Facebook, Google, LINE Login) ได้อย่างไม่มีข้อจำกัด

สถาปัตยกรรมระบบ (Architecture Overview)

ก่อนจะเริ่มคอนฟิก เรามาทำความเข้าใจการไหลของข้อมูล (Data Flow) ในระบบยืนยันตัวตน WiFi รูปแบบนี้กันก่อนครับ:

  • Client Device: เชื่อมต่อ WiFi แล้วร้องขอการเข้าใช้งานเว็บ
  • MikroTik (NAS): ดักจับ HTTP Request แล้ว Redirect ผู้ใช้ไปยัง Web Portal External
  • Captive Portal Web Server: แสดงหน้าต้อนรับ ให้ผู้ใช้เลือกล็อกอินผ่าน SMS OTP หรือ Social Login
  • Authentication Service: ระบบเว็บส่ง SMS API ไปยัง SMS Gateway หรือทำ OAuth Handshake กับ Facebook/Google
  • FreeRADIUS Server: เมื่อผู้ใช้ยืนยันตัวตนผ่าน เว็บโปรแกรมจะสร้าง Account ชั่วคราว หรือส่งสัญญาณ RADIUS Access-Request ไปยัง FreeRADIUS เพื่อส่งคำตอบ Access-Accept กลับมายัง MikroTik
  • User Connected: MikroTik ปลดล็อก IP/MAC Address ให้ผู้ใช้ออกอินเทอร์เน็ตตาม Bandwidth ที่กำหนด

3 ขั้นตอนการคอนฟิกระบบให้ทำงานร่วมกัน

ขั้นตอนที่ 1: ตั้งค่า FreeRADIUS และ Database Backend

ในฝั่งของ Linux Server (เช่น Ubuntu Server) ที่ลง FreeRADIUS ไว้ ให้เราเปิดการใช้งานโมดูล SQL เพื่อใช้ฐานข้อมูล MySQL ในการเก็บ User และ Session Log โดยตั้งค่าในไฟล์ /etc/freeradius/3.0/clients.conf เพื่ออนุญาตให้ MikroTik (NAS) ติดต่อเข้ามาได้

client mikrotik-router {
    ipaddr = 192.168.88.1
    secret = SIAMloginSecretKey2026
    shortname = main-nas
}

กำหนด secret ให้ตรงกัน ซึ่งรหัสนี้จะใช้จับคู่ความปลอดภัยระหว่าง MikroTik กับ FreeRADIUS

ขั้นตอนที่ 2: ตั้งค่า MikroTik Hotspot ชี้ Auth ไปยัง RADIUS

กลับมาที่ฝั่ง MikroTik RouterOS ให้เราสั่งเปิดใช้งาน RADIUS Client สำหรับบริการ Hotspot ผ่าน Winbox หรือ Terminal ด้วยคำสั่ง:

/radius add service=hotspot address=192.168.88.254 secret=SIAMloginSecretKey2026 timeout=3000ms

จากนั้นไปที่ /ip hotspot profile แล้วติ๊กเลือก Use RADIUS พร้อมทั้งกำหนด HTML Directory ให้ Redirect ไปยัง external URL ของ Captive Portal Web Server ที่เราเตรียมไว้

ขั้นตอนที่ 3: การจัดการระบบ SMS OTP และ Social Login (OAuth 2.0)

ในส่วนของหน้าเว็บ Captive Portal เราจะใช้ PHP หรือ Node.js ในการเชื่อมต่อ API:

  • ระบบ SMS OTP: เมื่อผู้ใช้กรอกเบอร์โทรศัพท์ ระบบเว็บจะสุ่มรหัส OTP 6 หลัก แล้วส่งผ่าน SMS Gateway API ไปยังเบอร์นั้น เมื่อผู้ใช้กรอก OTP ถูกต้อง Web Server จะสร้าง RADIUS Profile ชั่วคราวผ่าน SQL Database แล้วส่งค่า HTTP CHAP/PAP Post กลับไปล็อกอินที่ MikroTik
  • ระบบ Social Login: ใช้มาตรฐาน OAuth 2.0 ในการขอ Authentication Token จาก Facebook หรือ Google เพื่อดึงข้อมูลเบอร์โทรศัพท์หรือ Email ที่ยืนยันแล้ว มาใช้เป็น Identity สำหรับบันทึก Log ตาม พ.ร.บ. คอมพิวเตอร์ ก่อนจะยอมปลดล็อกอินเทอร์เน็ต

เทคนิคสำคัญ: การทำ Walled Garden ไม่ให้ Social Login หลุด

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

วิธีแก้คือเราต้องทำ Walled Garden ใน MikroTik เพื่อปล่อยให้ Client สามารถวิ่งไปยัง Domain ชื่อของ OAuth Providers ได้โดยไม่ต้องผ่านการล็อกอินก่อน โดยเข้าไปตั้งค่าที่ /ip hotspot walled-garden ip หรือปลดล็อกเป็น Domain ดังนี้:

  • .facebook.com และ .facebook.net
  • .google.com และ .googleapis.com
  • Domain ของ SMS Gateway API ที่คุณเลือกใช้

สรุปจากประสบการณ์จริง

การเปลี่ยนมาใช้ Captive Portal ที่ทำงานร่วมกับ FreeRADIUS และระบบยืนยันตัวตนผ่าน SMS หรือ Social Login ไม่เพียงแต่ช่วยลดภาระ CPU ของ Router MikroTik ลงได้มากกว่า 70% เท่านั้น แต่ยังช่วยให้ผู้ใช้ได้รับความสะดวกสบาย ไม่ต้องคอยจำรหัสผ่านกระดาษแผ่นเล็กๆ อีกต่อไป แถมฝั่งผู้ประกอบการยังได้ข้อมูล User Log ที่ถูกต้องตรงตามกฎหมายอีกด้วยครับ หากใครกำลังเจอปัญหาระบบ WiFi ล็อคอินช้า หรืออยากอัปเกรดระบบ Hotspot เดิม ลองนำสถาปัตยกรรมนี้ไปปรับใช้กันดูนะครับ

Tags: Captive Portal FreeRADIUS SMS OTP Authentication Social Login MikroTik Hotspot RADIUS Server ระบบยืนยันตัวตน WiFi

คำถามที่พบบ่อยเกี่ยวกับบทความนี้ (FAQ)

Q: ทำไมล็อกอิน Social Login ผ่าน Captive Portal บนมือถือบางรุ่นแล้วหน้าจอค้าง?

เกิดจากระบบ Captive Portal Browser ขนาดเล็ก (CNA Browser) ในสมาร์ตโฟนไม่รองรับ Cookie หรือ OAuth 2.0 เต็มรูปแบบ วิธีแก้คือต้องตั้งค่าสคริปต์ให้ระบบบังคับสั่งเปิด External Browser เช่น Chrome หรือ Safari ก่อนทำกระบวนการ Social Login

Q: การยืนยันตัวตน WiFi ผ่าน SMS OTP มีต้นทุนสูงมากไหม?

ต้นทุนเฉลี่ยอยู่ที่ประมาณ 0.20 - 0.50 บาทต่อข้อความ SMS OTP ขึ้นอยู่กับปริมาณแพ็กเกจที่ซื้อจาก SMS Provider แต่เมื่อเทียบกับการลดภาระงานพิมพ์คูปองแจก และความถูกต้องตาม พ.ร.บ. คอมพิวเตอร์ ถือว่าคุ้มค่าสำหรับธุรกิจโรงแรมและหอพัก

Q: ถ้า FreeRADIUS Server หยุดทำงาน (Down) ผู้ใช้งาน WiFi จะเป็นอย่างไร?

ผู้ใช้เดิมที่ล็อกอินอยู่แล้วจะยังคงใช้งานอินเทอร์เน็ตได้จนกว่า Session จะหมดอายุ แต่ผู้ใช้ใหม่จะไม่สามารถยืนยันตัวตนได้ ทางแก้คือควรทำ Secondary FreeRADIUS Server ไว้สำรอง (Failover) ในระบบ

ต้องการความช่วยเหลือหรือจ้างวางระบบ Network?

ทีมวิศวกร SIAM-LOGIN ยินดีให้คำปรึกษา ออกแบบระบบ และจัดส่งทีมเข้าติดตั้งหน้างาน