Tentang IT dan Komputer

Teknologi Informasi

02.08.07 INSTALASI SQUID

Posted by intrik on April 26, 2007

Sumber situs : Maliang

Catatan : Makalah ini hanya untuk dokumentasi pribadi dan didapati dari situs lain.

INSTALASI SQUID v1

Artikel ini akan membahas bagaimana menginstal proxy web cache dengan squid yang akan sangat dibutuhkan oleh suatu lembaga yang sangat berhubungan dengan internet (misal warnet).

Catatan:
– Penginstalan dengan metode ini telah berhasil dilakukan pada sistem RH6.2, RH7.0, RH7.1, dan RH7.2
– Squid yang telah digunakan adalah squid-2.4.STABLE1-src.tar.gz dan squid-2.4.STABLE4-src.tar.gz, squid-2.4.STABLE6-src.tar.gz

o>Persiapan:
Downloadlah file-file yang dibutuhkan untuk instalasi dan optimasi squid pada direktori yg anda suka (misal /var/tmp):
– squid-2.4.STABLE6-src.tar.gz (bisa didapat di http://www.squid-cache.org)
– malloc.tar.gz (bisa didapat di http://debian.web.id/download/lib/malloc.tar.gz)
– floppy.tgz (bisa didapat di http://debian.web.id/download/systool/floppy.tgz)

o> Langkah-langkah instalasi:
Konfigurasi dan Optimasi Squid
——————————-

More…
– ekstraklah file squid hasil d/l an
# tar zxvf squid-2.4.STABLE6-src.tar.gz

– squid proxy server tidak dapat berjalan sebagai super user root, oleh karena itu, buatlah user yang akan menjalankan squid:
# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1
# mkdir /cache/ —- anda tidak perlu mengetikkan perintah ini jika anda telah membuat partisi /cache pada saat penginstalan linux pertama kali.
# chown -R squid.squid /cache/

– editlah file icons/Makefile.in dengan text editor yang anda suka dan gantilah baris:
DEFAULT_ICON_DIR = $(sysconfdir)/icons
menjadi:
DEFAULT_ICON_DIR= $(libexecdir)/icons

– editlah file src/Makefile.in dengan text editor yang anda suka dan gantilah baris:
DEFAULT_CACHE_LOG = $(localstatedir)/logs/cache.log
menjadi:
DEFAULT_CACHE_LOG = $(localstatedir)/log/squid/cache.log
DEFAULT_ACCESS_LOG = $(localstatedir)/logs/access.log
menjadi:
DEFAULT_ACCESS_LOG = $(localstatedir)/log/squid/access.log
DEFAULT_STORE_LOG = $(localstatedir)/logs/store.log
menjadi:
DEFAULT_STORE_LOG = $(localstatedir)/log/squid/store.log
DEFAULT_PID_FILE = $(localstatedir)/logs/squid.pid
menjadi:
DEFAULT_PID_FILE = $(localstatedir)/run/squid.pid
DEFAULT_SWAP_DIR = $(localstatedir)/cache
menjadi:
DEFAULT_SWAP_DIR = /cache
DEFAULT_ICON_DIR = $(sysconfdir)/icons
menjadi:
DEFAULT_ICON_DIR = $(libexecdir)/icons

Maksud dari pengeditan file di atas adalah untk mengubah lokasi default dari file cache.log, access.log, dan store.log agar ditempatkan di dalam direktori
/var/log/squid, dan meletakkan pid (process identification) squid di direktori /var/run, serta menyimpan direktori icons di /usr/lib/squid/icons.

Menggunakan GNU malloc library untuk meningkatkan cache performance squid

– kopikan malloc.tar.gz ke direktori /var/tmp
# cp malloc.tar.gz /var/tmp
– ekstrak dan compile malloc
# cd /var/tmp
# tar zxvf malloc.tar.gz
# cd malloc
# export CC=egcs
# make
– kopikan library hasil kompilasi malloc (libmalloc.a) ke lib direktori linux anda
# cp libmalloc.a /usr/lib/libgnumalloc.a
– kopikan file malloc.h hasil kompilasi malloc ke direktori system include linux anda
# cp malloc.h /usr/include/gnumalloc.h

Kompilasi dan Optimasi Squid
—————————-
– Masuklah kembali ke direktori di mana terdapat source squid
# cd /var/tmp/squid-2.4.STABLE6

– Ketikkan command berikut di komputer anda:

CC=�?egcs�?
./configure
–prefix=/usr
–exec-prefix=/usr
–bindir=/usr/sbin
–libexecdir=/usr/lib/squid
–localstatedir=/var
–sysconfdir=/etc/squid
–enable-delay-pools
–enable-cache-digests
–enable-poll
–disable-ident-lookups
–enable-truncate
Command-command tersebut di atas akan sangat berarti sekali jika anda membaca help file yang disediakan ) (just type ./configure –help)

– Sekarang kita lakukan kompilasi dan instalasi squid, cukup ketikkan command-command berikut pada linux anda:

# make -f makefile
# make install
# mkdir -p /var/log/squid
# rm -rf /var/logs/
# chown squid.squid /var/log/squid/
# chmod 750 /var/log/squid/
# chmod 750 /cache/
# rm -f /usr/sbin/RunCache
# rm -f /usr/sbin/RunAccel
# strip /usr/sbin/squid
# strip /usr/sbin/client
# strip /usr/lib/squid/unlinkd
# strip /usr/lib/squid/cachemgr.cgi

Menggunakan script-script yang ada pada file floppy.tgz
——————————————————-
– ekstrak file floppy.tgz (misal ke /var/tmp)
# tar zxvf floppy.tgz

– kopikan script2 yg dibutuhkan oleh squid ke direktori yang sesuai
# cd /var/tmp/floppy
# cp /var/tmp/floppy/Squid/init.d/squid /etc/rc.d/init.d/
# cp /var/tmp/floppy/Squid/logrotate.d/squid /etc/logrotate.d/

Mengedit file konfigurasi squid
——————————-
– editlah file squid.conf yg terletak pada direktori /etc/squid/ dengan text editor yg anda suka (misal vi, pico, joe, atau mcedit)
# vi /etc/squid/squid.conf

Pada artikel ini saya tidak akan membahas semua option yang ada pada squid.conf, saya hanya akan membahas option-option yang dirasa penting untuk menjalankan squid dan berpengaruh besar dalam optimasi squid.

http_port 3128
Option ini akan menentukan di port berapa squid akan berjalan (biasanya di port 3128 dan 8080)

icp_port 0
Option ini akan menentukan melalui port berapa squid akan mengirimkan dan menerima request ICP dari proxy cache tetangga.

cache_mem 32 MB
Option ini menentukan berapa besar memory yang akan digunakan oleh squid, defaultnya adalah 8 MB yaitu default yang cocok untuk digunakan pada
banyak sistem. Namun jika anda memiliki memory yang berlebih, maka disarankan untuk menaikkannya. Ada yang berpendapat bahwa nilai ini
didapat dari sepertiga memory bebas bagi squid.

cache_dir ufs /cache 1600 4 256
Option pada cache_dir menentukan sistem penyimpanan seperti apa yang akan digunakan (ufs), nama direktori tempat penyimpanan cache (/cache), ukuran
disk dalam megabytes yang digunakan oleh direktori tempat penyimpanan cache (1600 Mbytes), jumlah subdirektori pertama yang akan dibuat di bawah /cache (4),
dan jumlah subdirektori kedua yang akan diciptakan di bawah subdirektori pertama tadi (256).
Nilai2 pada option cache_dir tadi harus disesuaikan dengan sistem yang anda miliki, biasanya yang harus disesuaikan hanyalah tempat penyimpanan cache, ukuran disk,
dan jumlah subdirektori yang akan dibuat. Mengenai angka2 tersebut, dapat kita peroleh dari rumus yang telah disediakan oleh Mas Devshed untuk optimasi sbb:
1. Gunakan 80% atau kurang dari setiap kapasitas cache direktori yang telah kita siapkan. Jika kita mengeset ukuran cache_dir kita melebihi nilai ini,
maka kita akan dapat melihat penurunan performansi squid.
2. Untuk menentukan jumlah subdirektori pertama yang akan dibuat, dapat menggunakan rumus ini:
x=Ukuran cache dir dalam KB (misal 6GB=~6,000,000KB) y=Average object size (gunakan saja 13KB)
z= Jumlah subdirektori pertama = (((x / y) / 256) / 256) * 2 = # direktori
Sebagai contoh, misal saya menggunakan 6 GB dari untuk /cache (setelah disisihkan 80% nya), maka:
6,000,000 / 13 = 461538.5 / 256 = 1802.9 / 256 = 7 * 2 = 14
maka baris cache_dir akan menjadi seperti ini: cache_dir ufs 6000 14 256

cache_store_log none
Option ini akan melog setiap aktivitas dari storage manager. Log ini akan memperlihatkan objek-objek mana saja yang dikeluarkan dari cache, dan objek-objek mana saja yang disimpan dan untuk brp lama objek tersebut disimpan. Karena biasanya tidak ada gunanya untuk menganalisis data ini, maka disarankan untuk didisable.

negative_ttl 2 minutes
Default dari option ini adalah 5 menit, tetapi Mas Moh. J. Kabir menyarankan agar direndahkan menjadi 2 dan jika mungkin menjadi 1 menit. Kenapa settingannya seperti itu? Mas Moh. J. Kabir menjelaskan bahwa kita menginginkan proxy yang kita miliki setransparan mungkin. Jika seorang user mencari halaman web yang dia yakin itu ada, maka kita pasti tidak ingin adanya waktu lag antara URL menuju dunia dan kemampuan user untuk mengaksesnya.

cache_effective_user squid
cache_effective_group squid
Jika squid cache dijalankan oleh root, maka user yang akan menjalankannya akan diubah sesuai UID/GID user yang disebutkan pada option di atas. Pada contoh option di atas jika squid dijalankan oleh root, maka squid cache akan dijalankan dengan UID/GID squid.

maximum_object_size 1024 KB
Dengan option ini, ukuran file maksimum yang disimpan oleh squid cache bisa dibatasi. Dengan kata lain objek yang lebih besar dari bilangan ini tidak akan disaved ke dalam disk yang sudah disisihkan buat cache (misal /cache).

minimum_object_size 4 KB
Dengan option ini maka objek yang lebih kecil dari bilangan yang disebutkan tidak akan disaved ke dalam disk yang sudah disisihkan buat cache. Ada tambahan dari artikel yang ditulis Mas Jay bahwa ukuran file minimum yang dicache bertujuan mengefektifkan filesystem di mana biasanya ext2 diformat dengan 4 KB inode.

ftp_user hari@huhui.com This email address is being protected from spam bots, you need Javascript enabled to view it
Dengan option ini, maka ketika klien mengakses situs ftp anonymous, email address di atas akan dikirim sebagai password bagi ftp server anonymous.

reference_age 1 month
Dengan option ini, maka file cache yang tidak pernah diakses lagi selama nilai parameter di atas, akan dihapus secara otomatis oleh squid.

acl PazzNET src 192.168.1.0/255.255.255.0
http_access allow PazzNET
http_access deny all
Option-option tersebut menentukan subnet mana yang boleh mengakses proxy squid. Jika ada beberapa subnet, kita bisa menambahkan definisi acl nya.

cache_mgr hari@huhui.com This email address is being protected from spam bots, you need Javascript enabled to view it
Email-address dari local cache manager yang akan menerima email jika cache mati.Email ini pulalah yang akan muncul pada browser klien jika terjadi suatu kesalahan ketika mengakses suatu web via proxy squid.

visible_hostname hari.huhui.com
Informasi ini dikirim sebagai footer pada saat pesan error tampil di layar browser klien.

half_closed_clients off
Beberapa klien dapat membatalkan koneksi TCP nya, dengan membiarkan bagian penerimaaannya terbuka. Kadang-kadang squid tidak dapat membedakan antara koneksi TCP yang half-closed dan full-closed. Defaultnya, koneksi half-closed tetap terbuka sampai pembacaan dan penulisan pada soket memunculkan pesan error. Ubahlah nilai ini ke off, maka squid dengan serta merta akan menutup koneksi client jika tidak ada data yang dibaca lagi.

Saran Mas Devshed yang lain untuk meningkatkan performance:
cache_swap_high 100%
cache_swap_low 80%

Setelah semua selesai dilakukan, cobalah start squid anda dan rasakanlah perbedaannya )
# /etc/rc.d/init.d/squid start

Jika ada error, jangan panik, carilah letak kesalahan dengan selalu memonitor log
# tail -f /var/log/messages

sumber: http://linux2.arinet.org/index.php?option=com_content&task=view&id=64&Itemid=2

INSTALASI SQUID v2

[root@gembels squid-2.5.STABLE2]# ulimit -HSn 8192

Dan jangan lupa setelah installasi selesai,
silahkan untuk mengkonfigurasi kernel anda agar file deskriptor tsb berguna,
[root@gembels root]# vi /etc/sysctl.conf
fs.file-max = 8192

[root@gembels root]# sysctl -p /etc/sysctl.conf

Kompilasi dimulai,

[root@gembels squid-2.5.STABLE2]#
./configure \
–prefix=/usr/local/squid \
–exec-prefix=/usr/local/squid \
–enable-delay-pools \
–enable-cache-diggests \
–enable-poll \
–disable-ident-lookups \
–enable-snmp

dimana:
–enable-delay-pools: supaya bisa menggunakan pembatasan bandwith
–disable-ident-lookups: mengurasi dos

[root@gembels squid-2.5.STABLE2]# make
[root@gembels squid-2.5.STABLE2]# make install

Sekarang masuk ke bagian configurasinya

[root@gembels root]# vi /usr/local/squid/etc/squid.conf

Saat ini karena masih hangat dengan acl (access control),
Lets Rock `n Roll!!

————- cut ———————————–
http_port 3128 #port 3128 dipakai untuk melisten squid di ip tsb

#Parameter ini berfungsi supaya halaman web dinamik tidak masuk ke dalam cache
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

#Parameter cache_mem akan membatasi pemakaian RAM untuk digunakan Squid,
#umumnya pemakaian RAM ini menggunakan aturan sepertiga dari RAM komputer.
#Ukuran file maksimum bisa dibatasi, terutama jika alokasi cache anda tidak
#terlalu besar, sedangkan ukuran minimum file yang dicache bertujuan
#mengefektifkan filesystem dimana biasanya ext2 diformat dengan 4 KB setiap inode.
cache_mem 20 MB
maximum_object_size 256 KB
minimum_object_size 4 KB

#ACCESS CONTROL

#mem blok situs keywords (sex,adult,porn,nude)
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl user src 192.168.0.0/255.255.0.0 #IP LAN
acl porno url_regex -i “/usr/local/squid/etc/porno.txt�? #url yang diblok dan kalau tidak ada filenya silahkan dibuat dulu

http_access deny user porno
http_access allow user
http_access deny all
—————————————————–

sekarang kita akan membatasi download
yang dibatasi ada beberapa file (*.mpeg .wav .mp3) dan lainya

dimana pada configure tadi kita telah mengenable kan option
–enable-delay-pools

————— cut ———————————
#Kita tidak ingin membatasi download pada range ip 192.168.0.0-192.168.255.255
acl LAN url_regex -i 192.168.
#Batasi dl pada jenis file berikut
acl extensions url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar
.avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav
#saat ini kita mempunya 2 jenis delay pools
delay_pools 2
#yang pertama kita tidak ingin membatasi dlnya,
#yang kedua akan dibatasi dlnya
delay_class 1 2
#-1/-1 berarti tidak ada batasan untuk delay pools 1
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow LAN
#sekarang delay pools ke 2 yang akan dibatasin
delay_class 2 2
#5000/128000 jumlah bytes untuk seluruh network
#2000/100000 jumlah bytes untuk satu client
#setelah dl mencapai batas maximum 128000 bytes
#maka download akan mandapat -+ 5000 bytes
#
delay_parameters 2 5000/128000 2000/100000
delay_access 2 allow extensions

———— cut —————————————–

Berikut full contoh configurasi yang saya pakai akhirnya yang di bedah dari ibank.port5.com dan linux.prabumulih.com :

=========================================================
http_port 3128
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 128 MB
maximum_object_size 256 KB
minimum_object_size 4 KB
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl user src 192.168.0.0/255.255.0.0
acl porno url_regex -i “/usr/local/squid/etc/porno.txt�?
http_access deny user porno
http_access allow user
http_access deny all
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl LAN src 192.168.0.1-192.168.0.100/32
acl extensions urlpath_regex -i ftp \.mp3$ \.zip$ \.bmp$ \.ram$ \.rmi$ \.pdf$ \.tgz$ \.gz$ \.exe$ \.mov$ \.mpg$ \.wav$ \.asf$ \.rpm$ \.iso$ \.wmv$ \.mpeg$ \.wma$
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow LAN
delay_access 1 deny all
delay_access 2 allow user extensions
delay_access 2 deny all
delay_class 2 2
delay_parameters 2 8000/8000 1000/1000
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
cache_dir aufs /usr/local/squid/var/cache 2000 16 256
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow manager user
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl our_networks src 192.168.0.0/24 192.168.1.0/24
http_access allow our_networks
http_access deny all
http_reply_access allow all
icp_access allow all
cache_mgr gembels@gmail.com
cache_effective_user squid
cache_effective_group squid
visible_hostname ngetopbox
logfile_rotate 0
log_icp_queries off
cachemgr_passwd /var/www/passwd info stats/objects
buffered_logs on
=========================================================

Setelah config file selesai (walaupun hanya potongan saja), distart squid dengan cara :

#/etc/init.d/squid -z
#/etc/init.d/squid -D

Nah biasanya klo error pasti pada cache kalau ndak ya sokor…
Untuk memastikan jalan squidnya
#ps ax|grep squid
[root@gembels root]# ps ax|grep squid
31256 ? S 0:00 squid -D
31258 ? S 22:00 (squid) -D
1321 pts/2 S 0:00 grep squid

Berarti Ok!

dan agar ketika waktu booting squid langsung up, maka kita letakkan di /etc/rc.local

[root@gembels root]#vi /etc/rc.local
/etc/init.d/squid start

Ada baiknya kita membuat rotasi untuk log squid,
Hal ini agar partisi squid tidak penuh, dan akan dilakukan per tiap.

[root@gembels root]# vi /etc/logrotate.d/squid

/usr/local/squid/var/access.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}
/usr/local/squid/var/cache.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}

/usr/local/squid/var/store.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
postrotate
/usr/local/squid/sbin/squid -k rotate
endscript
}

[root@gembels root]#/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 –dport 80 -j DNAT –to 192.168.0.1:3128
[root@gembels root]#/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 –dport 8080 -j DNAT –to 192.168.0.1:3128

Asumsi squid di set menggunakan port 3128, IP Address Proxy Server=192.168.0.1

Kalo untuk restart atau melakukan perubahan confignya
#/etc/init.d/squid start -k reconfigure
atau cukup
#squid start -k reconfigure
sumber:http://black.gembels.com/2006/07/26/cara_install_squid_warnet.html

UPGRADE SQUID

1. dapatkan squid versi yg lebih baru.
2. extract/unzip dan lakuan kompilasi sesuai kebutuhan
3. sebelum melakukan install (make install), matikan squid yg sedang running.
4. rename directory squid terinstall ( misal: /usr/local/squid menjadi /usr/local/squid.old ).
5. lakukan instalasi (make install).
6. copy kan file konfigurasi lama ke directory squid yang baru ( biasanya terletak pada /usr/local/squid/etc/ )
7. jalankan squid.

TRANSPARENT PROXY

Kasus:
saya coba memasang transparent proxy di mesin squid saya dengan
menggunakan port 8009 dan sudah berjalan dengan baik jika di test di
semua client dengan memasukkan ip squid 192.168.0.10:8009

$netstat -pln |grep squid
tcp 0 0 0.0.0.0:8009 0.0.0.0:*
LISTEN 2473/(squid)

masalah jika saya test ubah port 8009 ke 3128 (karena ada sebagian
client yg tersebar menggunakan port lama squid yakni 3128) agar
memudahkan saya tidak perlu lagi setting satu-satu maka saya gunakan
iptables :

$iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 3128 -j REDIRECT
–to-port 8009

Solusi:
Ganti seperti ini :

$IPT -t nat -A PREROUTING -p tcp –destination-port 80 \
-j REDIRECT –to-ports 8009

Solusi:

/sbin/iptables –table nat –append POSTROUTING –out-interface eth0
-j MASQUERADE
/sbin/iptables –append FORWARD –in-interface eth0 -j ACCEPT
/sbin/iptables -A PREROUTING -t nat -p tcp -s 192.168.1.0/24 –dport
80 -j DNAT –to 192.168.1.1:2210
echo 1 > /proc/sys/net/ipv4/ip_forward

terus di squid.conf
http_port 2210
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

di client di tcp/ip setting nya masukin gw nya ip server

sumber:http://www.mail-archive.com/tanya-jawab@linux.or.id/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: