MikroTik Hotspot Captive Portal — สำหรับ Cafe / Hotel + Voucher
ตั้งค่า MikroTik Hotspot ให้ Guest ต้องล็อกอินก่อนใช้ Wi-Fi พร้อม Walled-Garden, Voucher Batch และ Branding หน้า Login ครบจบในบทความเดียว
1. ใช้ Hotspot ทำอะไรได้บ้าง#
MikroTik Hotspot คือระบบ Captive Portal ที่บังคับให้ผู้ใช้ผ่านหน้า Login ก่อนเข้าถึง Internet บน RouterOS ใช้ได้หลากหลาย Scenario:
- Cafe / Co-working Space — แจก Voucher รายชั่วโมง จำกัด Bandwidth ต่อ Session
- Hotel / Resort — Login ด้วยหมายเลขห้อง, บันทึก Log ตาม PDPA / พ.ร.บ. คอมพิวเตอร์
- Event / Conference — ควบคุมจำนวน Concurrent User, กำหนด Expiry ตามวันงาน
- ร้านอาหาร / โรงพยาบาล — อนุญาตเฉพาะ Social Media หรือ Line ก่อน Login (Walled-Garden)
ระบบ Hotspot บน RouterOS ทำงานบน Layer 7 ผ่าน HTTP Redirect — ไม่ต้องพึ่ง Controller ภายนอก Router จัดการ DHCP, Authentication, Accounting และ Bandwidth Shaping ได้ในตัวเดียว
2. Pre-requisites#
ก่อนเริ่ม Setup ตรวจสอบให้ครบ:
| รายการ | รายละเอียด |
|---|---|
| RouterOS | 7.x (แนะนำ 7.14 ขึ้นไป) |
| License | Level 4+ (Hotspot ใช้ได้ตั้งแต่ Level 4) |
| Interface สำหรับ Guest | ether หรือ Bridge แยกจาก Management Network |
| IP Plan | ตัวอย่าง: 192.168.88.0/24 → Guest Pool |
| DNS | ใช้ Router เป็น DNS Proxy หรือ Upstream 1.1.1.1 |
แนะนำให้แยก VLAN หรือ Interface Guest Network ออกจาก LAN หลักทุกครั้ง เพื่อป้องกัน Guest เข้าถึงอุปกรณ์ภายในองค์กร
DHCP Plan ตัวอย่าง:
Network : 192.168.99.0/24
Gateway : 192.168.99.1 (Router ether2-guest)
Pool : 192.168.99.10 - 192.168.99.254
DNS : 192.168.99.1
3. รัน Hotspot Setup Wizard#
ผ่าน Winbox#
- เปิด Winbox → เชื่อมต่อ Router
- ไปที่ IP → Hotspot → Hotspot Setup
- เลือก Interface ที่ต้องการเปิด Hotspot (เช่น
ether2-guestหรือbridge-guest) - กรอก IP Address ของ Interface:
192.168.99.1/24 - กำหนด DHCP Pool:
192.168.99.10 - 192.168.99.254 - เลือก DNS: ติ๊ก "Use this router as DNS" หรือกรอก Upstream DNS
- กำหนด DNS Name สำหรับ Hotspot เช่น
wifi.myhotel.local - เลือก Certificate:
none(สำหรับ HTTP) หรือ Upload Certificate (สำหรับ HTTPS) - กด Next จน Wizard เสร็จ — Hotspot Server, DHCP Server และ NAT Rule จะถูกสร้างอัตโนมัติ
ผ่าน CLI (RouterOS Terminal)#
/ip hotspot setup
hotspot interface: ether2-guest
local address of network: 192.168.99.1/24
masquerade network: yes
address pool of network: 192.168.99.10-192.168.99.254
select certificate: none
ip address of smtp server: 0.0.0.0
dns servers: 1.1.1.1,8.8.8.8
dns name: wifi.myhotel.local
name of local hotspot user: admin
password for the user: (กรอก Password)
หลัง Wizard เสร็จ ลอง Connect Wi-Fi Guest แล้วเปิด Browser — ควรถูก Redirect ไปหน้า Login อัตโนมัติ ถ้ายังไม่ Redirect ลอง Clear DNS Cache หรือ Flush Browser Cache ก่อน
4. Configure Walled-Garden#
Walled-Garden คือรายการ Domain/IP ที่อนุญาตให้ Guest เข้าถึง ก่อน Login เหมาะสำหรับ:
- Google Maps — แสดงแผนที่หน้าร้าน
- Line / Facebook — สแกน QR Code รับ Voucher
- PromptPay / Payment Gateway — ชำระเงินก่อน Login
ตั้งค่าผ่าน Winbox#
ไปที่ IP → Hotspot → Walled Garden → กด +
# อนุญาต Google Maps และ Google Services
/ip hotspot walled-garden
add dst-host=*.google.com action=allow
add dst-host=*.googleapis.com action=allow
add dst-host=*.gstatic.com action=allow
# อนุญาต Line
add dst-host=*.line.me action=allow
add dst-host=*.line-scdn.net action=allow
# อนุญาต Facebook
add dst-host=*.facebook.com action=allow
add dst-host=*.fbcdn.net action=allow
# อนุญาต 2C2P / PromptPay (ตรวจสอบ Domain จาก Payment Provider)
add dst-host=*.2c2p.com action=allow
Walled-Garden IP (สำหรับ IP เฉพาะ)#
/ip hotspot walled-garden ip
add dst-address=203.150.0.0/16 action=accept comment="CAT/TOT PromptPay Range"
Walled-Garden ที่กว้างเกินไป (เช่น allow ทั้ง *.com) จะทำให้ Hotspot ไม่มีประสิทธิภาพ — กำหนดเฉพาะ Domain ที่จำเป็นจริงๆ เท่านั้น
5. สร้าง User Profile#
User Profile กำหนด Policy ให้กับกลุ่มผู้ใช้ เช่น เวลาใช้งานสูงสุด, Bandwidth และจำนวน Session
สร้าง Profile สำหรับ Cafe (2 ชั่วโมง, 10/2 Mbps)#
/ip hotspot user profile
add name="cafe-2h" \
session-timeout=2h \
idle-timeout=30m \
rate-limit="10M/2M" \
shared-users=1 \
add-mac-cookie=yes
| Parameter | ค่า | ความหมาย |
|---|---|---|
session-timeout |
2h |
หมดอายุหลัง Login ครบ 2 ชั่วโมง |
idle-timeout |
30m |
Logout อัตโนมัติถ้าไม่มี Traffic 30 นาที |
rate-limit |
10M/2M |
Download 10 Mbps / Upload 2 Mbps |
shared-users |
1 |
1 Account ใช้ได้ 1 Device พร้อมกัน |
สร้าง Profile สำหรับ Hotel (24 ชั่วโมง, 20/5 Mbps)#
/ip hotspot user profile
add name="hotel-24h" \
session-timeout=1d \
idle-timeout=2h \
rate-limit="20M/5M" \
shared-users=2
6. Generate Voucher Batch#
สร้าง User แบบ Batch ผ่าน Script#
RouterOS ไม่มีฟีเจอร์ Voucher GUI ในตัว แต่ใช้ Script สร้าง User พร้อมกัน 100 รายการได้:
:local count 1;
:while ($count <= 100) do={
:local username ("cafe-" . $count);
:local password [ /tool fetch url="http://127.0.0.1" as-value output=none; \
:return ([:tostr $count] . "x" . [:pick [/rndstr length=6] 0 6]) ];
/ip hotspot user add name=$username password=$count profile=cafe-2h;
:set count ($count + 1);
}
สำหรับการผลิต Voucher จริงในระดับ Production แนะนำใช้ UserManager (Package แยก) ที่มีหน้า Web UI สำหรับพิมพ์ Voucher เป็น PDF ได้โดยตรง — ดาวน์โหลดจาก mikrotik.com/download แล้ว Upload ผ่าน System → Packages
สร้าง Voucher แบบง่ายผ่าน Winbox#
- IP → Hotspot → Users → กด
+ - กรอก Name (Voucher Code) และ Password
- เลือก Profile:
cafe-2h - กด OK — Export รายการเป็น CSV ผ่าน File → Export
7. Branding Login Page#
ไฟล์ HTML ของหน้า Login อยู่ใน Flash/Internal Storage ของ Router ที่ Path /flash/hotspot/
Upload ผ่าน Winbox#
- เปิด Files ใน Winbox
- Navigate ไปที่
hotspot/folder - ลาก
login.htmlที่แก้ไขแล้วมา Drop ใน Winbox Files
ตัวแปรสำคัญใน login.html#
<!-- URL Login Form -->
<form action="$(link-login-only)" method="post" name="login">
<input type="hidden" name="dst" value="$(link-orig)">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<button type="submit">เชื่อมต่อ Wi-Fi</button>
</form>
<!-- แสดง Error Message -->
$(if error)<p style="color:red">$(error)</p>$(endif error)
เพิ่ม Logo ร้าน#
<img src="logo.png" alt="Cafe Logo" style="width:200px; margin:20px auto; display:block;">
อัปโหลดไฟล์ logo.png ไว้ใน /flash/hotspot/ folder เดียวกัน
RouterOS รองรับ HTML/CSS/JavaScript ทั่วไปในหน้า Login — ใช้ Bootstrap หรือ Tailwind ได้ แต่ต้อง Bundle ไว้ใน Router เพราะ Guest ยังไม่ได้ Login จึง Fetch จาก CDN ภายนอกไม่ได้ (ใช้ Walled-Garden เพื่อ Allow CDN แทน)
8. Security Hardening#
ปิด Winbox และ SSH จาก Guest Network#
/ip firewall filter
add chain=input in-interface=ether2-guest dst-port=8291 protocol=tcp \
action=drop comment="Block Winbox from Guest"
add chain=input in-interface=ether2-guest dst-port=22 protocol=tcp \
action=drop comment="Block SSH from Guest"
add chain=input in-interface=ether2-guest dst-port=80,443,8080 protocol=tcp \
action=drop comment="Block WebFig from Guest"
Rate-Limit Failed Login (ป้องกัน Brute Force)#
/ip hotspot
set [find] login-by=cookie,http-chap
/ip firewall filter
add chain=input in-interface=ether2-guest protocol=tcp dst-port=80 \
connection-limit=10,32 action=drop \
comment="Limit HTTP connections per IP (anti-brute-force)"
ป้องกัน Guest-to-Guest Traffic#
/ip firewall filter
add chain=forward in-interface=ether2-guest out-interface=ether2-guest \
action=drop comment="Block Guest-to-Guest"
อย่าลืมตั้ง Hotspot → Server → HTTPS และ Upload Certificate ถ้าต้องการให้หน้า Login แสดง HTTPS — Browser สมัยใหม่จะแจ้งเตือน "Not Secure" บน HTTP Login Page ซึ่งทำให้ Guest ไม่ไว้วางใจ
9. Monitor และ Report#
ดู Active Session แบบ Real-time#
/ip hotspot active print
ผลลัพธ์แสดง: Username, IP, MAC, Uptime, Bytes In/Out
ดู Top User (ใช้ Bandwidth สูงสุด)#
/ip hotspot active print detail
ดู Log การ Login/Logout#
/log print where topics~"hotspot"
ผ่าน Winbox#
ไปที่ IP → Hotspot → Active — เห็น Session ทั้งหมด สามารถ Disconnect User ได้ด้วยการคลิกขวา → Remove
สำหรับ Report รายวัน/รายเดือน ติดตั้ง UserManager Package เพิ่มเติม ซึ่งมี Dashboard แสดง Traffic Usage, Session History และส่งออกเป็น CSV ได้
หากต้องการให้ C9NETWORK ออกแบบและติดตั้งระบบ MikroTik Hotspot สำหรับ Cafe, Hotel หรือ Co-working Space ของคุณ ครอบคลุมตั้งแต่ Network Design, VLAN Planning, Voucher System ไปจนถึง Branding Login Page — ติดต่อทีมงานเพื่อรับข้อเสนอที่ตรงกับความต้องการของคุณได้เลย