Squid adalah sebuah daemon yang digunakan sebagai proxy server dan web cache. Squid memiliki banyak jenis penggunaan, mulai dari mempercepat server web dengan melakukan caching permintaan yang berulang-ulang, caching DNS, caching situs web, dan caching pencarian komputer di dalam jaringan untuk sekelompok komputer yang menggunakan sumber daya jaringan yang sama, hingga pada membantu keamanan dengan cara melakukan penyaringan (filter) lalu lintas. Meskipun seringnya digunakan untuk protokol HTTP dan FTP, Squid juga menawarkan dukungan terbatas untuk beberapa protokol lainnya termasuk Transport Layer Security (TLS), Secure Socket Layer(SSL), Internet Gopher, dan HTTPS. Versi Squid 3.1 mencakup dukungan protokol IPv6 dan Internet Content Adaptation Protocol (ICAP). Squid pada awalnya dikembangkan oleh Duane Wessels sebagai "Harvest object cache", yang merupakan bagian dari proyek Harvest yang dikembangkan di University of Colorado at Boulder. Pekerjaan selanjutnya dilakukan hingga selesai di University of California, San Diego dan didanai melalui National Science Foundation. Squid kini hampir secara eksklusif dikembangkan dengan cara usaha sukarela. Squid umumnya didesain untuk berjalan di atas sistem operasi mirip UNIX, meski Squid juga bisa berjalan di atas sistem operasi Windows. Karena dirilis di bawah lisensi GNU General Public License, maka Squid merupakan perangkat lunak bebas.
Download source-nya dengan perintahsudo wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE5.tar.gz
setelah itu ekstrak dengan perintahsudo tar -zxvf squid-2.7.STABLE5.tar.gz
kemudian kita masuk ke direktori source squidcd squid-2.7.STABLE5
Sebelum kita mulai meng-compile, pastikan gcc atau g++ sudah terinstal.
Untuk memulai proses compile, ketikkan perintah
CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" \
./configure \
-prefix=/usr \
-enable-async-io \
-enable-useragent-log \
-enable-snmp \
-enable-cache-digests \
-enable-follow-x-forwarded-for \
-enable-storeio="aufs" \
-enable-removal-policies="heap,lru" \
-with-maxfd=16384 \
-enable-delay-pools \
-enable-poll \
-disable-ident-lookups \
-enable-truncate \
-exec-prefix=/usr \
-bindir=/usr/sbin \
-libexecdir=/usr/lib/squid
Catatan:
Nilai CHOST dan CFLAGS
berbeda tergantung dari jenis prosesor mesin anda. Ganti opsi ini sesuai dengan prosesor yang anda gunakan. Untuk mengetahui nilai CHOST dan CFLAGS ketikkan perintah cat /proc/cpuinfo
dan cocokkan dengan refensi nilai CHOST CFLAGS di halaman Gentoo Safe Cflags.-enable-async-io
: opsi ini untuk mengaktifkan asynchronous I/O - sangat penting untuk menghentikan squik melakukan blocking pada baca/tulis ke harddisk.-enable-useragent-log
berguna agar squid mencatat useragent di entri log - berguna jika anda menggunakan lynx untuk melakukan debug kecepatan squid.-enable-snmp
aktifkan ini jika anda ingin menampilkan statistik squid dalam bentuk grafik.-enable-cache-digests
harus diaktifkan jika anda menggunakan cache peer.-enable-storeio="aufs"
adalah alernatif penyimanan metode I/O. AUFS adalah Asynchronous, memiliki performa yang signifikan ketimbang UFS atau diskd.-enable-removal-policies="heap,lru"
adalah pilihan opsi untuk removal policies, dan saya memilih menggunakan "heap LFUDA", atau anda juga bisa menggunakan "LRU".-with-maxfd=16384
digunakan agar squid tidak terblokir apabila dalam keadaan load tinggi.-enable-poll
untuk meningkatkan performa squid.-disable-ident-lookups
menghentikan squid dari melihat ident di setiap koneksi, bisa juga untuk mencegah serangan DOS yang dapat mematikan squid server, yang biasanya dengan cara membuka ribuan koneksi.-enable-truncate
memerintahkan squid untuk selalu menggunakan truncate()
ketimbang unlink()
ketika menghapus file cache.enable-delay-pools
jika anda ingin mengatur bandwidth koneksi, gunakan opsi ini.
Setelah anda menjalankan perintah ./configure diatas dengan sukses, saatnya kita menuju langkah beriktunya (jika ada error muncul, anda harus mencari solusinya sebelum masuk ke perintah selanjutnya).
Selanjutnya ketikkan perintahmake
kemudian dilanjutkan denganmake install
seteleah selesai ketikkan perintahstrip /usr/sbin/squid /usr/lib/squid/*
perintah ini untuk menghapus simbol pada binari squid, agar ukurannya menjadi lebih kecil. Perintah ini bersifat opsional.
Squid.conf
squid.conf adalah file yang digunakan untuk melakukan konfigurasi squid. Disini saya tidak akan menampilkan semua konfigurasi squid.conf, tetapi hanya yang bisa untuk mengoptimalkan kinerja squid. Misal opsi http_port tidak saya cantumkan, jika anda ingin mengetahui list lengkap dan deskripsi dari opsi-opsi konfigurasi squid yang ada, silahkan kunjungi manualnya.
hosts_file /etc/hosts
dns_nameservers 208.67.222.222 208.67.220.220
cache_replacement_policy heap LFUDA
cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 50 KB
cache_dir aufs /var/spool/squid 10000 16 256
cache_mem 64 MB
logfile_rotate 10
memory_pools off
maximum_object_size 50 MB
quick_abort_min 0 KB
quick_abort_max 0 KB
log_icp_queries off
client_db off
buffered_logs on
half_closed_clients off
Apa maksud dari opsi-opsi diatas?hosts_file /etc/hosts
opsi ini untuk memerintahkan squid untuk melihat entri yang ada di /etc/hosts, hal ini berguna jika anda ingin memblokir iklan atau situs jahat dengan memanfaatkan file /etc/hosts (Insya Allah mendatang saya akan membuat tutorial ini.dns_nameservers 208.67.222.222 208.67.220.220
Ini Penting! Squid akan mem-pause (menghentikan sementara) koneksi ketika melakukan DNS lookup. Dengan memasukkan DNS, maka akan mencegah hal ini. Disini saya menggunakan DNS dariOpenDNS.cache_replacement_policy heap LFUDA
ini adalah pilihan replacement policy, dimana saya menggunakan heal LFUDA. Anda bisa menggunakan pilihan lain, info lengkap perihal cache_replacement_policy, silahkan baca disini.cache_swap_low 90
adalah prosentase dimana squid akan melakukan pembersihan cache, jadi jika anda memiliki 10 GB , maka squid akan melakukan pembersihan cache lama pada penggunaan 9 GB.cache_swap_high 95
secara agresif squid akan menghapus file cache lama dengan menggunakan opsi replacement policy yang disebutkan diatas.maximum_object_size_in_memory 50 KB
Ini untuk menentukan besaran file yang akan disimpan di memori. Pada konfigurasi ini saya mengaturnya maksimum hanya 50 KB, ini agar tidak mengganggu memori. Penyimpanan file yang besar di memori akan memberikan beban tinggi sehingga mmeori tidak bisa dikontrol dengan baik.cache_dir aufs /var/spool/squid 10000 16 256
Dianjurkan untuk tidak mengubah opsi AUFS, karena opis ini memiliki performa yang lebih bagus dari opsi lain. Angka 10000 adalah jumlah besarnya file cache yang digunakan squid dalam MB.cache_mem 64 MB
Jangan mengatur cache_mem terlalu besar. Cache_mem menunjukkan jumlah maksimal RAM yang digunakan oleh squid untuk menyimpan obyek di memori. Ingat, squid membutuhkan RAM sekitar 100 MB per 1 GB file cache. Jadi, jika anda memiliki 10 GB file cache, maka squid membutuhkan RAM minimal 1 GB.memory_pools off
Menghentikan squid menempel di memori ketika tidak ada aktifitas.maximum_object_size 50 MB
ini adalah jumlah maksimum obyek yang akan disimpan oleh squid. Dianjurkan untuk tidak mengaturnya terlalu besar.quick_abort_min 0 KB
opsi ini sangat berguna, tetapi dalam kasus tertentu akan membuat squid tidak optimal. Quick_abort_time akan mengevaluasi berapa banyak sisa data yang akan ditransfer jika klien membatalkannya. Jika nilainya berada dalam range quick_abort, maka quid akan melanjutkan download sampai selesai dan kemudian menyimpannya di cache. Memang terdengar bagus, namun masalah akan muncul jika klien melakukan beberapa koneksi, maka squid akan menyelesaikan proses download untuk semua koneksi, dan akibatnya squid menjadi lambat. Dengan mengaturnya ke angka 0, maka squid akan menonaktifkan opsi ini.quick_abort_max 0 KB
fungsi sama dengan quick_abort_minlog_icp_queries off
jika anda menggunakan cache_peer, maka opsi ini akan menghentikan squid untuk selalu melakukan query ke masing-masing cache_peer.client_db off
jika diaktifkan maka squid akan menyimpan statistik semua klien, hal ini bisa membebani mmeori, maka sebaiknya dinonaktifkan.buffered_logs on
melakukan buffering pada penulisan file log, dapat meingkatkan performa squid.half_closed_clients off
mengirimkan connection-close ke klien sehingga membuka setengah koneksi untuk squid.
Setelah konfigurasi squid.conf dilakukan, kini saatnya menjalankan squid. Ketikkan perintah agar squid membuat swap/usr/sbin/squid -z
kemudian aktifkan squid/usr/sbin/squid start
Cek apakah squid sudah berjalan apa belum dengan perintahsudo netstat -pln | grep squid
bila muncul tampilan seperti dibawah ini, berarti squid sudah berjalantcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 4281/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:50113 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:3401 0.0.0.0:* 4281/(squid)
Note: Jika anda ingin melakukan pengaturan bandwidth dengan fitur delay_pools, silahkan baca petunjuknya di blog Ghozali.
Pimp Your Squid!
Ok, squid sudah kita optimalkan, bagaimana dengan TCP? Pertama, kita akan melakukan 'modprobe ip_conntrack' dengan menambahkan modul ini di /etc/modules (debian) atau /etc/modprobe.conf (RHEL/CentOS).
Hal diatas akan menghentikan squid memunculkan pesanparseHttpRequest: NF getsockopt(SO_ORIGINAL_DST) failed: (92) Protocol not available
Kemudian kita akan melakukan modifikasi pada sysctl. Tambahkan baris berikut pada akhir file /etc/sysctl.conf
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.ipv4.tcp_mem = 4096 4096 4096
net.ipv4.tcp_low_latency = 1
net.core.netdev_max_backlog = 4000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 16384
Kemudian tambahkan entri berikut pada file /etc/security/limits.conf
* - nofile 65535
Lakukan reboot, kemudian jalankan squid
contoh squid delay pool
ini contoh squid.conf yang diparsing delay poolnya aja
===========================================
delay_pools 4
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow magic_words1
delay_class 2 2
delay_parameters 2 6000/13000 500/3500
delay_access 2 allow fslambat
delay_access 2 allow magic_words3
delay_access 2 deny all
delay_class 3 2
delay_parameters 3 5000/120000 800/120000
delay_access 3 allow pelem
delay_access 3 deny all
delay_class 4 2
delay_parameters 4 8000/110000 1000/22000
delay_access 4 allow dokumen
delay_access 4 deny all
===========================================
dari contoh diatas ada beberapa acl yang digunakan, seperti
—————————————
acl pelem url_regex -i “datalambat.txt”
acl fslambat url_regex -i “fs-lambat”
acl dokumen url_regex -i “dokumen.txt”
acl magic_words1 url_regex -i 10.10.
acl magic_words3 url_regex -i ftp .bmp .swf .fla
————————————————
untuk acl magic_words1 dan magic_words3 sudah jelas isinya, sedangan untuk acl pelem dengan file datalambat.txt, dengan isi file seperti:
\.exe$
\.zip$
\.msi$
\.asx$
\.rfx$
\.rfx\?.*$
\.asx\?.*$
\.msi\?.*$
\.exe\?.*$
============================
acl fslambat dengan file fs-lambat
#FS
.youtube.com
.bigoo.ws
.myspace.com
.nackvision.com
.bunnyherolabs.com
.mynicespace.com
.glitteryourway.com
.itypeit.net
.bp-grafix.net
.lyricsdownload.com
.song2play.com
.rockyou.com
.flash-gear.com
.imageshack.us
.bunnyherolabs.com
===============================
acl dokumen dengan file dokumen.txt
\.doc$
\.xls$
\.pdf$
\.ppt$
\.pps$
\.pps\?.*$
\.ppt\?.*$
\.pdf\?.*$
\.xls\?.*$
\.doc\?.*$
isi file hanyalah contoh, dan dapat dimodifikasi sesuai kebutuhan, silahkan utak atik sendiri untuk mendapatkan performa kinerja squid proxy yang diinginkan.
konfigurasi
File konfigurasi squid adalah squid.conf
ada beberapa tag konfigurasi untuk delay pools di squid.conf.
1. delay_pools
menyatakan berapa banyak bagian/pool yang akan dibuat
misal delay_pools 2
2. delay_class
menentukan klas/tipe pembagian bandwith dari setiap pool. 1 pool hanya boleh memiliki 1 clas, tidak lebih atau kurang.
bagian merupakan nomer urut dari jumlah pool didelay pool, jadi ada 1 s/d n bagian dimana n merupakan angka jumlah pada delay_pools
tipe merupakan tipe class delay yang dipakai.
Secara umum tipe menyatakan bagaimana cara membagi bandwidth, ada 3 tipe:
tipe/class keterangan
1 semua bandwidth yang ada akan dibagi sama rata untuk semua user squid
ex ada bandwidth 128 dan semua bandwith dipakai untuk browsing
2 membatasi pemakaian bandwith dari total bandwidth yang ada, dan bandwith yang diperuntukan squid akan dibagi semua user dengan sama rata.
ex ada bandwidth 128 dimana 28 kbit dipakai untuk email dan sisanya (128-28) 100 kbit dipakai untuk browsing
3 membatasi pemakaian bandwidth dari total bandwidth yang ada, setiap network class C akan mendapat bandwidth sama besar, setiap user pernetwork akan mendapat bandwidth yang sama besar dari total bandwidth per network
ex: bandwidth tersedia 512 kb, untuk browsing disediakan bandwidth 384 kb, sisanya untuk aktifitas lain.
Di jaringan tersebut ada 3 departement dengan network yang berbeda misal lab (192.168.1.0/24), manajer(192.168.2.0/24), sales(192.168.3.0/24).
nah misah oleh admin di set bahwa pernetwork mendapat jatah 128 kb/s.
maka user² di sales akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.
maka user² di lab akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.
maka user² di manajer akan mendapat pembagian bandwidth sama besar dari total 128 kb/s.
misal:
delay_class 1 2 # pool 1 memakai clas tipe 2
delay_class 2 3 # pool 2 memakai clas tipe 3
#
delay_access
Memberi batasan siapa saja yang boleh mempergunakan delay pools ini.
Penting untuk diingat sebaiknya setelah menetukan batasan jangan lupa di akhiri dengan deny all.
misal:
delay_access 1 allow manajer
delay_access 1 deny all
delay_access 2 allow sales
delay_access 2 deny all
# delay_parameters
Ini adalah bagian terpenting dari delay pools memberikan aturan main setiap delay pools yang dibentuk.
delay parameter mempunyai format yang disesuaikan dengan tipe/class yang dipakai.
Tapi disetiap tipe yang dipakai ada 1 format baku yaitu restore/max.
restore menunjukkan maksimum kecepatan data yang dapat dilewatkan bila harga max sudah terlampaui, dalam satuan bytes/second
max menunjukkan besar-nya file atau bucket yang dapat dilewatkan tanpa melalui proses delay. dalam satuan bytes.
Yang perlu diperhatikan dari satuan diatas adalah harga restore dimana kita sering menerima/menyewa/membeli bandwidth dari provider dalam satuan bits/second bukan bytes/second. Sedangkan satuan kecepatan yang ditunjukkan oleh Microsoft pada saat mendonlot file adalah bytes/sec.
Sedangkan satuan dari harga max sudah sesuai dengan kebiasaan sehari-hari, dimana kita memberi besaran bytes pada file-file.
1 byte = 8 bit.
SpesialCase: -1/-1 berarti unlimited atau tidak dibatasi pada nilai restore/max
ex: 1000/64000 harga restore sama dengan 8000 bits/sec atau 8 kbits/sec.
Yang artinya user akan mendapat donlot brustable selama file yang akan dibuka lebih kecil dari 64 kbytes, jadi kecepatan bisa diatas 8 kbit/sec.
Bila ternyata file yang dibuka melebihi 64 bytes, maka proses limitasi akan segera dimulai dengan membatasi kecepatan maksimal 8 kbits/s.
class 1
delay_parameters
ex: delay_parameters 1 1000/64000
Berarti semua network akan mendapat bandwidth yang sama di pool no 1.
Sebesar 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
class 2
delay_parameters
ex: delay_parameters 1 32000/32000 1000/64000
Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth.
Bila terdapat lebih dari 1 network class C, maka total yang dihabiskan tetap 256 kbit/sec
dan tiap user akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
class 3
delay_parameters
ex: delay_parameters 1 32000/32000 8000/8000 1000/64000
Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth.
Bila terdapat lebih dari 1 network class C, maka setiap network akan dipaksa maksimum sebesar (8000*8) 64 kbits/sec
dan tiap user pada satu network akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.
Contoh
dalam 1 network dengan penggunaan bandwidth total tidak dibatasi terdapat beberapa komputer dengan klasifikasi sebagai berikut
* admin, server dengan bandwidth unlimited
* staff dengan bandwidth 1,5 kbytes/sec, bila file yang diakses melebihi 64Kbte
* umum dengan bandwidth 1 kbytes/sec, bila file yang diakses melebihi 32 Kbyte
acl all src 0.0.0.0/0.0.0.0
acl admin src 192.168.1.250/255.255.255.255
acl server src 192.168.1.251/255.255.255.255
acl kantor src 192.168.1.0/255.255.255.0
acl staff src 192.168.1.1 192.168.1.111 192.168.1.2 192.168.1.4 192.168.1.71
delay_pools 3
delay_class 1 1
delay_parameters 1 -1/-1
delay_access 1 allow admin
delay_access 1 allow server
delay_access 1 deny all
delay_class 2 1
delay_parameters 2 1500/64000
delay_access 2 allow staf
delay_access 2 deny all
delay_class 3 1
delay_parameters 3 1000/32000
delay_access 3 allow umum
delay_access 3 deny all
Cara mencobanya paling mudah adalah dengan menggunakan donlot manajer semacam DAP®, GetRight® maka akan terlihat bandwidth sudah dibatasi.
Special case
Delay pools juga dapat digunakan untuk membatasi donlot file untuk extensi tertentu.
Gunakan ACL url_regex untuk mengatasi hal ini.
Contoh dibawah digunakan untuk membatasi donlot file multimedia hingga 1 kByte/sec.
acl multimedia url_regex -i \.mp3$ \.rm$ \.mpg$ \.mpeg$ \.avi$ \.dat$
delay_pools 1
delay_class 1 1
delay_parameters 1 1000/16000
delay_access 1 allow multimedia
delay_access 1 deny ALL
1 komentar:
cantumkan sumber nya !!! dari mana
Posting Komentar