[ SCRIPT ] Cara Ampuh Blokir Perangkat (Pengguna MAC Changer) dengan Hostname di MikroTik

Bagi anda pemilik hotspot (berbasis MikroTik), terkadang anda menyediakan fitur trial hotspot. Fitur trial ini biasanya ditujukan untuk promosi hotspot, sehingga calon pengguna dapat mencoba terlebih dahulu kualitas jaringan anda dengan batas waktu tertentu sebelum membeli voucher atau berlangganan. Cara kerja trial pada hotspot Mikrotik adalah, saat pengguna menekan tombol trial, maka Mikrotik akan membuatkan user baru di Mikrotik (IP → Hotspot → Users) dengan nama menggunakan MAC address perangkat tersebut dan diberi prefix “T-“. Sebagai contoh jika perangkat pengguna memiliki MAC address 00:32:70:01:AF:80, maka mikrotik akan membuatkan user dengan nama T-00:32:70:01:AF:80.

Sayangnya fitur trial ini juga bisa dimanfaatkan oleh pengguna malas bayar (gratisan). Karena fitur trial ini pembuatan user-nya berbasis MAC address, apabila pengguna dapat mengubah MAC address perangkatnya, maka pengguna dapat menggunakan fitur trial ini berulang-ulang dengan cara mengubah MAC address perangkatnya jika sudah habis masa trial-nya, lalu melakukan login kembali dengan menekan tombol trial. Umumnya MAC addreess tidak dapat diubah, namun tetap ada cara untuk mengubah MAC address pada perangkat dan bisa dibilang mudah. Cukup menggunakan aplikasi MAC changer yang tersedia di App Store maupun Google Play. Tentunya aplikasi sejenis juga tersedia untuk komputer. Hal ini juga membuat blokir perangkat membandel dengan memblokir MAC address tidak efektif.

Gambar di bawah ini merupakan contoh salah satu pengguna membandel (hostname: android-5d7005938f7780bd) yang menggunakan MAC changer. Bisa dilihat hostname tersebut menggunakan MAC address yang berbeda-beda untuk menggunakan trial hotspot.

Contoh Pengguna MAC Changer pada Hotspot Trial

Salah satu solusi untuk mengatasi masalah pengguna MAC changer seperti ini, kita bisa blokir perangkat tersebut berdasarkan hostname. Hostname merupakan sebuah nama yang melekat pada perangkat. Setiap perangkat pada jaringan, pasti memiliki hostname. Hostname sendiri sebenarnya bisa dirubah sesuai keinginan penggunanya. Namun demikian, bagi pengguna awam biasanya tidak akan sadar dengan adanya hostname ini. Perubahan hostname juga biasanya harus melakukan restart perangkat agar hostname berubah sehingga cukup merepotkan untuk mengubah-ubah hostname. Pada Mikrotik, anda dapat mengetahui hostname dari perangkat yang terhubung dalam jaringan anda dengan melihat pada bagian IP → DHCP Server → Leases.

LOGAM.ID telah membuat script untuk melakukan pemblokiran perangkat dengan menggunakan hostname. Cara kerja dari script ini adalah:

  1. Mikrotik akan mengecek hostname perangkat saat mendapatkan IP dari DHCP
  2. Script banlist hostname kemudian mengecek apakah hostname tersebut berada pada banlist
  3. Apabila hostname terdapat pada banlist, maka Mikrotik akan menghapus perangkat tersebut dari DHCP Lease
  4. Walaupun perangkat terlihat terhubung ke jaringan, namun pada Mikrotik perangkat tersebut tidak mendapatkan IP sehingga perangkat tidak dapat koneksi.

Script Hostname Banlist by LOGAM.ID

:log warning "";
:log warning "===============================================";
:log warning "SCRIPT HOSTNAME BANLIST BY LOGAM.ID ";
:log warning "===============================================";
:log warning "";
:log warning "[ JOB START ]";
:log warning "";

:log warning "Create array banlist script ...";
/system script add comment="<<<---ARRAY-BANLIST--->>" dont-require-permissions=no name=\
    array_banlist owner=txw policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\
    \_BANLIST\r\
    \n:local banlist {\r\
    \n\"hostname-1\";\r\
    \n\"hostname-2\";\r\
    \n\"hostname-3\";\r\
    \n}\r\
    \n\r\
    \nreturn \$banlist;"
:log warning "Array banlist script created!";

:log warning "";

:log warning "Create remove banlist script ...";
/system script add comment="<<<---SCRIPT-REMOVE-BANLIST--->>>" dont-require-permissions=no name=\
    script_remove_banlist owner=txw policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\
    ---CHECK-LOG---#;\r\
    \n:global currentBuf [ :toarray [ /log find buffer=memory  ] ] ;\r\
    \n:global currentLineCount [ :len \$currentBuf ] ;\r\
    \n:global currentTime [ :totime [/log get [ :pick \$currentBuf (\$currentL\
    ineCount -1) ] time   ] ];\r\
    \n:global message (\"\");\r\
    \n\r\
    \n#---GET-MESSAGE---#;\r\
    \n:set message [/log get [ :pick \$currentBuf (\$currentLineCount-1) ] mes\
    sage];\r\
    \n:local x ([:find \$message \"assigned\"] + 9);\r\
    \n:local y ([:find \$message \" to\"]);\r\
    \n\r\
    \n#---GET-IP-FROM-LAST-LOG---#;\r\
    \n:local a ([:pick \$message \$x \$y]);\r\
    \n\r\
    \n#---GET-HOSTNAME---#;\r\
    \n:local hostname ([ip dhcp lease get [find where address=\$a] host-name])\
    ;\r\
    \n\r\
    \n#---GET-BANLIST---#;\r\
    \n:local getBanlist [:parse [/system script get array_banlist source]];\r\
    \n:local banlist [\$getBanlist];\r\
    \n\r\
    \n#---BANLIST-CHECK---#;\r\
    \n:foreach k in=\$banlist do={\r\
    \n:put (\"\$k\");\r\
    \n:if (\$hostname = \$k) do {\r\
    \n:log error \"==============================================\";\r\
    \n:log error \"Hostname [ \$hostname ] -  Banned\";\r\
    \n/ip dhcp lease remove [find where address=\$a];\r\
    \n:log error \"Host Removed\";\r\
    \n:log error \"==============================================\";\r\
    \n};\r\
    \n};"
:log warning "Banlist script created!";

:log warning "";

:log warning "Setting up DHCP server script start ...";
/ip dhcp-server set 0 lease-script="script_remove_banlist";
:log warning "Setting up DHCP server script done!";

:log warning "";
:log warning "[ JOB END ]";
:log warning "";
:log warning "===============================================";
:log warning "SCRIPT HOSTNAME BANLIST BY LOGAM.ID";
:log warning "===============================================";

Jalankan script di atas dengan cara:

  1. Buat sebuah script baru (system → scripts) dengan nama bebas
  2. Copy script di atas lalu paste di bagian source script yang baru dibuat
  3. Klik Apply
  4. Klik Run
Pastikan di Log Mikrotik Script Berjalan Sempurna

Script di atas akan membuat dua script baru dengan nama array_banlist dan script_remove_banlist, kemudian memberikan settingan pada DHCP Server untuk menjalankan script script_remove_banlist ketika ada perangkat baru mendapatkan IP dari DHCP Server.

Setelah script di atas sudah dijalankan, silahkan anda masukkan hostname yang akan diblokir pada script array_banlist. Pada bagian source, masukkan nama hostname yang akan diblokir. Jangan lupa diberikan tanda semicolon ( ; ) di akhir nama hostname, misal android-5d7005938f7780bd;.

Berikut contoh pengguna badung yang sudah diblokir dengan script hostname banlist.

User Badung (MAC Changer) Diblokir.

Sebagai catatan, ada kemungkinan lebih dari satu perangkat memiliki hostname yang sama. Solusinya, perangkat tersebut harus diganti hostname-nya (supaya tidak kena blokir). Semoga artikel ini bermanfaat untuk dunia hotspot Mikrotik. 😉

Leave a Comment

Your email address will not be published. Required fields are marked *

MIKHMON ONLINEMIKBOTAM ONLINE MIKMOS ONLINE dan MikroTik API lainnya  KLIK DI SINI

Open chat
1
Hi, ada yang bisa kami bantu?
Powered by