# ray16

wasted blog

# ray16 RSS Feed
 

Mikrotik Script for Limit bandwidth Automatic based on Volume and DHCP Lease to Simple Queue

Jadi, saya punya koneksi internet sebesar ini dirumah :

Lalu saya buat wifi AP untuk tetangga sekitar yang emang minta wifi buat di share, menggunakan Pico M2HP.

1. Enable ARP reply-only di Interface AP,untuk memastikan hanya IP dari DHCP Lease yang di approve untuk koneksi ke Mikrotik (memperketat kontrol terhadap koneksi client).

2. Konfig DHCP Server lease untuk menjalankan script untuk menambahkan rule simple queue setiap tabel lease ditambahkan di mikrotik, dengan limitasi bandwidth yang diberikan diawal sebesar 50M/50M per client.

Modifikasi script berasal dari sini

:local queueName "C9 - $leaseActMAC";

:if ($leaseBound = "1") do={
/queue simple add name=$queueName target=($leaseActIP . "/24") limit-at=1024k/1024k max-limit=50M/50M total-queue=default comment=[/ip dhcp-server lease get [find where active-mac-address=$leaseActMAC && active-address=$leaseActIP] host-name];
} else={
/queue simple remove $queueName
}

silahkan modifikasi parameter diatas, kecuali comment, dan perhatikan bahwa total-queue harus default, untuk dapat menghitung total-bytes yang akan digunakan sebagai parameter script nantinya.

jangan lupa add Add ARP for Lease untuk kontrol ARP nomor 1 diatas.

3. Buat script dengan konfigurasi sebagai berikut:
– 20 Menit pertama saat lease diberikan, client diberi bandwidth 50M/50M
– setelah 20 Menit, script dijalankan dengan menghitung :

  • Penggunaan volume bandwidth diatas 500MB limit koneksi menjadi 20M/20M
  • Penggunaan volume bandwidth diatas 1GB limit koneksi menjadi 3M/3M
  • Digunakan atau tidak digunakan, limit bandwidth setelah 20 Menit menjadi 30M/30M
  • :local traf;
    /queue simple
    :foreach i in=[find] do={
    :set traf [get number=$i total-bytes]
    :if ($traf>1073741824) do={
    set max-limit=3M/3M numbers=$i
    } else={
    :if ($traf>524288000) do={
    set max-limit=20M/20M numbers=$i } else={
    set max-limit=30M/30M numbers=$i }
    }
    }

    4. Jalankan melalui scheduler, script dijalankan setiap 20 menit sekali :D

    Hasil :

    Pengunaan script seperti ini efisien bagi router karena tidak terlalu menggunakan banyak resource router. Karena ide awalnya sebagai berikut :

    1. Set ARP ONLY untuk client, router hanya diperbolehkan menjawab client yang ada di lease tabel.
    2. Setelah lease diberikan untuk 1 jam, router buat rule queue otomatis bagi ip tersebut. Tidak perlu membuat banyak queue dan lebih sharp karena spesifik ke IP Client yang sedang terkoneksi, apabila lease berakhir, router secara otomatis me-remove rule queue dari tabel.
    3. Per 20 menit jalankan script limitasi menggunakan foreach hanya untuk rule queue yang ada di tabel.
    4. Tidak perlu membuat script untuk release apapun, karena total-bytes akan otomatis ke reset apabila lease berakhir, tapi lease akan selalu diberikan apabila client selalu terkoneksi ke AP dan total-bytes akan selalu dihitung, jadi script tidak akan miss satupun, kecuali client melakukan re-bound ke DHCP server.
    5. Bye bye repeater shit! awalnya saya berikan akses 100M/100M ke free AP ini, tapi namanya orang indonesia dikasih gratisan, mereka lalu gunakan repeater untuk di rumahnya, dan pemakaian bandwidth 10GB dalam 2 jam waktu itu.

    Good Luck !

    Leave a Reply