Senin, 27 April 2015

Konfigurasi Squid 2.7 Sebagai Bandwith Limiter

Hai, sobat. Ketemu lagi. Kali ini saya akan melanjutkan artikel sebelumnya masih seputar Proxy Server dengan Squid 2.7. Dan kali ini yang akan dibahas adalah implementasi squid 2.7 sebagai bandwith limiter. Memang kemampuan Squid sebagai bandwith limiter tidaklah sehebat tools-tools Bandwith Manager yang spesial digunakan sebagai Bandwith Management, namun Squid sebagai bandwith limiter pada kebanyakan kasus bisa sangat bermanfaat dan mencukupi untuk melimit bandwith user-user dalam jaringan.
Agar Squid kita dapat digunakan untuk melimit bandwith, maka Squid harus dikompilasi dengan opsi "--enable-delay-pools", dalam instalasi Squid 2.7 Stable 7 melalui perintah "apt-get install squid" seperti yang telah kita lakukan pada tutorial sebelumnya telah menggunakan opsi tersebut, dapat kita buktikan dengan perintah berikut :

root@proxy:/home/it# squid -v
Squid Cache: Version 2.7.STABLE7
configure options:  '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/sbin' '--sbindir=/usr/sbin' '--libexecdir=/usr/lib/squid' '--sysconfdir=/etc/squid' '--localstatedir=/var/spool/squid' '--datadir=/usr/share/squid' '--enable-async-io' '--with-pthreads' '--enable-storeio=ufs,aufs,coss,diskd,null' '--enable-linux-netfilter' '--enable-arp-acl' '--enable-epoll' '--enable-removal-policies=lru,heap' '--enable-snmp' '--enable-delay-pools' '--enable-htcp' '--enable-cache-digests' '--enable-underscores' '--enable-referer-log' '--enable-useragent-log' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-carp' '--enable-follow-x-forwarded-for' '--with-large-files' '--with-maxfd=65536' 'i386-debian-linux' 'build_alias=i386-debian-linux' 'host_alias=i386-debian-linux' 'target_alias=i386-debian-linux' 'CFLAGS=-Wall -g -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS='

Tuh kan anda liat sendiri..., ada opsi '--enable-delay-pools' kann.. ? He..he..
Baiklah, sebelum lebih jauh pembahasan kita, sebelum menjadikan Squid sebagai bandwith limiter, perlu diperhatikan 4 hal berikut ini :
  1. Squid harus dikompilasi dengan opsi "--enable-delay-pools". Telah kita bahas diatas.
  2. Squid menghitung bandwith dengan satuan "bytes per second". Ingat bahwa 1 byte = 8 bit, 1 kB/s = 8 kb/s
  3. Koneksi ADSL 1024 kb/s (kilo bit per second) atau 1 Mbps, dalam Squid ditulis dengan 128000 bytes per second, karena :
    1024 kbps = 1 Mbps
    1024 kbps = 1024 : 8 (kBps)
    1024 kbps = 128 kBps
    1024 kbps = 128000 bytes per second
  4. Ukuran file 500 MB, dalam Squid ditulis dengan 512000000 bytes, karena :
    500 MB = 1 MB x 500
    500 MB = 1024 kB x 500
    500 MB = 512000 kB
    500 MB = 512000000 bytes
    500 MB = 4096000 kb
    500 MB = 4096000000 bits
Setelah mengetahui aturan diatas selanjutnya adalah memahami format penulisan parameter delay_pools dalam Squid agar bisa digunakan sebagai bandwith limiter. Ada 4 parameter penting yang digunakan Squid untuk membatasi bandwith, yaitu :
delay_pools
delay_class
delay_parameters
delay_access
  • Parameter "delay_pools" : Jumlah pool yang akan digunakan. Jumlah pool ini tergantung dari skenario pembatasan bandwith yang akan diterapkan. Semakin rumit skenario pembatasan bandwith yang diinginkan maka akan semakin banyak jumlah pool yang akan digunakan. 
  • Parameter "delay_class" : Untuk menentukan tipe class yang akan digunakan oleh setiap pool. Dalam Squid 2.7 ada 3 tipe class yang dapat digunakan, yaitu class 1, class 2 dan class 3.
  • Parameter "delay_parameters" : Rule yang akan diterapkan didalam pool. Jumlah parameter yang akan digunakan akan tergantung dari tipe class yang diterapkan didalam pool.
  • Parameter "delay_access" : Berfungsi untuk menerapkan rule yang telah dibuat didalam pool ke "acl" yang diinginkan / ditentukan.
Adapun tipe class yang digunakan oleh Squid 2.7 ada 3 jenis, yaitu :
  • Tipe Class 1 : Single Bucket. Setiap user / host mendapat jatah bandwith yang sama. Contoh :
    delay_parameters 1 1000/64000
    Direktif diatas berarti : Pool no 1 akan mengalokasikan bandwith yang sama untuk semua network. Jika user berusaha untuk membuka / mengakses file berukuran >= 64 KBytes, maka kecepatan akan diturunkan menjadi max. 1000 Bytes/s atau 8000 bit/s (1000 B/s = 1 KB/s = 8 Kb/s).
    Nilai 1000/64000 berarti speed max yang akan diterapkan adalah 1000 Bytes/s jika user mengakses file berukuran 64000 Bytes.
  • Tipe Class 2 : Aggregate dan Individual . Parameter pertama mendefinisikan bandwith maksimal, parameter kedua mendefinisikan overall bandwith setiap host yang ada pada network kelas C (bit 25 s/d 32). Contoh :
    delay_parameters 1 32000/32000 1000/64000
    Direktif diatas berarti : Rule yang diterapkan pada pool no. 1 adalah seluruh network akan menghabiskan bandwith akumulasi total maksimum 32000 Bytes/s atau 256 kb/s. Dan setiap host yang men-download / membuka file berukuran 64 KB maka kecepatannya akan turun menjadi 8 kb/s atau 1 KB/s.
  • Tipe Class 3 : Setting bandwith berdasarkan Agregate, Network, dan Individual. Parameter pertama mendefinisikan bandwith maksimal, parameter kedua mendefinisikan bandwith untuk network (bit 17 s/d 24), dan parameter ketiga mendefinisikan bandwith untuk host-host spesifik (bit 17 s/d 32). Contoh :
    delay_parameters 1 32000/32000 8000/8000 1000/64000
    Direktif diatas artinya : Pool no. 1 akan menggunakan bandwith max. 256 kb/s atau 32 KB/s. Jika terdapat lebih dari 1 network, maka setiap network akan dipaksa menggunakan bandwith max. 64 kb/s atau 8 kB/s. Sedangkan untuk user, jika mencoba membuka file berukuran 64 KB, maka akan mendapatkan bandwith max 8 kb/s atau 1 kB/s.
Ok, kita langsung ke contoh kasus / skenario untuk implementasi dilapangan. Silahkan fahami beberapa contoh kasus dibawah ini.
Skenario 1 :
Dalam suatu jaringan lokal (LAN) sebuah perusahaan, diinginkan bahwa semua user mendapatkan kecepatan maks. 128 kbps jika membuka file berukuran 500 kB.

Maka konfigurasi yang harus dilakukan adalah sebagai berikut.
acl all src 0.0.0.0 / 0.0.0.0  #Menyatakan / mewakili semua ip address

delay_pools 1            
#Jumlah pool yang akan dibuat hanya ada satu
delay_class 1 1            #Pool no. 1 menggunakan tipe class 1
delay_parameters 1 16000/500000  #Rule yang akan diterapkan pada pool1
delay_access 1 allow all #Menerapkan rule pool 1 pada semua host / ip address

Skenario 2 :
Jika user mendownload jenis file-file tertentu pada jam 08:00 - 16:00 maka kecepatan = 10 kB/s. Sedangkan di luar jam tersebut kecepatan tidak dibatasi baik download maupun browsing biasa.

Konfigurasi yang harus dilakukan adalah sebagai berikut.

acl all src 0.0.0.0 / 0.0.0.0
acl WorkTime time SMTWHFA 08:00-16:00
acl limitedFiles url_regex -i \.ftp \.exe$ \.src$ \.msi$
acl limitedFiles url_regex -i \.avi$ \.mpg$ \.mpeg$ \.mid$
acl limitedFiles url_regex -i \.ftp \.ac3$ \.deb$ \.mp3$
delay_pools 1             
delay_class 1 1           
delay_parameters 1 10000/10000 
delay_access 1 allow limitedFiles WorkTime delay_access 1 delay_access 1 deny all
Perhatikan pada baris kedua, "SMTWHFA" adalah hari minggu sampai sabtu.
S = Sunday
M = Monday
T = Tuesday
W = Wednesday
H = Thursday
F = Friday
A = Saturday
Anda dapat menyesuaikan hari kerja yang diinginkan. Misalnya pembatasan hanya dilakukan dari hari senin-jum'at, maka parameter yang digunakan adalah "MTWHF".
 
Skenario 3 :
Dikehendaki pembatasan bandwith terhadap seluruh staff di kantor dalam jaringan dengan ip 192.168.0.0/16 sebesar 128 kbps. Pembatasan bandwith ini berlaku hanya pada hari senin - jum'at pada jam 08:00 - 16:00. Untuk browsing ke situs dengan domain .go.id, .usgs.gov, mail.wansl.lcl dan .wansl.com bandwith tidak dibatasi. Dan khusus untuk manager, staff IT, dan host-host di DMZ bandwith tidak dibatasi untuk akses kemanapun dan kapanpun. IP manager adalah 192.168.1.10, 192.168.99.10, 192.168.100.10, dan 192.168.7.10. Sedangkan staff IT menggunakan IP 192.168.100.99-192.168.100.150. Host-host di DMZ menggunakan IP 172.16.16.0/24.

Konfigurasi yang harus dilakukan adalah sebagai berikut.
acl all src 0.0.0.0/0.0.0.0
acl IP-IT src 192.168.100.99-192.168.100.150/32
acl IP-Manager src 192.168.1.10 192.168.99.10 192.168.100.10 192.168.7.10
acl Host-DMZ src 172.16.16.0/24
acl WorkTime time MTWHF 08:00-16:00
acl UnlimitedDomain dstdomain .go.id .usgs.gov .wansl.com mail.wanasl.lcl
delay_pools 2           
delay_class 1 3           
delay_parameters 1 -1/-1 -1/-1 -1/-1
delay_access 1 allow IP-IT
delay_access 1 allow IP-Manager
delay_access 1 allow Host-DMZ
delay_access 1 deny all

delay_class 2 1           
delay_parameters 2 16000/16000
delay_access 2 allow all WorkTime
delay_access 2 deny all
Selesai. Cukup mudah bukan ?. He..he..
Untuk memudahkan, keseluruhan isi fle konfigurasi "/etc/squid/squid.conf" pada skenario 3 adalah seperti berikut ini :
http_port 3128 transparent
icp_port 0

cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

cache_effective_user proxy
cache_effective_group proxy

cache_mem 512 MB
maximum_object_size 102 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_swap_low 98
cache_swap_high 99

cache_dir aufs /cache-squid2.7 80000 187 256
cache_mgr sysadm@domainku.lcl

visible_hostname proxy.domainku.lcl
unique_hostname proxy@domainku.lcl
dns_nameservers 172.16.16.100 8.8.8.8

acl all src 0.0.0.0/0.0.0.0
acl IP-IT src 192.168.100.99-192.168.100.150/32
acl IP-Manager src 192.168.1.10 192.168.99.10 192.168.100.10 192.168.7.10
acl Host-DMZ src 172.16.16.0/24
acl WorkTime time MTWHF 08:00-16:00
acl UnlimitedDomain dstdomain .go.id .usgs.gov .wansl.com mail.wanasl.lcl
delay_pools 2           
delay_class 1 3           
delay_parameters 1 -1/-1 -1/-1 -1/-1
delay_access 1 allow IP-IT
delay_access 1 allow IP-Manager
delay_access 1 allow Host-DMZ
delay_access 1 deny all

delay_class 2 1           
delay_parameters 2 16000/16000
delay_access 2 allow all WorkTime
delay_access 2 deny all

http_access allow all

Baiklah. Sekian dulu tutorial hari ini. Jika ada kesalahan mohon dimaafkan dan silahkan di-comment untuk memberikan saran perbaikan. Sampai jumpa di tutorial berikutnya.

Tidak ada komentar:

Posting Komentar