Mikrotik : Praktikum Voucher Hotspot dan Diagnosa Kegagalan Login
Voucher hotspot kelihatan sederhana: cetak kode, jual, siswa login. Masalahnya, hampir semua keluhan "voucher saya tidak bisa dipakai" lahir dari tiga hal yang tidak terlihat di kertas voucher β batas sesi, batas uptime, dan cookie yang masih menempel di perangkat. Lab ini menguji ketiganya dengan sengaja merusak konfigurasi, lalu membaca bukti di router.
Artikel ini pendamping langsung dari Mikrotik : Hotspot Lanjutan (User Profile dan Voucher). Kalau di artikel pagi kita membedah tiga lapis hotspot, di sini kita pegang obengnya: 10 langkah lab, tabel gejala, dan cara memastikan voucher benar-benar habis sesuai aturan.
π― Tujuan
Setelah menyelesaikan lab ini, kamu bisa:
- membuktikan sendiri beda session-timeout dan limit-uptime lewat uji waktu singkat;
- menjelaskan kenapa satu kode voucher bisa dipakai di dua perangkat, dan cara menutupnya;
- membedakan kuota yang dipasang di user versus yang salah dipasang di user profile;
- mendiagnosa keluhan login hotspot dengan bukti dari `active`, `host`, `cookie`, dan `log` β bukan menebak;
- membersihkan lab sampai kembali ke kondisi awal tanpa menyisakan user atau aturan uji.
π Konteks nyata
Bayangkan hotspot sekolah sebagai loket karcis di gedung serbaguna. Voucher adalah karcisnya, user profile adalah jenis tiket (1 jam, 1 hari, guru), dan perangkat siswa adalah orang yang masuk lewat pintu.
Masalah muncul saat loket tidak mencatat siapa yang masih di dalam. Karcis 1 jam bisa berpindah tangan tanpa pernah "dilubangi", dan pintu tetap terbuka untuk orang berikutnya.
π₯ Kasus nyata: sebuah warnet kecil di depan SMK menjual 30 voucher "1 jam" untuk kelas bimbel sore.
- Siswa login di HP, lalu pindah ke laptop dan ditolak dengan pesan `already logged in`.
- Operator panik dan menaikkan `shared-users` menjadi 3 untuk semua profile.
- Akibatnya satu kode dipakai tiga perangkat, 30 voucher habis untuk 60+ perangkat, dan uplink 20 Mbps penuh sampai video belajar putus-putus.
- Perbaikan yang benar: `shared-users=1` + `limit-uptime` + memutus sesi basi dari menu `active`.
π§ Konsep singkat
Voucher hotspot adalah kombinasi tiga pengaturan yang bekerja di lapisan berbeda:
- User = identitas dan jatah pribadi. Di sinilah `limit-uptime`, `limit-bytes-total`, dan `mac-address` menempel.
- User profile = fasilitas bersama. Isinya `session-timeout`, `shared-users`, `rate-limit`, dan `address-list`.
- Server profile = cara login di gerbang. Isinya `login-by`, `http-cookie-lifetime`, `https-redirect`, dan `dns-name`.
Satu kode voucher bisa gagal dipakai bukan karena salah ketik, tapi karena sesi lama masih tercatat di `active` atau cookie lama masih valid di browser.
π Angka penting: default RouterOS β `shared-users=1`, `session-timeout=0s`, `http-cookie-lifetime=3d`, `mac-cookie-timeout=3d`, `addresses-per-mac=2`, `idle-timeout` server `5m` untuk client yang belum login, dan `login-timeout=none`.
π§© Istilah penting
| Istilah | Arti sederhana |
|---|---|
| Satu kali login sampai logout atau terputus. Kalau login ulang, sesi baru dimulai dari nol. | |
| Batas lama satu sesi. Dihitung ulang setiap login. | |
| Batas total waktu pemakaian milik user. Menumpuk dan tidak di-reset oleh logout. | |
| Jumlah perangkat yang boleh online bersamaan dengan satu username. | |
| "Tanda tangan" di browser agar tidak perlu ketik password lagi sampai masa berlakunya habis. | |
| Login otomatis berdasarkan alamat perangkat, bukan browser. | |
| Daftar pengecualian: boleh lewat tanpa login (`bypassed`) atau dilarang total (`blocked`). | |
| Halaman yang tetap boleh dibuka sebelum login, misalnya portal sekolah. |
π§ Praktik: Lab 10 Uji Voucher Hotspot
Lab ini memakai satu router MikroTik yang sudah punya hotspot jalan, plus dua perangkat client (HP dan laptop). Jangan kerjakan di hotspot produksi. Kalau belum punya dasar hotspot, baca dulu Mikrotik : Hotspot Dasar.
πΉ Persiapan lab
Topologi dan alamat yang dipakai:
- Router: `ether1` ke internet (DHCP client), `ether2`β`ether4` masuk `bridge-LAN`.
- Gateway hotspot: `10.5.50.1/24` di `bridge-LAN`, pool `hs-pool` = `10.5.50.10-10.5.50.200`.
- Server hotspot: `hs-lan`, profile server `hsprof1`.
- Client: HP A dan laptop B, terhubung ke WiFi/ether LAN.
Simpan baseline ke catatan sebelum mengubah apa pun:
/ip hotspot print
/ip hotspot profile print detail
/ip hotspot user profile print
/ip hotspot user print
/ip hotspot active print
/ip hotspot host print
/ip hotspot cookie print
/ip firewall nat print where chain=srcnat
πΉ Langkah 1 β Baseline bukti
Tujuan langkah ini: punya angka pembanding. Tanpa baseline, kita tidak bisa membedakan "memang begitu" dari "baru rusak".
- Catat nama server, profile server, dan `login-by` yang aktif.
- Pastikan `masquerade hotspot network` ada di NAT.
- Login satu kali dengan user uji, lalu catat isi `active` dan `host`.
π§ͺ Uji cepat: kalau `active` kosong padahal client sudah dapat IP, masalahnya belum sampai tahap login β cek `host`, DHCP, dan halaman login.
πΉ Langkah 2 β Buat paket dan voucher uji
Buat tiga profile dengan waktu pendek supaya lab tidak berjam-jam:
/ip hotspot user profile add name=uji-sesi session-timeout=2m shared-users=1 rate-limit=2M/5M comment="uji batas sesi"
/ip hotspot user profile add name=uji-up limit-uptime=2m shared-users=1 rate-limit=2M/5M comment="salah: limit di profile"
/ip hotspot user profile add name=uji-kuota shared-users=1 rate-limit=2M/5M comment="untuk uji kuota"
Lalu buat user-nya:
/ip hotspot user add name=uji-a password=UJI-A profile=uji-sesi
/ip hotspot user add name=uji-b password=UJI-B profile=uji-kuota limit-uptime=2m
/ip hotspot user add name=uji-c password=UJI-C profile=uji-kuota limit-bytes-total=20M
π Angka penting: `2M/5M` dibaca dari sudut router β `rx` 2 Mbps adalah upload client, `tx` 5 Mbps adalah download client. Kalau dibalik, video jadi lancar tapi upload tugas tersendat.
πΉ Langkah 3 β Uji A: satu voucher, dua perangkat
- Login HP A dengan `uji-a`. Perhatikan `active` bertambah satu baris.
- Login laptop B dengan kode yang sama.
- Catat pesan yang muncul di halaman login.
Hasil yang diharapkan: laptop ditolak karena `shared-users=1`. Sekarang ubah profile menjadi `shared-users=2`, logout lalu login ulang keduanya. Keduanya bisa online β inilah yang terjadi di warnet kasus tadi.
/ip hotspot user profile set uji-sesi shared-users=2
/ip hotspot active print detail
β οΈ Hati-hati: `addresses-per-mac=2` di level server membatasi jumlah IP per MAC. HP yang memakai tethering atau WiFi randomization bisa memakan jatah ini dan ditolak sebelum sempat login.
πΉ Langkah 4 β Uji B: jam habis versus kuota waktu habis
Ini uji paling penting. Login `uji-a` (profile `uji-sesi`, `session-timeout=2m`) dan biarkan 2 menit.
- Setelah terputus, login lagi. Catat `session-time-left` β nilainya kembali ke 2 menit.
- Lihat kolom `uptime` pada user: angkanya terus bertambah, tidak reset.
- Sekarang login `uji-b` yang punya `limit-uptime=2m`. Setelah 2 menit, coba login lagi.
Bedanya: `uji-a` boleh login sepuasnya karena batasnya per sesi, sedangkan `uji-b` langsung ditolak karena total uptime-nya sudah habis.
/ip hotspot user print detail where name=uji-a
/ip hotspot active print detail where user=uji-a
/ip hotspot user print detail where name=uji-b
π‘ Tips: untuk voucher yang dijual, pasang `session-timeout` di profile dan `limit-uptime` di user. Yang pertama mengakhiri sesi, yang kedua mencegah kode dipakai bergiliran.
πΉ Langkah 5 β Uji C: kecepatan terbalik
- Ukur download dan upload client dari `uji-a` (profile `2M/5M`).
- Ubah profile menjadi `rate-limit=5M/2M`, logout, login lagi, ukur ulang.
Kalau hasil pertama download Β±5 Mbps dan upload Β±2 Mbps, berarti arah sudah benar. Banyak operator mengira angka pertama adalah download, lalu memasang `5M/2M` untuk paket "download 5 Mbps" β hasilnya justru terbalik.
/queue simple print where dynamic=yes
Setiap user hotspot yang login akan memunculkan antrean dinamis. Kalau antrean tidak muncul, `rate-limit` tidak terbaca β biasanya karena profile user tidak terpasang di user tersebut.
πΉ Langkah 6 β Uji D: kuota yang salah tempat
Coba pasang batas byte di user profile:
/ip hotspot user profile set uji-kuota limit-bytes-total=20M
Perintah ini akan ditolak karena parameter itu memang tidak ada di user profile. Sekarang pasang di user (`uji-c`, sudah dibuat dengan `limit-bytes-total=20M`), login, lalu unduh file besar sampai lewat 20 MB.
Amati: user terputus tepat setelah batas terlampaui, dan percobaan login berikutnya langsung terputus lagi karena counter sudah lewat batas.
π§ͺ Uji cepat: `/ip hotspot user print detail where name=uji-c` β lihat kolom `limit-bytes-total` dan `uptime`. Kalau batas byte kosong, berarti kuota tidak pernah terpasang.
πΉ Langkah 7 β Uji E: cookie dan login hantu
- Login `uji-a` di browser HP, lalu tutup browser tanpa menekan tombol logout.
- Buka lagi halaman apa pun. Kamu akan masuk otomatis tanpa password.
- Cek `/ip hotspot cookie print` β ada entri dengan `expires-in` sekitar 3 hari.
Ini perilaku normal `login-by=http-chap,cookie`. Bahayanya di perangkat bersama: siswa berikutnya memakai HP/laptop yang sama dan otomatis memakai jatah siswa sebelumnya. Uji juga `mac-cookie` dengan `add-mac-cookie=yes` (default): login otomatis mengikuti MAC perangkat, bukan browser.
/ip hotspot cookie print
/ip hotspot active print detail
/ip hotspot profile set hsprof1 http-cookie-lifetime=1m
Setelah `http-cookie-lifetime` diperkecil, tunggu satu menit lalu buka halaman lagi β sekarang password diminta. Untuk lab bersama, matikan mac cookie di profile user dengan `add-mac-cookie=no`.
β οΈ Hati-hati: dokumentasi menyebut MAC cookie dihapus dan login ditolak bila server melihat lebih dari satu host dengan MAC yang sama. Di lab yang memakai klon MAC atau VM, gejala ini terlihat seperti "voucher rusak".
πΉ Langkah 8 β Uji F: halaman login tidak muncul
Uji dari HP:
- Buka `http://neverssl.com` β halaman login seharusnya muncul.
- Buka `https://contoh-situs.com` β dengan `https-redirect=yes` dan tanpa sertifikat valid, browser bisa menampilkan error sertifikat, bukan halaman login.
/ip hotspot profile print detail
/ip hotspot profile set hsprof1 https-redirect=no
Setelah `https-redirect=no`, permintaan HTTPS akan ditolak dan pengguna diarahkan membuka halaman HTTP dulu. Ini pilihan sadar: lebih aman daripada sertifikat yang tidak cocok, tapi terasa kurang nyaman.
Tambahkan portal sekolah ke walled garden supaya bisa dibuka sebelum login:
/ip hotspot walled-garden add dst-host=noctkj.net comment="portal baca materi"
/ip hotspot walled-garden print
π‘ Tips: fitur "captive portal" otomatis di Android/iOS (RFC 7710) hanya aktif bila router punya `dns-name` hotspot dan sertifikat SSL valid. Tanpa keduanya, jangan heran popup login tidak muncul walau WiFi tersambung.
πΉ Langkah 9 β Uji G: ip-binding yang membocorkan internet
Daftarkan laptop B sebagai `bypassed`, lalu buktikan laptop itu langsung internet tanpa login:
/ip hotspot ip-binding add mac-address=AA:BB:CC:DD:EE:FF type=bypassed comment="uji bocor"
/ip hotspot ip-binding print
Sekarang ganti ke `type=blocked` dan uji lagi β semua trafik laptop harus drop. Hapus binding setelah uji.
β οΈ Hati-hati: `bypassed` sering dipasang untuk "laptop guru" lalu lupa dihapus. Siapa pun yang meniru MAC address itu (sangat mudah di OS tertentu) akan dapat internet gratis dan tidak tercatat di `active`.
πΉ Langkah 10 β Bersih-bersih dan lembar hasil
Hapus semua objek uji supaya lab kembali bersih:
/ip hotspot active remove [find where user~"uji-"]
/ip hotspot user remove [find where name~"uji-"]
/ip hotspot user profile remove [find where name~"uji-"]
/ip hotspot ip-binding remove [find where comment="uji bocor"]
/ip hotspot walled-garden remove [find where dst-host="noctkj.net"]
/ip hotspot cookie remove [find]
Isi lembar hasil berikut selama lab. Ini yang membedakan "sudah pernah coba" dengan "sudah paham".
| Uji | Yang diubah | Gejala yang terlihat | Bukti di router |
|---|---|---|---|
| A | `shared-users=1` lalu `2` | Login kedua ditolak / diterima | `active` bertambah baris |
| B | `session-timeout` vs `limit-uptime` | Bisa login ulang vs ditolak permanen | `session-time-left`, `uptime` user |
| C | `rate-limit=2M/5M` lalu dibalik | Download/upload tertukar | `queue simple` dinamis |
| D | Batas byte di profile vs user | Perintah ditolak vs user terputus | `user print detail` |
| E | Cookie 3d lalu 1m | Login otomatis lalu minta password | `cookie print`, `login-by` |
| F | `https-redirect` dan walled garden | Error sertifikat / halaman tetap terbuka | `profile print detail` |
| G | `ip-binding` bypassed dan blocked | Internet gratis / drop total | `ip-binding print`, `host print` |
π Dipakai di dunia kerja
- Sekolah:** lab komputer dan ujian berbasis komputer memakai voucher per kelas. Tanpa `limit-uptime`, kode kelas pagi masih bisa dipakai kelas siang, dan pengawas kehilangan kendali atas siapa yang online.
- Warnet dan kios pulsa:** voucher dijual per jam. `shared-users` yang longgar langsung mengurangi omzet karena satu karcis dipakai beberapa orang.
- Kafe dan hotel:** tamu mendapat kode per kamar atau per meja. `session-timeout` mencegah kode dipakai tamu berikutnya, sementara `mac-cookie` membuat tamu tidak perlu login berulang.
- Kantor:** SSID tamu memakai voucher harian. Bagian ini harus terpisah dari SSID staf, dan `ip-binding` dipakai untuk perangkat presentasi β bukan untuk semua laptop.
- Event dan workshop:** panitia mencetak ratusan kode sekaligus. Cetakan harus memakai huruf besar tanpa karakter mirip (`0/O`, `1/l`), dan kuota harus dibatasi agar uplink tidak habis di sesi pertama.
- ISP komunitas/RT-RW net:** voucher menjadi dasar penagihan. Di skala ini, pencatatan RADIUS lebih penting daripada sekadar user lokal di router.
β Verifikasi
Jalankan berurutan setelah lab. Semua harus memberi jawaban yang bisa dibaca, bukan sekadar "tidak error".
/ip hotspot active print detail
/ip hotspot user print detail
/ip hotspot host print
/ip hotspot cookie print
/ip hotspot ip-binding print
/ip hotspot walled-garden print
/log print where topics~"hotspot"
Yang dicek:
- `active` menampilkan user, alamat, MAC, `uptime`, `session-time-left`, dan `login-by`.
- `user print detail` menunjukkan `limit-uptime` dan `limit-bytes-total` hanya ada di user, bukan profile.
- `cookie print` kosong setelah dibersihkan, dan tidak ada entri `expires-in` yang menggantung.
- `ip-binding` dan `walled-garden` tidak menyisakan objek uji.
- Log hotspot mencatat login/logout beserta alasannya.
π§ͺ Uji cepat: login satu user, lalu jalankan `/ip hotspot active print detail where user=uji-a`. Kalau `session-time-left` tidak muncul, berarti user memakai profile tanpa `session-timeout`.
β οΈ Kesalahan umum & troubleshooting
| Gejala | Perintah pemeriksa | Penyebab dan perbaikan |
|---|---|---|
| `invalid username or password` padahal kode benar | `/ip hotspot user print detail` | User salah ketik, `disabled`, atau `limit-uptime` sudah habis. Buat user baru untuk uji, jangan asal ubah profile. |
| `already logged in` di perangkat kedua | `/ip hotspot active print` | `shared-users=1` dan sesi lama masih hidup. Putuskan sesi basi, jangan langsung menaikkan `shared-users`. |
| Login sukses tapi tidak bisa internet | `/ip firewall nat print where chain=srcnat` | Rule masquerade hotspot hilang atau dipindah urutannya. Cek juga DNS di `/ip dns`. |
| Halaman login tidak pernah muncul | `/ip hotspot profile print detail` | `https-redirect=yes` tanpa sertifikat valid. Set `https-redirect=no` atau pasang sertifikat dan `dns-name`. |
| Halaman login berputar terus | `/ip hotspot host print` | Host lama masih tercatat, jam perangkat tidak sinkron, atau cookie rusak. Hapus host dan cookie, lalu login ulang. |
| Voucher 1 jam tidak pernah berhenti | `/ip hotspot user print detail` | `session-timeout` dipasang di tempat lain atau user memakai profile `default`. Pasang di profile yang benar. |
| Kuota 20 MB tidak berhenti | `/ip hotspot user print detail` | Batas byte dipasang di user profile (tidak ada parameternya). Pindahkan ke user. |
| Download terasa lebih lambat dari paket | `/queue simple print where dynamic=yes` | `rate-limit` terbalik: `rx` adalah upload client, `tx` adalah download client. |
| Dua perangkat satu akun tetap lolos | `/ip hotspot active print` | `shared-users` dinaikkan untuk semua profile. Kembalikan ke 1 dan pakai `limit-uptime`. |
| Perangkat lain otomatis login sebagai user lama | `/ip hotspot cookie print` | Cookie atau MAC cookie masih berlaku (`3d`). Perkecil `mac-cookie-timeout` atau set `add-mac-cookie=no`. |
| Client dapat `169.254.x.x` | `/ip hotspot host print` | Pool hotspot habis atau DHCP server tidak berada di interface hotspot. |
π Catatan keamanan & etika
- Voucher adalah kredensial. Perlakukan seperti password: jangan ditempel di meja resepsionis, jangan difoto dan disebar ke grup kelas.
- Login otomatis lewat cookie nyaman, tapi di perangkat bersama ia bisa membuat orang lain memakai jatahmu. Ajarkan tombol logout, bukan sekadar menutup browser.
- `ip-binding` bertipe `bypassed` mematikan autentikasi untuk perangkat itu. Pakai seperlunya, beri komentar, dan hapus setelah acara selesai.
- Hotspot melihat alamat IP dan tujuan trafik pengguna. Jangan pernah membuka capture atau log untuk kepentingan pribadi; cukup untuk diagnosa gangguan.
- Pisahkan jaringan tamu dari jaringan manajemen. Hotspot yang menempel di bridge yang sama dengan perangkat guru membuat satu salah konfigurasi berpotensi membuka akses ke router.
- Untuk skala besar (ratusan user, beberapa lokasi), pindahkan basis user ke RADIUS/User Manager agar pencatatan dan pemutusan sesi terpusat.
π Angka penting: `http-cookie-lifetime=3d` dan `mac-cookie-timeout=3d` artinya perangkat bisa login otomatis hingga tiga hari. Di lab atau warnet, angka ini sering lebih panjang dari masa berlaku voucher itu sendiri.
π Kesimpulan
Voucher yang "rusak" hampir selalu bisa dijelaskan oleh satu dari tiga hal: sesi lama yang belum diputus, batas waktu yang salah lapisan, atau cookie yang masih menempel.
Kalau kamu bisa menunjukkan bukti di `active`, `user print detail`, dan `cookie print`, keluhan pengguna berubah dari "voucher saya error" menjadi "sesi kamu masih terbuka di HP tadi" β dan itu bisa langsung diperbaiki.
Langkah berikutnya: buat satu paket voucher resmi untuk lab sekolahmu (1 jam, 1 hari, guru), lalu uji sendiri ketiga batasnya sebelum kode dicetak dan dijual.
π Materi terkait
- Mikrotik : Hotspot Lanjutan (User Profile dan Voucher) β konsep tiga lapis hotspot dan strategi paket.
- Mikrotik : Hotspot Dasar β memasang hotspot pertama kali dari nol.
- Mikrotik : NAT Masquerade agar Client Bisa Internet β kalau login berhasil tapi internet mati.
- Mikrotik : Firewall Filter Dasar β memisahkan trafik tamu dan manajemen.
- Mikrotik : Queue Sederhana untuk Bandwidth Management β membatasi bandwidth di luar rate-limit hotspot.
- Mikrotik : Scripting Dasar RouterOS β membuat voucher massal dengan script.
π Referensi
- MikroTik, HotSpot - Captive portal β https://help.mikrotik.com/docs/spaces/ROS/pages/56459266/HotSpot+-+Captive+portal
- MikroTik, HotSpot User Manager β https://help.mikrotik.com/docs/spaces/ROS/pages/56459280/User+Manager
- MikroTik, RouterOS CLI reference: /ip/hotspot/user β https://help.mikrotik.com/docs/spaces/ROS/pages/328134/User
- IETF, RFC 7710: Captive-Portal Identification Using DHCP or Router Advertisements β https://www.rfc-editor.org/rfc/rfc7710
- IETF, RFC 2865: Remote Authentication Dial In User Service (RADIUS) β https://www.rfc-editor.org/rfc/rfc2865