Digit Oktavianto Web Log

Catatan Sampah si Digit

Membatasi Quota Download Di Squid

| Comments

Tutorial kali ini merupaka request dari teman saya Ismail ‘Mbahjoe’ Marzuki, mengenai membatasi quota download di squid. Ada kalanya anda mengelola server dan network, merasa banyak user iseng yang suka atau rajin download setiap harinya.

Aktifitas ini akan mengganggu atau membebani network di kantor atau di rumah. Anda bisa melakukan tips di bawah ini. Yaitu dengan cara membatasi penggunaan atau membatasi quota download setiap orang. hehehehe.

Pada tutorial kali ini saya anggap anda telah elesai menginstall squid, dan tinggal melakukan konfigurasi saja. Bagi yang belum menginstall squid, silakan cari tutorial cara menginstall squid, atau nanti akan saya tulis juga tutorial instalasi dan konfigurasi basic squid. Baik langkah-langkah yang harus dilakukan adalah :

Kita ambil contoh kasus, dalam hal ini teman saya Ismail Marzuki bertanya, bagaimana konfigurasi squid agar download max per user itu 10 Mb, jadi ketika dia mendownload file, di atas 10 Mb, maka koneksi akan drop dan melambat. Hanya max 10 Mb saja tiap kali download.

  1. Silakan buka squid.conf anda Hal ini dapat dilakukan dengan cara menambahkan tag reply_body_max_size

      # Filter Download
    

    acl download url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .tar .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov .msi .mp4

      #  TAG: reply_body_max_size     bytes allow|deny acl acl…
      #  This option specifies the maximum size of a reply body in bytes.
      #  It can be used to prevent users from downloading very large files,
      #  such as MP3’s and movies. When the reply headers are received,
      #  the reply_body_max_size lines are processed, and the first line with
      #  a result of “allow” is used as the maximum body size for this reply.
      #  This size is checked twice. First when we get the reply headers,
      #  we check the content-length value.  If the content length value exists
      # and is larger than the allowed size, the request is denied and the
      # user receives an error message that says “the request or reply
      # is too large.” If there is no content-length, and the reply
      # size exceeds this limit, the client’s connection is just closed
      #       and they will receive a partial reply.
      #
      #       WARNING: downstream caches probably can not detect a partial reply
      #       if there is no content-length header, so they will cache
      #       partial responses and give them out as hits.  You should NOT
      #       use this option if you have downstream caches.
      #
      #       If you set this parameter to zero (the default), there will be
      #       no limit imposed.
      #   
      #Default:
      # **reply_body_max_size 0 allow all**
      reply_body_max_size 100000000 allow download 
    

Cara tadi adalah membatasi limit quota download setiap kali user emndownload. Sekarang kita akan membatasi user dari sisi speed max yang akan dia terima ketika sedang mendownload.

Kita buat rule sederhananya :

  1. Jika melakukan browsing biasa tidak ada limitation speed

  2. Jika mendownload file yang berukuran di bawah atau sama dengan 1 MB, tidak akan ada limitation speed

  3. Jika user mendownload sebuah file yang berukuran diatas 1 MB akan dibatasi speed nya max 15 KBps (B ny besar bukan b kecil :D)

         # Filter Download
    

    acl download url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .tar .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov .msi .mp4

Disini akan kita buat 2 aturan

        delay_pools 2

Aturan pertama ini tidak ada batasan, sesuai dengan poin 1 dan 2 di rule sederhana tadi

        delay_class 1 2
        delay_parameters 1 -1/-1 -1/-1

Aturan ke-2, setelah download 2048000 bytes mk download menjadi 15000 bytes/s

        delay_class 2 2
        delay_parameters 2 -1/2048000 15000/2049000

    delay_access 2 allow download
        delay_access 2 deny all
        delay_access 1 deny download
        delay_access 1 allow all

Selamat Mencoba :)

Comments