Monday, November 9, 2009

Instalasi Squid di Windows

Beberapa hari terakhir aplikasi proxy server di tempat saya sedang mengalami masalah. Masalah ini disebabkan karena antivirus yang saya pakai mendeteksi aplikasi proxynya sebagai trojan (maklum lah aplikasi crack crack an... :D ). Masalah yang membuat saya harus mulai lagi belajar tentang aplikasi proxy dan cache server Squid. Aplikasi proxy dan cache server ini sebenarnya sudah lama saya ketahui, tapi berhubung dulunya saat belajar mengenai instalasi sampai konfigurasi mengalami jalan buntu. Memang saat itu aplikasi squid saya coba pada sistem linux. Klop dah.. tambah ribet. Sampai akhirnya mentok dan akhirnya malas untuk utak atik lagi.

Berhubung kondisi sedang butuh dan terpaksa, akhirnya deh saya coba belajar lagi tentang squid, namun kali ini bukan versi Linux yang saya pakai. Karena semua komputer di tempat saya menggunakan sistem milik Om Bill Gates, jadinya saya hanya mencoba belajar instalasi, konfigurasi, sampai Squid-nya dijalankan pada sistem Windows. Untuk membuat cache dan proxy server dengan Squid pada sistem Windows sebenarnya cukup mudah, ada 4 tahapan utama, yaitu :
  1. Download binary (file yang sudah jadi) squidnya untuk windows
  2. Extract file binary-nya di drive C:\
  3. Konfigurasi Squid nya
  4. Jalankan Squid

- Untuk Squid yang saya pakai saat ini masih Squid for Windows versi 2.7 Stable7, karena saat mencoba Squid versi 3.0 masih mengalami kendala dengan kondisi tempat saya. Binary Squid bisa di download di sini
- Extract file binary nya pada drive C:\


- Konfigurasi file Squid.conf pada direktori C:\squid\etc\ . Konfigurasi bisa disesuaikan dengan kondisi network di tempat anda. Misal, koneksi internet hanya bisa di akses oleh beberapa komputer di tempat anda, pembagian bandwidth pada jam jam tertentu atau komputer tertentu. Dibawah ini akan saya contohkan konfigurasi Squid yang mungkin bisa disesuaikan dengan kondisi di tempat anda.

http_port 8080
dns_nameservers 208.67.222.222 208.67.220.220
cache_mgr admin@network.com
visible_hostname www.ekomalik.blogspot.com

ipcache_size 1024
ipcache_low 93
ipcache_high 97
fqdncache_size 1024

cache_mem 8 MB
cache_swap_low 96
cache_swap_high 98

minimum_object_size 0 KB
maximum_object_size 100 MB
maximum_object_size_in_memory 50 KB

cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

cache_dir aufs c:\SquidCache 10000 8 256
cache_dir aufs d:\SquidCache 10000 8 256

access_log c:/squid/var/logs/access.log squid
logfile_rotate 10
log_ip_on_direct on
log_fqdn on

quick_abort_min 0 KB
quick_abort_max 0 KB
memory_pools off

refresh_pattern ^ftp: 10080 95% 241920 reload-into-ims override-lastmod
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 180 95% 120960 reload-into-ims override-lastmod
refresh_pattern -i \.gif 15 75% 43200
refresh_pattern -i \.tif 10080 75% 43200 reload-into-ims
refresh_pattern -i \.bmp 10080 75% 43200 reload-into-ims
refresh_pattern -i \.(jpg|jpeg) 10080 75% 43200 reload-into-ims
refresh_pattern -i \.png 15 75% 43200 reload-into-ims
refresh_pattern -i \.pdf 10080 100% 43200 reload-into-ims
refresh_pattern -i \.exe 10080 100% 43200 reload-into-ims
refresh_pattern -i \.zip 10080 100% 43200 reload-into-ims
refresh_pattern -i \.gz 10080 100% 43200 reload-into-ims
refresh_pattern -i \.rar 10080 100% 43200 reload-into-ims
refresh_pattern -i \.ace 10080 100% 43200 reload-into-ims
refresh_pattern -i \.js 4320 50% 10080
refresh_pattern -i \.css 4320 50% 10080
refresh_pattern -i \.swf 4320 50% 10080 reload-into-ims
refresh_pattern -i \.htm 120 50% 10080 reload-into-ims
refresh_pattern -i \.html 120 50% 10080 reload-into-ims
refresh_pattern ^http://*.friendster.com/.* 720 100% 4320
refresh_pattern ^http://*.facebook.com/.* 720 100% 4320
refresh_pattern ^http://mail.yahoo.com/.* 720 100% 4320
refresh_pattern ^http://*.yahoo.*/.* 720 100% 4320
refresh_pattern ^http://*.yimg.*/.* 720 100% 4320
refresh_pattern ^http://*.gmail.*/.* 720 100% 4320
refresh_pattern ^http://*.google.*/.* 720 100% 4320
refresh_pattern ^http://*.akamai.*/.* 720 100% 4320
refresh_pattern ^http://*.googlesyndication.*/.* 720 100% 4320

reload_into_ims on
pipeline_prefetch on
vary_ignore_expire on
client_db off


######### ACCESS CONTROL
#########

acl manager src 10.10.1.100
acl manager src 10.10.1.150
acl manager src 10.10.1.200
acl supervisor src 10.10.1.110
acl supervisor src 10.10.1.120
acl supervisor src 10.10.1.130
acl supervisor src 10.10.1.160
acl supervisor src 10.10.1.170
acl supervisor src 10.10.1.210
acl supervisor src 10.10.1.220
acl supervisor src 10.10.1.230
acl supervisor src 10.10.1.240
acl staf src 10.10.1.11
acl staf src 10.10.1.12
acl staf src 10.10.1.61
acl staf src 10.10.1.211
acl staf src 10.10.1.221
acl staf src 10.10.1.231
acl umum src 10.10.1.250

acl downloadlambat url_regex "c:\squid\etc\downloadlambat.txt"
acl facebookers url_regex "c:\squid\etc\facebook.txt"

acl localnet src 10.10.1.0/24
acl localhost src 127.0.0.1/32
acl all src 0.0.0.0/0.0.0.0

acl SSL_ports port 443 # SSL
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT

http_access allow manager Safe_ports
http_access allow supervisor Safe_ports
http_access allow staf Safe_ports
http_access allow umum facebookers
http_access deny umum !facebookers
http_access deny localnet !Safe_ports
http_access deny all !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny localnet
http_access deny all
always_direct deny all


######### DELAY POOL #########

delay_pools 4


delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_class 4 1

delay_parameters 1 8000/8000 100/8000
delay_parameters 2 64000/64000 32000/64000
delay_parameters 3 48000/48000 16000/64000
delay_parameters 4 -1/-1

delay_access 1 allow downloadlambat
delay_access 2 allow supervisor
delay_access 3 allow staf
delay_access 3 allow umum
delay_access 4 allow manager


Pada contoh konfigurasi Squid.conf diatas mungkin bisa sedikit saya jelaskan. Jika masih belum mengerti coba pelajari sendiri keterangannya pada file squid.conf.default.

http_port : port squid yang digunakan pada server proxy
dns_nameservers : IP DNS server yang digunakan pada Squid, pada contoh diatas saya gunakan IP Open DNS yang bisa digunakan sebagai filter untuk memblokir akses ke situs situs seperti content dewasa, kekerasan, pornografi, judi dan sebagainya.
cache_mgr : pengelola Squid server
visible_hostname : untuk menampilkan alamat web
minimum_object_size : ukuran file minimal yang akan disimpan pada direktori cache Squid
maximum_object_size : ukuran file terbesar yang akan disimpan pada direktori cache Squid
maximum_object_size_in_memory : ukuran file terbesar yang akan disimpan pada memory CPU. Semakin besar file akan semakin menghabiskan kapasitas memory CPU. Lebih baik gunakan ukuran yang kecil, supaya bisa lebih banyak menampung file file berukuran kecil pada memory CPU.
cache_replacement_policy : Penempatan file pada direktori cache Squid. Diatas saya menggunakan LFUDA, karena pada metode ini, akan menghapus file file berukuran kecil dan tetap menyimpan file file berukuran besar pada direktori cache Squid.
memory_replacement_policy : Penempatan file pada memory CPU. Di atas saya menggunakan GDSF, karena akan menghapus file file berukuran besar dan tetap menyimpan file file berukuran kecil.
cache_dir : Letak direktori cache Squid. Jika pada satu komputer terdapat lebih dari satu HDD, letakkan cache direktori pada masing masing HDD. Pada prinsipnya lebih baik menyimpan cache pada banyak HDD dengan kapasitas direktori setiap hdd menjadi kecil kecil, daripada menyimpan cache direktori pada satu HDD dengan ukuran direktori yang besar.
access_log : Untuk menentukan letak file log Squid.

Pada contoh diatas saya menggunakan ACL dan Delay_pools untuk membagi koneksi dan bandwidth pada jaringan lokal. Untuk user, saya membagi 4 golongan pemakai koneksi internet. Yaitu Manager, Supervisor, Staf dan Umum. Yang masing masing golongan mempunyai IP address yang sudah didaftarkan. Lalu, saya bagi bandwidth untuk masing masing golongan, yang didefinisikan pada 4 Delay_Pools.

Pada delay_pools pertama menggunakan pool kelas 2 dengan ketentuan user pada pool pertama hanya bisa menggunakan kecepatan maksimum 8000 Byte atau 64 Kilobits/s lalu setelah mencapai 8 KiloByte Squid akan menurunkan kecepatan download menjadi 100 Byte atau 0.8 Kilobit/s. Pada pool ini, saya gunakan pada semua user yang mendownload file file dengan ekstensi yang saya daftarkan di file c:\squid\etc\downloadlambat.txt Untuk contoh pengisian ekstensi file yang didaftarkan bisa di lihat di bawah.

Pada delay_pools ke dua saya menggunakan pool kelas 2 dengan ketentuan user pada pool ke dua hanya bisa menggunakan kecepatan maksimum 64000 Byte atau 512 Kbps, lalu setelah mencapai 64000 Byte kecepatan akan diturunkan menjadi 32000 Byte atau 256 Kbps. Pool ke 2 ini saya gunakan pada user golongan Supervisor.

Pada delay_pools ke tiga saya juga menggunakan pool kelas 2 dengan ketentuan user pada pool ke tiga hanya bisa menggunakan kecepatan maksimum 48000 Byte atau 384 Kbps, lalu setelah mencapai 16000 Byte kecepatan akan diturunkan menjadi 16000 Byte atau 128 Kbps. Pada pool ke 3 ini saya gunakan untuk membatasi bandwidth user pada golongan staf dan umum. Tetapi, meskipun golongan staf dan umum berhak mendapatkan bandwidth yang sama besar, tetapi golongan staf bisa mengakses semua alamat web dan golongan umum hanya bisa mengakses alamat web yang saya daftarkan pada file c:\squid\etc\facebook.txt . Dalam contoh ini, user umum hanya bisa mengakses alamat dari situs jejaring online facebook.

Pada delay_pools ke 4 atau terakhir, saya menggunakan pool kelas 1 dengan ketentuan user bisa menggunakan kecepatan maksimum atau unlimited. Pada pool ini saya gunakan pada user dengan golongan manager.

Contoh isi file c:\squid\etc\downloadlambat.txt

\.[Ee][Xx][Ee]$ # .exe
\.[Aa][Vv][Ii]$ # .avi
\.[Ww][Aa][Vv]$ # .wav
\.[Mm][Oo][Vv]$ # .mov
\.[Mm][Pp][Ee]$ # .mpe
\.[Mm][Pp][Gg]$ # .mpg
\.[Mm][Pp][Ee][Gg]$ # .mpeg
\.[Mm][Pp]1$ # .mp1
\.[Mm][Pp]2$ # .mp2
\.[Mm][Pp]3$ # .mp3
\.[Mm][Pp]4$ # .mp4
\.[Mm][Pp]5$ # .mp5
\.3[Gg][Pp]$ # .3gp




Contoh file c:\squid\etc\facebook.txt

facebook.com

fbcdn.net

5 comments:

  1. mari squid nang microtik ek...!!!gawe golek traffict, judul step by stef mikrotik kek, atau apa apalah

    ReplyDelete
  2. dohhh.. tambah ra mudeng saya kang.. wkwkwkwk

    mampir siang kang :D

    ReplyDelete
  3. haduh.. saya pake linux ubuntu nihh.. he.. :)

    ReplyDelete
  4. saya uda pake linux ubuntu nie mas tapi agak ribet buat setingaanny.ribetnya mungkin karena belum sering seting yg begituan ya.

    ReplyDelete
  5. @oeoes : sek.. rung tau ngoprek mikrotik. ndisek coba cobak thok, tapi terus males. :D

    @kang nara : huehehe... akang yang satu ini memang rajin deh berkunjung ke sini. makasih ya kang.. ;)

    @andrie callista : selamat kang udah berhasil dan bisa nikmatin squid di ubuntu nya. :D

    @ekaitpc : hehe.. saya juga masih belum berhasil coba di linux mas

    ReplyDelete