Thursday, April 26, 2012

Proxy dengan FreeBSD 8.2 ZFS

Sebelum memulai sebaiknya untuk tutorial ini jika ingin mendapatkan hasil yang maksimal gunakanlah
real PC dan jangan menggunakan virtual pc, penulis sudah menerapkan tutorial ini pada mesin
intel atom D945GCLF memakai RAM 1G dan HDD sata samsung 80G.
Dan jika hanya untuk belajar/sekedar testing gunakanlah minimal VMware7 (disarankan).

Untuk menginstall aplikasi pada FreeBSD ada dua cara yaitu melalui pkg_add untuk yang simpel
atau koleksi ports untuk custome. Bisa juga menginstall dari source aslinya yaitu kita mengkonfigurasi manual(berarti ada 3 cara ya bukan 2 cara hehehe)

pastikan anda sudah menginstall OS FreeBSD 8.2 dengan ZFS seperti pada tutorial disini:
Install File System ZFS di FreeBSD untuk pemula

Cara pertama
kita pilih mirror freebsd yang terdekat yaitu link lokal (IIX) ketik di terminal:
# setenv PACKAGEROOT “ftp://ftp.itb.ac.id”
untuk install squid dengan cara simpel cukup pake perintah:
# pkg_add -r squid

tunggu sampai proses instalasi otomatis selesai,

Cara kedua melalui ports
(lewati langkah ini jika memakai install melalui pkg_add)

ketik di console:
# setenv PACKAGEROOT “ftp://ftp.itb.ac.id”
# pkg_add -r cvsup-without-gui
# rehash



kita edit dulu csup untuk mirror ke link lokal (IIX) biar proses update port lebih cepat
# cp /usr/share/examples/cvsup/ports-supfile /etc
# ee /etc/ports-supfile

cari string berikut "*default host=CHANGE_THIS.FreeBSD.org"
lalu edit menjadi "*default host=cvsup.itb.ac.id"
exit dari editor dan simpan lalu jalankan perintah berikut:
# cvsup -L 2 -g /etc/ports-supfile

setelah itu tunggu proses update ports sampai selesai,prosesnya bisa memakan waktu tergantung kecepatan koneksi internet anda dan kesibukan jaringan server mirror.
setelah selesai update ports silahkan pindah ke direktori squid:
# cd /usr/ports/www/squid
# make config

pilih option yg di perlukan dan sesuai kebutuhan saja
(kalau penulis memakai sebagai berikut)

1SQUID_KERB_AUTH
2SQUID_NIS_AUTH
3SQUID_CARP
4SQUID_SSL
5SQUID_IDENT
6SQUID_AUFS
7SQUID_KQUEUE
8SQUID_LARGEFILE



pilih OK lalu proses make dan install
# make install
nanti akan muncul popup config PERL langsung pilih OK saja (default)

Cara ketiga
(hanya untuk expert only)
langsung ambil source mungkin yg sudah di patch (kustom) menggunakan fetch/wget dan extrak lalu recompile
# ./configure --prefix=/usr/local/squid
bla..bla.....

berhubung cara ketiga ini sudah expert maka tidak perlu lagi saya menuliskan tutorial ini
(padahal penulis juga belum pernah mencoba cara ketiga ini :ngakak)

jika sudah selesai install squidnya sekarang tinggal create direktori cache dan edit squid.conf.
saya ambil contoh dir cache dengan kapasitas 20G
# zfs create -o compression=gzip-9 -o atime=off -o mountpoint=/cache1 -o quota=20 tank/cache1
lalu set permissionnya sebagai berikut:
# chown -R squid:squid /cache1

timpah/edit squid.conf
# ee /usr/local/etc/squid/squid.conf

dengan konfigurasi berikut:
(jng di copas langsung tp gunakan view source pada kanan atas code ini baru copas)
(lebih mudah mengedit menggunakan WinSCP)

001http_port localhost:3128
002#192.168.1.7--> sesuaikan IP mesin ini
003http_port 192.168.1.7:3128 transparent
004
005#cache deny url that has cgi-bin and ? this is the default earlier than squid 2.7 version
006acl QUERY urlpath_regex cgi-bin ?
007cache deny QUERY
008
009
010#acl nocache dstdomain "/usr/local/etc/squid/disable.acl" # khusus membypass domain yg tidak -
011#cache deny nocache # perlu untuk di cache seperti rapidshare,megaupload dan file hosting lainya
012cache deny nocache1
013
014
015acl all src 0.0.0.0/0.0.0.0
016acl manager proto cache_object
017acl localhost src 127.0.0.1/255.255.255.255
018acl warnet src 192.168.0.0/16
019
020acl SSL_ports port 443
021acl Safe_ports port 80 # http
022acl Safe_ports port 21 # ftp
023acl Safe_ports port 443 # https
024acl Safe_ports port 70 # gopher
025acl Safe_ports port 210 # wais
026acl Safe_ports port 1025-65535 # unregistered ports
027acl Safe_ports port 280 # http-mgmt
028acl Safe_ports port 488 # gss-http
029acl Safe_ports port 591 # filemaker
030acl Safe_ports port 777 # multiling http
031acl purge method PURGE
032acl CONNECT method CONNECT
033
034http_access allow purge all
035http_access allow manager all
036http_access deny !Safe_ports
037http_access deny CONNECT !SSL_ports
038http_access allow localhost
039http_access allow warnet
040http_access deny all
041http_reply_access allow all
042
043# optional jika tidak memakai dns nawala
044# acl block dstdomain "/usr/local/etc/squid/block.acl"
045# http_access deny block
046
047
048# disini penulis juga belum begitu paham jd untuk settingan di bawah ini menggunakan RAM 1G dan dir cache 20G
049# silahkan oprek sendiri untuk hasil yang maksimal
050cache_mem 8 MB
051cache_swap_low 95
052cache_swap_high 99
053
054maximum_object_size 180 MB
055maximum_object_size_in_memory 32 KB
056
057cache_replacement_policy heap LFUDA
058memory_replacement_policy heap GDSF
059cache_dir aufs /cache1 20000 40 256
060cache_access_log /cache1/access.log
061# /cache1/access.log none
062cache_log /cache1/cache.log
063# /cache1/cache.log none
064cache_store_log /dev/null
065logfile_rotate 7
066
067# refresh pattern untuk squid disini belum support store-stale jd ini hanya sebagai contoh dan ini yg saya pake sekarang
068refresh_pattern -i .(css|js|jsp|xml)$ 10080 100% 604800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth ignore-private ignore-reload
069refresh_pattern -i .(gif|png|jpg|ico|bmp|tiff)$ 10080 100% 604800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth ignore-private ignore-reload
070refresh_pattern -i .(swf|wav|mp3|mp4|au|mid)$ 10080 100% 604800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth ignore-private ignore-reload
071
072refresh_pattern .photobucket.*.(jp(e?g|e|2)|tiff?|bmp|gif|png) 14400 99999999% 14400 override-expire ignore-reload ignore-private negative-ttl=0
073refresh_pattern .wordpress.*.(jp(e?g|e|2)|tiff?|bmp|gif|png) 14400 99999999% 14400 override-expire ignore-reload ignore-private negative-ttl=0
074refresh_pattern .speedtest.*.(jp(e?g|e|2)|tiff?|bmp|gif|png) 14400 99999999% 14400 override-expire ignore-reload ignore-private negative-ttl=0
075refresh_pattern .piceye.*.(jp(e?g|e|2)|tiff?|bmp|gif|png) 14400 99999999% 14400 override-expire ignore-reload ignore-private negative-ttl=0
076refresh_pattern ^ftp: 1440 20% 10080
077refresh_pattern ^gopher: 1440 0% 1440
078refresh_pattern -i (/cgi-bin/|?) 0 0% 0
079refresh_pattern . 0 20% 4320
080
081visible_hostname proxy.server
082cache_mgr proxy
083
084
085zph_mode tos
086zph_local 0x30
087zph_parent 0
088zph_option 136
089
090cache_effective_user squid
091cache_effective_group squid
092
093pid_filename /var/squid/logs/squid.pid
094
095
096# vary_ignore_expire on
097header_access From deny all
098# header_access Link deny all
099# header_access Server deny all
100header_access Via deny all
101header_access X-Forwarded-For deny all
102# header_access Host deny all
103# header_access Referer deny all
104# header_access Location deny all

setelah selesai edit squid.conf ketik di terminal:
# rehash
untuk cek squid.conf
# squid -k parse
jika tanpa error lanjut create swap
# squid -z
dan jalankan squidnya
# squid

silahkan test squid anda :D
# squidclient mgr:info

Langkah terakhir beberes config, pertama edit rc.conf
# ee /etc/rc.conf
tambahkan entry berikut:

1sendmail_enable="NO"
2sendmail_submit_enable="NO"
3sendmail_outbound_enable="NO"
4sendmail_msp_queue_enable="NO"

edit juga loader.conf
# ee /boot/loader.conf
tambahkan entry berikut:
(ingat ram minimal 1G)

1vm.kmem_size="512M"
2vm.kmem_size_max="512M"
3vfs.zfs.arc_max="40M"
4vfs.zfs.vdev.cache.size="5M"

dan membuat start-up untuk squidnya
# ee /usr/local/etc/rc.d/squid.sh
copas entry berikut:

1#!/bin/sh
2/usr/local/sbin/squid

lalu
# chmod 755 /usr/local/etc/rc.d/squid.sh
jika anda ingin menambahkan dir_cache tinggal create zfs lagi seperti:
# zfs create -o compression=gzip-9 -o atime=off -o mountpoint=/cache2 -o quota=20 tank/cache2
lalu set permissionnya sebagai berikut:
# chown -R squid:squid /cache2
lalu tambahkan ke squid.conf
1cache_dir aufs /cache2 20000 40 256

dan seterusnya.....

Sekian dan terima kasih atas perhatiannya dan semoga bermanfaat.

No comments:

Post a Comment