Mikrotik : Hotspot Lanjutan (User Profile dan Voucher)
Hotspot dasar biasanya berhenti di "bisa login dan dapat internet". Begitu hotspot dipakai untuk acara sekolah atau dijual per kode, pertanyaannya berubah: bagaimana membatasi waktu, kecepatan, dan jumlah perangkat untuk tiap orang? Di titik itu user profile dan voucher mulai bekerja.
π― Tujuan
Setelah membaca dan mempraktikkan artikel ini, kamu bisa:
- Membedakan server profile, user profile, dan user hotspot tanpa tertukar.
- Merancang paket voucher (1 jam, 1 hari, guru) memakai
rate-limit,session-timeout,limit-uptime, danshared-users. - Membuat banyak voucher sekaligus dengan script, lalu mencetaknya ke file untuk dibagikan atau dijual.
- Membuktikan bahwa satu kode hanya bisa dipakai satu perangkat dan benar-benar mati saat waktunya habis.
π Konteks nyata
Bayangkan hotspot dasar sebagai pintu kelas dengan satu kunci. Semua siswa memegang salinan kunci yang sama, jadi tidak ada yang tahu siapa masuk dan kapan harus pulang.
User profile itu jenis tiketnya (reguler, VIP, guru), sedangkan voucher itu karcis bernomor yang hanya berlaku untuk satu orang dan satu durasi. Karcis boleh dicetak banyak, tapi nomornya tidak boleh kembar.
π₯ Kasus nyata: Sebuah SMK mengadakan workshop tiga hari untuk 80 tamu. Panitia membuat satu akun bersama tamu / smk2026 dengan shared-users=80 supaya semua bisa masuk.
Hari kedua kode itu sudah beredar di grup WhatsApp alumni. Tiga hari setelah acara, masih ada 20 perangkat online, kuota modem habis, dan panitia tidak bisa menunjuk siapa pemakainya karena semua orang memakai nama yang sama.
Perbaikannya bukan menambah bandwidth, tapi mengganti model: satu orang satu voucher, shared-users=1, plus batas waktu yang tidak bisa diakali dengan logout-login.
π§ Konsep singkat
Hotspot punya tiga lapis pengaturan. Banyak siswa gagal karena menaruh pengaturan di lapis yang salah, lalu menyimpulkan "MikroTik-nya rusak".
| Lapis | Menu | Mengatur apa | Analogi |
|---|---|---|---|
| Server profile | /ip hotspot profile |
Cara login, halaman login, DNS name, sertifikat, RADIUS | Jenis gedung dan pintu masuknya |
| User profile | /ip hotspot user profile |
Kecepatan, batas sesi, jumlah perangkat, address list, script login | Jenis tiket dan fasilitasnya |
| User | /ip hotspot user |
Nama, password, paket yang dipakai, sisa waktu, sisa kuota | Nama pemegang karcis |
Urutan berpikirnya selalu: buat jenis tiket dulu, baru cetak karcisnya. Kalau kamu membuat user sebelum profile-nya ada, kode itu akan menempel ke profile default dan semua batas yang kamu rencanakan hilang.
πΉ Tiga lapis yang sering tertukar
/ip hotspot profile mengatur bagaimana orang login. Di sini ada login-by (default http-chap,cookie), dns-name, html-directory, dan ssl-certificate. Ini bukan tempat mengatur kecepatan.
/ip hotspot user profile mengatur apa yang didapat setelah login. Di sini ada rate-limit, session-timeout, shared-users, idle-timeout, dan address-list.
/ip hotspot user mengatur identitas dan jatah pribadi. Di sini ada name, password, profile, limit-uptime, serta limit-bytes-in/out/total.
Kalau kamu mencari "batas kuota" di menu profile, kamu tidak akan menemukannya. Kuota byte memang properti per user, bukan per profile. Ini fakta yang paling sering bikin bingung.
πΉ Batas waktu: session-timeout vs limit-uptime
Keduanya terlihat sama, padahal berbeda cara hitung.
session-timeoutada di user profile dan membatasi satu sesi login. Habis waktunya, user diputus. Kalau user login lagi, timer mulai dari nol.limit-uptimeada di user dan menghitung akumulasi pemakaian milik kode itu. Habis, kode tidak bisa dipakai lagi walau user logout berkali-kali.
Untuk voucher yang dijual, pakai limit-uptime sebagai pengaman utama, dan session-timeout sebagai pengaman tambahan supaya satu sesi tidak menggantung berhari-hari.
π Angka penting: shared-users default 1 (satu kode satu sesi), session-timeout default 0s (tanpa batas), http-cookie-lifetime default 3d, mac-cookie-timeout default 3d, dan addresses-per-mac default 2 alamat IP per MAC.
π§© Istilah penting
| Istilah | Arti singkat |
|---|---|
| Voucher | Kode sekali pakai berisi username dan password, biasanya dicetak di kertas kecil. |
rate-limit |
Batas kecepatan dalam format rx/tx. Dibaca dari sudut router: rx = upload client, tx = download client.
|
shared-users |
Berapa sesi yang boleh memakai satu username pada saat bersamaan. |
session-timeout |
Batas umur satu sesi login, dihitung ulang setiap kali login. |
limit-uptime |
Batas total waktu pemakaian sebuah akun, tidak direset oleh logout. |
limit-bytes-total |
Batas total byte (unggah + unduh) untuk satu akun. |
address-list |
Daftar alamat yang otomatis diisi IP user saat login, berguna untuk Queue Tree per paket. |
| MAC cookie | Fitur login otomatis berdasarkan MAC address, nyaman untuk HP tapi bisa membuat voucher terasa "bocor". |
| Walled garden | Daftar situs yang boleh dibuka tanpa login, misalnya halaman pembayaran atau situs sekolah. |
| User Manager | Paket RADIUS bawaan RouterOS untuk mengelola voucher dalam jumlah besar dan banyak router. |
π§ Praktik: Menyiapkan Paket Voucher
Praktik ini memakai satu router lab dengan hotspot dasar yang sudah jalan (lihat materi terkait). Alamat contoh memakai rentang dokumentasi RFC 5737: gateway hotspot 192.0.2.1/24.
β οΈ Hati-hati: Hotspot bisa diblokir oleh device-mode, dan hanya berjalan baik di IPv4. Cek /system/device-mode print sebelum menyalahkan konfigurasi.
πΉ Langkah 1: Cek pondasi hotspot
Pastikan server hotspot, pool, dan DHCP sudah ada. Jangan membuat profile di atas hotspot yang belum pernah diuji login.
/ip hotspot print
/ip hotspot profile print
/ip hotspot user profile print
/ip hotspot user print
Yang perlu dilihat: kolom PROFILE di server hotspot menunjuk ke server profile yang benar, dan login-by masih default http-chap,cookie. Mode http-chap tidak mengirim password dalam teks biasa, jadi aman untuk lab sekolah.
πΉ Langkah 2: Buat tiga user profile
Kita buat tiga "jenis tiket": 1 jam, 1 hari, dan guru. Semua memakai shared-users=1 kecuali guru.
/ip hotspot user profile
add name="vcr-1jam" shared-users=1 session-timeout=1h \
rate-limit="1M/2M" address-list="hs-vcr-1jam" \
comment="voucher 1 jam - workshop"
add name="vcr-1hari" shared-users=1 session-timeout=1d \
rate-limit="2M/5M" address-list="hs-vcr-1hari" \
comment="voucher 1 hari - tamu"
add name="guru" shared-users=2 session-timeout=0s \
rate-limit="5M/20M" address-list="hs-guru" \
comment="akun guru, tanpa batas waktu"
Penjelasan singkat tiap parameter:
rate-limit="2M/5M"artinya upload maksimal 2 Mbps dan download maksimal 5 Mbps untuk pemakai paket itu.session-timeout=1dmemutus sesi setelah 24 jam, walaupun perangkatnya masih menyala.address-list="hs-vcr-1hari"membuat IP user otomatis masuk daftar saat login, sehingga Queue Tree bisa menargetkan per paket tanpa mangle tambahan.commentdipakai agar kamu bisa menghapus semua voucher satu acara dengan satu perintahfind.
β οΈ Hati-hati: Urutan rate-limit mudah terbalik. 2M/5M berarti download 5M, bukan upload 5M. Kalau tertukar, siswa mengeluh "download lambat" padahal kamu memberi 5M untuk upload dan 2M untuk download.
πΉ Langkah 3: Buat voucher otomatis dengan script
Membuat 20 voucher satu per satu lewat Winbox itu menyiksa. Pakai script supaya kode dibuat acak, dicek duplikatnya, lalu disimpan sebagai user hotspot.
:local jumlah 20
:local prefix "vcr-"
:local dibuat 0
:while ($dibuat < $jumlah) do={
:local kode [:tostr [:rndnum from=100000 to=999999]]
:local nama ($prefix . $kode)
:if ([/ip hotspot user print count-only where name=$nama] = 0) do={
/ip hotspot user add name=$nama password=$kode \
profile="vcr-1hari" limit-uptime=1d \
comment="voucher workshop okt 2026"
:set dibuat ($dibuat + 1)
}
}
:log info ("voucher dibuat: " . $dibuat)
Cara kerjanya: :rndnum menghasilkan angka acak, lalu print count-only where name=$nama memastikan kode itu belum ada. Kalau sudah ada, loop mengulang tanpa menambah hitungan, jadi jumlah akhir selalu tepat 20.
π Angka penting: kode 6 digit numerik hanya punya 900.000 kombinasi dan mudah ditebak script orang lain. Untuk voucher yang dijual ke publik, pakai 8 karakter campuran huruf dan angka, plus shared-users=1 dan pembatasan percobaan login.
π‘ Tips: jalankan script yang sama dua kali dengan comment berbeda untuk acara berbeda. Saat acara selesai, hapus sekaligus dengan /ip hotspot user remove [find comment~"workshop okt 2026"].
πΉ Langkah 4: Cetak voucher ke file
Setelah semua kode dibuat, ekspor daftarnya ke file teks supaya bisa dicetak dan digunting.
/ip hotspot user print where profile="vcr-1hari" file="voucher-1hari"
/file print
File akan muncul di menu Files dengan nama voucher-1hari.txt. Unduh lewat Winbox (menu Files, tombol Download) atau FTP, lalu cetak. Kolom password ikut tercetak, jadi perlakukan file ini seperti daftar uang tunai.
π‘ Tips: cetak dua rangkap: satu digunting untuk dijual, satu disimpan panitia untuk mencocokkan kalau ada kode yang tidak bisa login.
πΉ Langkah 5: Uji satu voucher
Ambil satu kode dari file, login dari HP, lalu periksa dari router.
/ip hotspot active print
/ip hotspot active print detail where user~"vcr-"
/ip hotspot user print detail where name="vcr-123456"
Di active kamu akan melihat session-time-left, yaitu sisa waktu sesi berjalan. Di user kamu bisa membaca uptime, bytes-in, dan bytes-out untuk memastikan trafik benar-benar tercatat.
π§ͺ Uji cepat: login kode yang sama dari perangkat kedua. Dengan shared-users=1, sesi kedua tidak boleh berjalan bersamaan. Cek /ip hotspot active print count-only where user="vcr-123456" β hasilnya harus 1.
πΉ Langkah 6: Uji batas paket
Jangan percaya batas yang belum diuji. Tiga uji ini cukup untuk membuktikan paket bekerja.
- Uji kecepatan: pakai
/tool speed-testatau unduh file besar dari perangkat yang login dengan voucher 1 jam. Hasilnya harus mendekati 2 Mbps upload dan 5 Mbps download. - Uji waktu: buat profile uji
vcr-ujidengansession-timeout=2m, login, lalu tunggu. User harus terlempar dariactivesetelah Β±2 menit. - Uji kuota: buat user uji dengan
limit-bytes-total=20M, lalu unduh file 50 MB. Setelah 20 MB terpakai, sesi harus berhenti walaupun waktunya masih sisa.
Setelah selesai, bersihkan: hapus profile vcr-uji dan user uji, lalu pastikan tidak ada sesi menggantung di active.
πΉ Versi Winbox
- Menu IP β Hotspot β User Profiles untuk membuat paket. Isi
Rate Limit,Shared Users, danSession Timeout. - Menu IP β Hotspot β Users untuk melihat kode, paket, dan sisa pemakaian.
- Menu IP β Hotspot β Active untuk memantau siapa yang sedang online. Tombol Remove di sini memutus sesi, bukan menghapus akun.
- Menu Files untuk mengunduh hasil
print file=.
πΉ Kalau acaranya besar: User Manager
Untuk satu router sekolah, cara di atas sudah cukup. Kalau kamu mengelola beberapa router atau butuh voucher dengan masa aktif yang dihitung rapi, RouterOS menyediakan paket User Manager sebagai server RADIUS lokal.
Fakta pentingnya: User Manager adalah paket terpisah, enabled=no secara default, memakai port 1812 (authentication) dan 1813 (accounting), serta jumlah sesi aktifnya dibatasi lisensi RouterOS.
/user-manager user
add-batch-users number-of-users=20 username-length=6 \
username-characters=lowercase password-length=6 \
password-characters=lowercase,uppercase,numbers
Setelah user dibuat, voucher dicetak dengan template bawaan:
/user-manager user
generate-voucher voucher-template=printable_vouchers.html [find]
Hasilnya bisa dibuka lewat browser di /um/PRIVATE/GENERATED/vouchers/gen_printable_vouchers.html. Folder PRIVATE hanya bisa diakses setelah web-private-username dan web-private-password diisi.
Template voucher mendukung variabel $(username), $(password), $(userprofname), dan $(userprofendtime). Untuk daftar massal, gunakan template export.csv atau export.xml.
π Dipakai di dunia kerja
- Sekolah:*** workshop, pelatihan guru, atau ujian berbasis komputer dengan tamu. Voucher per orang membuat panitia tahu siapa masih online saat acara selesai, dan bandwidth tidak dipakai perangkat yang lupa logout.
- Warnet dan kios Wi-Fi:*** paket 1 jam, 3 jam, dan 1 hari dijual terpisah.
limit-uptimemelindungi pemilik dari kode yang dipakai bergiliran seharian. - Kafe dan hotel:*** voucher per meja atau per kamar dengan masa aktif 1 hari. Resepsionis cukup menyerahkan kertas, tanpa membuat akun baru setiap tamu datang.
- Event organizer:*** 200 peserta, satu SSID, dan tiga profil berbeda untuk peserta, panitia, dan pembicara. Pembicara butuh jaminan kecepatan, peserta cukup untuk media sosial.
- ISP RT/RW net:*** paket bulanan dengan masa aktif dan kuota. Di sinilah User Manager lebih masuk akal karena pelanggan perlu diperpanjang otomatis.
- Kantor:*** akun tamu untuk vendor dengan masa aktif pendek, terpisah dari SSID karyawan yang memakai VLAN dan firewall sendiri.
β Verifikasi
Jalankan berurutan dan cocokkan hasilnya. Kalau satu langkah gagal, jangan lanjut mencetak voucher.
/ip hotspot user profile print detailβ ketiga profile ada,shared-users=1, danrate-limittidak kosong./ip hotspot user print count-only where profile="vcr-1hari"β jumlahnya sama denganjumlahdi script (20)./ip hotspot user print where profile="vcr-1hari"β tidak ada nama kode yang kembar./ip hotspot active printβ hanya perangkat uji yang muncul, dengansession-time-leftberjalan mundur./ip hotspot active print count-only where user="vcr-123456"β hasil 1 setelah login dari dua perangkat./ip hotspot cookie printβ cookie lama ikut terhapus saat akun dihapus, jadi tidak ada login otomatis yang tertinggal.
π§ͺ Uji cepat: hapus satu user uji, lalu coba login dengan kode itu. Harus gagal. Kalau masih bisa masuk, kemungkinan besar perangkat memakai MAC cookie dari sesi sebelumnya.
β οΈ Kesalahan umum & troubleshooting
| Gejala | Penyebab | Perbaikan |
|---|---|---|
| Kode benar tapi login ditolak | Profile yang dirujuk user tidak ada, atau user menempel ke profile default |
Cek /ip hotspot user print detail, lalu set [find name="..."] profile="vcr-1hari"
|
| Login berhasil, internet tidak jalan | Rule NAT atau DNS hotspot belum ada, atau walled-garden salah |
Cek /ip firewall nat print dan /ip dns print, uji ping gateway
|
| Satu kode dipakai banyak perangkat | shared-users lebih dari 1 di profile |
Set shared-users=1 di user profile
|
| Kuota tidak berhenti walau habis | Batas byte dipasang di profile, padahal properti itu milik user | Pasang limit-bytes-total di /ip hotspot user
|
| Kode mati lalu hidup lagi setelah logout | Hanya memakai session-timeout |
Tambahkan limit-uptime di user sebagai batas akumulasi
|
| Voucher dobel | Script dijalankan dua kali tanpa cek duplikat | Pertahankan print count-only where name=$nama sebelum add
|
| File voucher tidak muncul | Nama file bentrok atau folder penyimpanan penuh | Cek /file print, hapus file lama, ulangi print file=
|
| Semua sesi berhenti di jam yang sama | Jam router salah setelah listrik padam | Aktifkan NTP /system ntp client, lalu cek /system clock print
|
| HP langsung login tanpa diminta kode | MAC cookie aktif dari login sebelumnya | Hapus di /ip hotspot cookie print dan /ip hotspot client print
|
| Halaman login error di HTTPS | https-redirect=yes tapi sertifikat tidak cocok dengan dns-name |
Set https-redirect=no atau pasang sertifikat yang sesuai
|
| Hotspot tidak jalan sama sekali | device-mode memblokir, atau ada tabel routing tambahan |
Cek device-mode; hotspot hanya memakai tabel routing default sehingga PCC tidak cocok |
π Catatan keamanan & etika
- Voucher adalah kredensial.*** File
.txthasil cetak berisi semua password. Simpan di folder terkunci, jangan pernah ditaruh di folder publik atau dikirim ke grup chat. - Satu kode satu orang.***
shared-users=1bukan sekadar rapi, tapi membatasi penyebaran kode dan memudahkan penelusuran saat ada penyalahgunaan. - Hindari
http-pap.*** Mode itu mengirim password dalam teks biasa. Pakaihttp-chap(default) atauhttpsdengan sertifikat yang valid. - Hapus akun kedaluwarsa.*** Akun lama yang dibiarkan hidup adalah pintu masuk gratis. Jadwalkan pembersihan berdasarkan
comment. - Pisahkan jaringan tamu.*** Hotspot tamu sebaiknya berada di VLAN atau bridge sendiri, dengan firewall yang melarang akses ke subnet guru dan server nilai.
- Etika memantau.*** Menu
activedanhostboleh dipakai untuk operasional, bukan untuk mengintip isi trafik pribadi pengguna.
π Kesimpulan
User profile menentukan apa yang didapat pengguna, voucher menentukan siapa yang berhak memakainya. Kalau keduanya dipisah dengan benar, satu router bisa melayani beberapa paket sekaligus tanpa saling mengganggu.
Langkah berikutnya: kerjakan praktikum pendamping artikel ini untuk menguji batas paket dan kegagalan voucher satu per satu, lalu lanjut ke materi firewall RAW untuk melihat trafik sebelum connection tracking.
π Materi terkait
- Mikrotik : Hotspot Dasar β pondasi captive portal, DHCP, dan NAT yang dipakai artikel ini.
- Mikrotik : DHCP Server untuk LAN β pool alamat yang membagi IP ke client hotspot.
- Mikrotik : Firewall Filter Dasar β melindungi router dan memisahkan trafik tamu.
- Mikrotik : Queue Sederhana untuk Bandwidth Management β dasar pembatasan kecepatan sebelum memakai
rate-limithotspot. - Mikrotik : VLAN Dasar β memisahkan jaringan tamu dari jaringan internal.
- Mikrotik : Praktikum Membuat User dan Group di RouterOS β kebiasaan membuat akun dan group yang rapi.
- Mikrotik : Bandwidth Test dan Pengukuran Throughput β mengukur apakah
rate-limitbenar-benar bekerja. - Mikrotik : Scripting Dasar RouterOS β dasar
:while,:if, dan:rndnumyang dipakai script voucher.
π Referensi
- MikroTik Documentation β HotSpot Captive portal: https://help.mikrotik.com/docs/spaces/ROS/pages/56459266/HotSpot+-+Captive+portal
- MikroTik Documentation β User Manager: https://help.mikrotik.com/docs/spaces/ROS/pages/2555940/User+Manager
- MikroTik CLI Reference β /ip/hotspot/user: https://manual.mikrotik.com/docs/cli-reference/ip/hotspot/user/
- MikroTik Documentation β Device-mode: https://help.mikrotik.com/docs/spaces/ROS/pages/93749258/Device-mode
- IETF RFC 7710 β Captive-Portal Identification Using DHCP or RA: https://www.rfc-editor.org/rfc/rfc7710