Pages

Jumat, 08 Februari 2013

Konfigurasi Squid Proxy




Proxy yang digunakan dalam sebuah jaringan bertujuan untuk melakukan pembatasan incoming traffic, selain itu juga dapat melakukan pembagian dan pembatasan bandwidth agar seorang user pada jaringan tidak menggunakan semua bandwidth yang disediakan. Pembatasan bandwidth berguna apabila koneksi internet kita lambat sehingga tiap user memiliki ha katas bandwidth tertentu

Contoh kasus pada situasi seperti dibawah ini ,

 1.Kita memiliki modem 115,2kbits/s dengan koneksi PPP ke internet (115,2/10 = 11,5 kbytes/s).     Apabila kita menggunakan kartu jaringan kita membagi 115,2 dengan 8, tapi apabila    menggunakan PPP, kita membaginya dengan 10, karena adanya start/stop bits (8+1+1) = 10.
 2.Kita memiliki beberapa workstation yang masing-masing workstation digunakan untuk mendownload file-file berukuran besar.
 3. Kita menginginkan akses web secara cepat, tanpa terpengaruh proses download.
 4. Interface internet kita adalah ppp0.
 5. Interface LAN kita eth0.
 6. Jaringan kita 192.168.1.0/24

·         Apa saja yang diperlukan

Percaya atau tidak, penyusunan incoming traffic adalah perkerjaan yang mudah, dan anda tidak perlu membaca buku-buku yang tebal mengenai algoritma routing atau queuing.

Untuk melakukan pembatasan bandwidth, yang kita perlukan minimal squid proxy. Jika kita mengembangkannya, kita harus familiar dengan ipchains atau iptables dan CBQ.

·          Cara Implementasi

 Squid mungkin merupakan HTTP Proxy yang paling tangguh di linux. Squid dapat membantu kita menghemat bandwidth dengan dua cara:

 1. Cara pertama, adalah karakteristik utama proxy server, dengan cara menyimpan halaman, gambar, dan objek lain yang telah didownload sebelumnya ke dalam memory atau disk. Sehingga, jika seseorang melakukan request dengan halaman yang sama, proxy akan mengambil halaman yang telah disimpan tersebut.
 2. Terpisah dari penyimpanan cache yang umum dilakukan, Squid mempunyai fasilitas spesial yang disebut dengan delay pools. Dengan delay pools dimungkinkan untuk membatasi internet traffic dengan cara yang masuk akal, tergantung 'kata kunci' yang ada di URL, Kata kunci tersebut dapat berupa '.mp3', '.exe', atau     '.avi', dan lain-lain. Semua kata-kata di URL (seperti .avi) dapat dijadikan sebagai kata kunci.

 Dengan demikian, kita dapat menugaskan Squid untuk mendownload tiga macam file tersebut dengan kecepatan yang telah ditentukan (seperti pada contoh, sekitar 5 kbytes/s). Jika pada LAN kita, dua user atau lebih mendownload file pada saat yang sama, file tersebut akan didownload sekitar 5 kbytes/s secara bersamaan, sehingga tidak mempengaruhi bandwidth untuk WWW, e-mail, news, irc, dan lain-lain.
            Tentu saja internet tidak hanya digunakan untuk mendownload file melalui web (http atau ftp), selanjutnya, kita akan melakukan membatasan bandwidth untuk napster, realaudio.

·         Installasi Squid dengan fasilitas delay pools

            Seperti yang telah disebutkan di atas, Squid memiliki fasilitas delay pools, yang memungkinkan kita mengontrol download bandwidth. Sayangnya, di kebanyakan distribusi, Squid dikompile tanpa fasilitas ini.

 Jadi, apabila anda memiliki Squid yang telah terinstall, anda harus menginstallnya kembali dengan cara sebagai berikut:

 1. Untuk mendapatkan performa maksimal dari Squid, kita perlu membuat partisi terpisah yang digunakan sebagai cache, seperti /cache/. Ukuran partisi sekitar 200 MB, atau tergantung dari  kebutuhan.
     Jika anda tidak mengetahui bagaimana membuat partisi baru, anda dapat meletakkan cache di partisi utama, tetapi
performa Squid akan menurun.

 2. Kita tambahkan user squid:

     # useradd -d /cache/ -r -s /dev/null squid > /dev/null 2>&1

     Dimaksudkan, user squid tidak bisa digunakan untuk login

 3. Download source Squid di http://www.squid-cache.org. Ketika dokumen ini ditulis, versi             terakhir dari squid adalah Squid 1.4 stable 1:


 4. Unpack source:

 # tar xvzf squid-2.4.STABLE1-src.tar.gz

5. Kompilasi dan install Squid:

 # ./configure --prefix=/opt/squid --exec-prefix=/opt/squid \
 --enable-delay-pools --enable-cache-diggests --enable-poll \
 --disable-ident-lookups --enable-truncate --enable-removal-policies

 # make all
 # make install
           
·          Konfigurasi Squid menggunakan delay pools

 Konfigurasikan file squid.conf (/opt/squid/etc/squid.conf):

 #squid.conf
 #Every option in this file is very well documented in the original squid.conf file
 #and on http://www.visolve.com/squidman/Configuration%20Guide.html

 #
 #The ports our Squid will listen on
 http_port 8080
 icp_port 3130

 #cgi-bins will not be cached
 acl QUERY urlpath_regex cgi-bin \?
 no_cache deny QUERY

 #Memory the Squid will use. Well, Squid will use far more than that.
 cache_mem 16 MB

 #250 means that Squid will use 250 megabytes of disk space
 cache_dir ufs /cache 250 16 256
 redirect_rewrites_host_header off
 cache_replacement_policy GDSF
 acl localnet src 192.168.1.0/255.255.255.0
 acl localhost src 127.0.0.1/255.255.255.255
 acl Safe_ports port 80 443 210 119 70 20 21 1025-65535
 acl CONNECT method CONNECT
 acl all src 0.0.0.0/0.0.0.0
 http_access allow localnet
 http_access allow localhost
 http_access deny !Safe_ports
 http_access deny CONNECT
 http_access deny all
 maximum_object_size 3000 KB
 store_avg_object_size 50 KB

 #all our LAN users will be seen by external servers
 #as if they all use Mozilla on Linux :)
 anonymize_headers deny User-Agent
 fake_user_agent Mozilla/5.0 (X11; U; Linux 2.4.4 i686)

 #To make our connection even faster, we put a line similar
 #to the one below. Don't forget to change the server to your closest!
 #Measure pings, traceroutes and so on.
 #Make sure that http and icp ports are correct
 #cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default

 #This is useful when we want to use the Cache Manager
 #copy cachemgr.cgi to cgi-bin of your www server
 cache_mgr your@email
 cachemgr_passwd secret_password all

 #This is a name of a user our Squid will work as
 cache_effective_user squid
 cache_effective_group squid

 log_icp_queries off
 buffered_logs on


 #####DELAY POOLS
 #This is the most important part for shaping incoming traffic with Squid
 #For detailed description see squid.conf file or docs at http://www.squid-cache.org

 #We don't want to limit downloads on our local network
 acl magic_words1 url_regex -i 192.168

 #We want to limit downloads of these type of files
 #Put this all in one line
 acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg \
 .mpe .mpg .qt .ram .rm .iso .raw .wav
 #We don't block .html, .gif, .jpg and similar files, because they
 #generally don't consume much bandwidth

 #We have two different delay_pools
 delay_pools 2

 #First delay pool
 #W don't want to delay our local traffic
 #There are three pool classes; here we will deal only with the second
 delay_class 1 2

 #-1/-1 mean that there are no limits
 delay_parameters 1 -1/-1 -1/-1

 #magic_words1: 192.168
 delay_access 1 allow magic_words1

 #Second delay pool
 #we want to delay downloading files mentioned in magic_words2
 delay_class 2 2

 #The numbers here are values in bytes;
 #we must remember that Squid doesn't consider start/stop bits
 #5000/150000 are values for the whole network
 #5000/120000 are values for the single IP
 #after downloaded files exceed about 150000 bytes,
 #(or even twice or three times as much)
 #they will continue to download at about 5000 bytes/s

 delay_parameters 2 5000/150000 5000/120000
 delay_access 2 allow magic_words2

 #EOF

 Setelah squid dikonfigurasikan, kita harus memastikan bahwa direktori /opt/squid dan /cache dimiliki oleh user 'squid':

 # chown -R squid:squid /opt/squid/
 # chown -R squid:squid /cache/

 atau

 # chown -R squid.squid /opt/squid/
 # chown -R squid.squid /cache/

Sekarang kita siap untuk menjalankan squid, untuk menjalankan squid saat pertama kali, kita harus membuat cache direktori:

 # /opt/squid/usr/bin/squid –z  # /opt/squid/sbin/squid –z 

Kemudian jalankan squid, dan periksa apakah semua berhasil dengan baik. Program bantu yang berguna untuk melihat bandwidth adalah IPTraf, anda dapat mendownloadnya di http://freshmeat.net. Pastikan juga anda telah memasukkan alamat proxy di web browser anda (pada contoh: 192.168.1.1, port 8080).

 Untuk menjalankan squid:

            # /opt/squid/usr/bin/squid  # /opt/squid/sbin/squid

Apabila semua berjalan, tambahkan /opt/squid/usr/bin/squid pada baris terakhir initial script biasa-nya di /etc/rc.d/rc.local.

 Option lain yang dapat membantu:

 # /opt/squid/usr/bin/squid -k reconfigure  #/opt/squid/sbin/squid -k reconfigure

 (reconfigures Squid jika kita melakukan perubahan pada squid.conf).

 Anda dapat juga mengkopi file cachemgr.cgi ke direktori cgi-bin pada web server anda.

·         Pemanfaatan CBQ untuk membatasi Bandwidth

 Kita harus ingat bahwa user dapat menggagalkan usaha kita di atas, jika mereka menggunakan napster atau realaudio. Kita juga harus ingat bahwa kita tidak bisa menutup ftp traffic

 Kita akan menangani hal tersebut dengan cara berbeda, tidak dengan membatasi download secara langsung, namun dengan cara lain. Perangkat internet kita adalah ppp0 dan perangkat LAN kita adalah eth0, kita akan membatasi outgoing traffic pada interface eth0, dan juga membatasi incoming traffic melalui ppp0.

 Untuk melakukan hal tersebut, kita akan berkenalan dengan CBQ dan cbq.init script. Anda dapat memperoleh CBQ di
alamat ftp://ftp.equinox.gu.net/pub/linux/cbq/. Download file cbq.init-v0.6.2 dan letakkan di /etc/rc.d/.

 Anda juga memerlukan iproute2, yang telah ada di distribusi linux.

 Sekarang lihat di direktori /etc/sysconfig/cbq/. Di direktori ini seharusnya terdapat sebuah file contoh, yang dapat digunakan bersama dengan cbq.init. Jika file tersebut tidak ada, kernel anda mungkin tidak mendukung CBQ.
             
·         FTP

 kita tidak menutup ftp karena dua alasan, agar kita bisa melakukan upload, dan agar user yang menggunakan IE 5.5 dapat melihat direktori ftp pada server. Dengan demikian, browser web kita dan ftp program seharusnya mendownload melalui squid proxy, dan ftp upload melalui ip masquerade.

 Kita buat file cbq-10.ftp-network di /etc/sysconfig/cbq/ direktori:

 # touch /etc/sysconfig/cbq/cbq-10.ftp-network

 dan tambahkan baris berikut:

 DEVICE=eth0,10Mbit,1Mbit
 RATE=10Kbit
 WEIGHT=1Kbit
 PRIO=5
 RULE=:20,192.168.1.0/24
 RULE=:21,192.168.1.0/24

 Anda akan menemukan keterangan dari baris-baris di atas pada cbq.init.

 Ketika kita menjalankan /etc/rc.d/cbq.init script, program akan membaca konfigurasi di /etc/sysconfig/cbq/:

 # /etc/rc.d/cbq.init start

 Jika semuanya berjalan dengan baik, tambahkan baris tersebut ke dalam initial script.

 Dengan perintah di atas, server kita sekarang tidak akan mengirimkan ftp data melalui eth0 dengan kecepatan lebih dari 10kbits/s, dan tidak akan mendownload ftp data dengan kecepatan lebih dari 10 kbits/s. User LAN anda akan melihat bahwa lebih efisien menggunakan squid untuk mendownload, mereka juga masih dapat melihat direktori ftp di web browser menggunakan IE 5.5.


 Namun masih ada bug di IE 5.5, ketika anda mengklik kanan mouse di direktori ftp, kemudian memilih 'Copy-To-Folder', file akan didownload secara langsung tanpa melalui proxy, sehingga melewati batasan yang ada di squid. Semoga Bermanfaat :)

0 komentar:

Posting Komentar