Minggu, 29 Januari 2012

Instalasi dan konfigurasi SQUID

I. Pendahuluan


Internet pada saat ini bagi sebagian atau banyak kalangan sudah menjadi  kebutuhan primer dan digunakan untuk kebutuhan mereka masing-masing. Kebanyakan para pengguna internet mengunjungi situs yang sama secara berulang-ulang. Misalnya suatu situs sudah pernah dikunjungi oleh pengguna tertentu yang lebih dahulu menggunakan jaringan internet, mungkin pada kesempatan berikutnya ada pengguna lain yang mengunjungi situs yang sama. Pengguna-pengguna ini akan berhubungan langsung dengan web yang sama melalui jaringan lokal yang sama dan memerlukan bandwidth untuk koneksi ke internet. Karena terbatasnya bandwidth dan banyaknya para pengguna, maka koneksi internet menjadi begitu lambat.

Cara kerja Proxy

Untuk meningkatkan efisiensi penggunaan bandwidth, biasanya dalam jaringan lokal dipasang suatu server proxy. Server proxy adalah server yang berguna sebagai perantara antara client dengan server gateway sebelum berhubungan ke internet. Server proxy mempunyai kemampuan untuk menyimpan file-file yang berasal dari situs yang pernah dikunjungi. Gambar di atas menunjukkan cara kerja Proxy. Misalnya seorang user meminta www.yahoo.com, maka proxy akan mengambil dan meletakkannya di harddisk server untuk selanjutnya diambil oleh user yang bersangkutan. Bila ada user lain yang meminta data yang sama, server tidak perlu lagi mendownloadnya dari www.yahoo.com, tapi cukup memberikan data yang ada di cachenya sehingga akan lebih cepat dan menghemat bandwidth. Dengan adanya server proxy ini, maka situs yang sering di browsing akan semakin terasa semakin cepat oleh user karena telah disimpan di dalam cache proxy. Selain itu, server proxy juga memiliki fungsi lainnya, diantaranya autentifikasi user, memblok situs, memblok banner, dan lain-lain.

II. Squid

Salah satu software terbaik yang ada di GNU/Linux adalah Squid. Squid merupakan software proxy server open ource dengan banyak fitur. Program squid mempunyai kemampuan untuk berlaku sebagai server cache maupun sebagai filter. Objek data yang dapat disimpan oleh squid meliputi objek permintaan data dari permintaan klien HTTP, FTP maupun Gopher. Sebagian besar para sistem administrator menggunakan squid sebagai server Proxy.

Dalam menjalankan fungsinya sebagai server proxy, squid biasanya dikombinasikan dengan firewall (Iptables). Dalam hal ini iptables diunakan untuk mengarahkan komputer klien untuk menggunakan server proxy dalam berhubungan dengan jaringan internet. Dalam kaitannya dengan firewall, server proxy dapat dipasang pada komputer yang sama dengan firewall atau dapat juga dipasang pada komputer yang terpisah dengan firewall. Masing-masing konfigurasi akan menentukan aturan rantai yang diberlakukan pada firewall maupun konfigurasi server proxy sendiri.

Squid dapat dikonfigurasikan sebagai :
a. Mode httpd-accelerator untuk meningkatkan performansi web server kita.
Squid server berlaku seperti  reverse proxy-cache, squid akan  menerima  permintaan  client,  memberikan  data  di  cachenya,  jika  tidak  ada akan mengambil langsung dari server aslinya (reverse proxy).

b. Proxy  caching-server  agar  seluruh  user  dalam  jaringan  kita  dapat menggunakan squid untuk mengakses internet.
Sebagai  proxy  cache  server, kita dapat mengontrol secara keseluruhan  kinerja jaringan kita dan memberlakukan beberapa aturan dalam memberikan data yang dapat dilihat, diakses atau didownload. Kita juga dapat mengontrol penggunaan bandwith, waktu koneksi dan sebagainya.

III. Parent dan Sibling pada squid

Dalam squid dikenal istilah parent dan sibling. Parent akan mengambil langsung ke web site yang diminta, sedangkan sibling akan mencarinya dulu ke parent. Bila tidak ada, maka sibling mencarinya langsung ke web site yang bersangkutan. Sebuah proxy cache dapat dikonfigurasikan untuk berjalan standalone server atau sebagai hierarki  cache dengan  dengan proxy-proxy  lainnya, yang akan kita bahas lebih lanjut berikut ini.

Standalone server, tanpa parent dan sibling
Ini  merupakan  konfigurasi  yang  paling  sederhana yang biasa  dipakai  oleh ISP (Internet  Service  Provider) dan warung internet  dimana  squid  server local akan langsung mencari ke web server www.detik.com untuk memenuhi permintaan client bila data tidak terdapat di cache.

Sibling tanpa parent

Biasanya konfigurasi ini dipakai untuk jaringan yang tidak terlalu besar. Permintaan oleh klien pada suatu URL akan  diterima lokal  yang  akan mencarinya ke sibling, bila tidak ada, lokal akan langsung  mencarinya  langsung ke webserver yang bersangkutan.

Parent dan Sibling
Biasanya konfigurasi  ini diterapkan untuk  jaringan yang besar. Efisiensi  jaringan  ini cukup baik, karena yang bekerja untuk mendapatkan halaman web keluar  jaringan hanyalah parent sisanya sibling dan para client  tidak dapat memperolehnya secara langsung (dengan  firewall). Klien yang meminta halaman web www.detik.com akan diterima squid server lokal yang kemudian akan memeriksa cachenya, bila tidak ada dia akan mencari ke sibling, bila ada sibling akan memberikannya ke  lokal, namun bila  tidak  ada  lokal  akan  meminta  ke  parent.  Sebagai  parent  ia  harus  melayani permintaan  ini.  Walaupun  ia  tidak  memiliki  halaman  yang  diminta, ia harus memenuhinya  dengan  mengambil  langsungke  www.detik.com. Setelah  itu permintaan dikembalikan ke lokal dan akhirnya ke klien.

Hierarki Squid
Server proxy dapat dihubungkan dengan  server-server proxy lain  dan membentuk hierarki seperti pada sebuah organisasi. Jika server proxy bergabung dalam sebuah hierarki, sebuah  server proxy bisa memilih  untuk  mengambil dokumen yang diinginkan  dari server proxy lain  dalam  hierarki atau mengambil  dari  server  asal. Hierarki ini terdiri dari cache pada  tingkat nasional, regional, dan organisasi. Dalam prototipe  ini cache pada  tingkat nasional melayani permintaan akses untuk domain negara  tersebut.  Misalnya  terdapat  permintaan  dokumen  dari  URL http://www.republika.co.id  yang  berada  di  bawah  domain  id  (Indonesia),  maka dokumen tersebut diminta dari cache tingkat nasional di Indonesia. 



Prototipe Hierarki cache

IV. Squid di Centos 5.2

Pada tutorial kali ini kita akan menggunakan squid bawaan dari distro Centos 5.2. Untuk melihat apakah di dalam sistem kita sudah ada squid bawaan, maka bisa dilihat dengan cara sebagai berikut:
# rpm -qa | grep squid
Dan squid bawaan untuk centos 5.2 adalah squid-2.6.STABLE6-5.el5_1.3.

Kalau ternyata paket squid belum terinstal dalam sistem kita, maka silahkan download di sini. Misal kita sudah mendownload squid versi 2.7 dan ingin memasukkannya ke dalam sistem kita. Maka, urutan langkah-langkahnya adalah sebagai berikut:

1. Ekstrak Paket Squid
# tar -zxvf squid-2.7.STABLE6.tar.gz 

2. Membuat User Squid
# useradd –d /cache/ -r –s /dev/null squid >/dev/null 2>&1  
# mkdir /cache 
# chown –R squid.squid /cache/ 
3. Instalasi Squid
# cd squid-2.7.STABLE6  
# ./configure  --prefix=/usr/local/squid 
# make  
# make install  

Dan perlu diperhatikan juga bahwa jika kita menggunakan squid bawaan distro, maka kita juga harus melakukan langkah-langkah sebagai berikut:
# mkdir /cache 
# chown -R squid.squid /cache 

V. Konfigurasi Squid

Setelah proses instalasi selesai, langkah selanjutnya adalah mengkonfigurasi squid. Dan perlu diketahui bahwa ada perbedaan lokasi direktori file konfigurasi squid. Jika kita menggunakan squid bawaan distro (dalam hal ini Centos 5.2) maka file direktorinya terletak di /etc/squid, sedangkan file direktori konfigurasi squid hasil instalasi maka file tersebut berada di /usr/local/squid/etc. Karena tutorial ini menggunakan squid bawaan centos, maka silahkan buka file tersebut di /etc/squid.
# cd /etc/squid 
Kemudian buat duplikat dari file squid.conf dengan cara:
# cp squid.conf squid.conf.ori
Setelah itu, untuk melihat konfigurasi squid, ketikkan:

# vi squid.conf
Di dalam file squid.conf banyak opsi-opsi yang bisa digunakan sesuai dengan kebutuhan. Namun, pada umumnya orang-orang yang menggunakan squid lebih menitikberatkan pada opsi kendali akses (Access List) dan http_access serta membiarkan default opsi-opsi lainnya.Opsi  kendali akses pada squid digunakan untuk mengatur akses pada server proxy. Pola kendali akses yang diberlakukan pada squid cukup lengkap. Akses internet yang dilakukan user dapat dibatasi dengan acl (access control list). Masing-masing acl mendefinisikan suatu tipe aktivitas tertentu, seperti waktu akses atau jaringan asal kemudian dihubungkan dengan pernyataan http_access yang memberitahu pada squid apakah akses diijinkan atau tidak.

Format penulisan acl adalah sebagai berikut:
acl nama_acl tipe_acl string1 ...
acl nama_acl tipe_acl "file" ...

Nama acl dapat diberikan sembarang sesuai dengan macam akses yang akan dikendalikan. Tipe acl yang dapat digunakan beserta parameter yang mengikuti dan keterangannya dapat dilihat pada tabel di bawah ini:


Tipe Acl
Argumen
Keterangan
src
IP/netmask
Asal alamat IP Klien
IP1-IP2
Rentang alamat IP
dst
IP/netmask
Tujuan IP URL
myip ip/netmask
Socket alamat ip lokal
srcdomain
nama_domain
Asal Domain Klien
dstdomain
nama_domain
Tujuan Domain URL
srcdom_regex [-i] xxx … Pernyataan untuk asal klien
dstdom_regex [-i] xxx … Pernyataan untuk tujuan server
time [hari] [h1:m1-h2:m2] ...
Singkatan nama hari
S – Sunday
M – Monday
T – Tuesday
W – Wednesday
H – Thursday

F – Friday
A - Saturday
url_regex [-i] ^http:// ...
Pernyataan nama URL lengkap
urlpath_regex [-i] \.gif$ ...
Pernyataan path pada URL
port Port ...
Nomor port
Port1-port2 ...
Rentang nomor port
myport Port … Port socket TCP local
proto Protocol ...
Nama protocol yang dikendalikan (HTTP, FTP, dll)
method Metode … Nama metode yang dikendalikan (GET,POST,dll)
browser [-i] regexp ...
Pernyataan untuk pola pencocokan pada header permintaan
ident Username … Daftar username
ident_regex [-i] pola … Pernyataan untuk username
src_as Angka … Angka asal autonomi asal klien
dst as Angka … Angka system autonomi tujuan server
proxy_auth Username … Autentifikasi username melalui proses eksternal
proxy_auth_regex [-i] pattern … Autentifikasi username melalui proses eksternal
snmp_community String … Nama komunitas untuk membatasi agen SNMP
maxconn Jumlah Jumlah maximum koneksi HTTP untuk satu alamat IP
req_mime_type Type_mime1 … Pernyataan berdasarkan tipe MIME yang diminta klien


VI. Contoh-Contoh Konfigurasi Squid

Untuk mengkonfigurasi squid, kita harus masuk ke file squid.conf yang berada di /etc/squid.

A. Agar seluruh user bisa internet
acl dwinetwork src 192.168.0.0/24
http_access allow dwinetwork

B. Agar salah satu user tidak bisa internet
acl test src 192.168.0.190/32  
http_access deny test 
 
C. Agar user tidak bisa mengkases beberapa domain
 acl test src 192.168.0.190/32
acl restdomain dstdomain "/etc/squid/list/domain.txt"
http_access deny restdomain test

Setelah itu, membuat file domain.txt yang berisi nama-nama domain yang terlarang untuk dikunjungi di direktori /etc/squid/list. Misalnya seperti berikut ini:

.okezone.com
.detik.com 
.yahoo.com
D. Agar user tidak bisa mencari kata-kata tertentu di Search engine seperti Google
 acl test src 192.168.0.190/32
acl restkata url_regex -i "/etc/squid/list/kata.txt"
http_access deny restkata test

Setelah itu, membuat file kata.txt yang berisi kata-kata yang terlarang untuk dicari dimesin search engine
di direktori /etc/squid/list. Misalnya berisi:

proxy
sex 
naked
E. Agar user tidak bisa berkunjung ke situs tertentu dengan menggunakan IP
 acl test src 192.168.0.190/32
acl restip dst "/etc/squid/list/ip.txt"
http_access deny restip test

Setelah itu, membuat file ip.txt yang berisi ip-ip yang terlarang untuk dikunjungi di direktori /etc/squid/list. Misalnya berisi:

66.55.141.20/32 
64.38.255.172/32 
216.34.131.135/32
70.84.171.179/32
F. Agar semua komputer dibatasi jumlah downloadnya maksimal 2 MB (2000 x 1024 byte = 2048000 byte) yang berlaku dari jam 8 sampai jam 17.30 pada hari kerja
acl nodownload time M-F 08.00-17.30  
acl ekstensi url_regex -i ftp .exe .mp3 .tar.gz .gz .tar.bz2 .bz2 
acl ekstensi url_regex -i ftp .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .raw .wav .iso 
reply_body_max_size 2048000 allow ekstensi nodownload

VII. Sesudah Konfigurasi Squid

Setelah semua konfigurasi yang diperlukan diatur sesuai dengan yang diinginkan, program squid dapat dijalankan. Squid server proxy dapat dijalankan secara mudah dengan perintah squid disertai beberapa opsi yang diperlukan. Sintaks perintah dan opsi yang dapat digunkan untuk menjalankan squid adalah sebagai berikut:

# Squid [-dhsvzCDFNRVYX] [-f konfig] [-[au] port] [-k signal]
Keterangan:
-a: menentukan nomor port akses HTTP (default:3128)
-d: menulis debugging ke suatu stderr
-f: menggunakan file konfigurasi selain default /etc/squid/squid.conf
-h: mencetak pesan help
-k: member isyarat untuk menjalankan squid. Isyarat yang diperbolehkan adalah reconfigure, rotate, shutdown, interrupt, kill, debug, check dan parse
-s: membuat enable logging ke syslog
-u: menentukan nomor port ICP (defaulr:3130), dapat dibuat disable dengan 0
-v: menampilkan verbose
-z: membuat direktori swap cache
-C: membuat disabled test DNS awal
-F: tidak melayani permintaan sampai simpanan terbentuk
-N: menjalankan squid tidak menggunakan daemon
-R: tidak mengatur REUSERADDR pada port
-S: dua kali memeriksa cache selama pembentukan
-V: menjalankan virtual host httpd-accelerator
-x: melakukan debugging penuh
-Y: Hanya return UDP_HIT atau UDP_MISS_NOFETCH selama reload cepat

Sebelum dijalankan untuk pertama kali, squid harus membentuk direktori untuk menyimpan cache. Direktori sesuai dengan yang diatur pada file squid.conf menggunakan opsi cache_dir yang secara default adalah /var/spool/squid. Untuk membentuk cache digunakan perintah squid diikuti opsi –z sebagai berikut:
# squid –z
Jika direktori cache sudah terbentuk, selanjutnya squid cukup dijalankan tanpa membentuk cache baru. Biasanya squid dijalankan sebagai daemon, sehingga untuk menjalankan squid digunakan perintah berikut ini:
# squid –D
Opsi –D digunakan agar squid tidak memeriksa DNS. Opsi ini diberikan karena proses memriksa DNS biasanya memerlukan waktu yang agak lama.
Untuk menyalakan squid, tuliskan perintah berikut:
# service squid start
Untuk merestart squid, tuliskan perintah berikut:
# service squid restart
Jika kita merubah sesuatu di file squid.conf, lalu kita mau mengaplikasikannya di sitem kita, maka pada umumnya kita menggunakan perintah service squid restart. Namun, kalau kita menggunakan perintah ini, maka squid akan dimatikan terlebih dahulu baru kemudian dinyalakan kembali dan ini bisa mengganggu aktifitas yang melibatkan squid. Sebagai penggantinya, maka gunakan perintah berikut:
# squid –k reconfigure

VII. Troubleshooting

Setelah kita mengkonfigurasi squid untuk pertama kalinya, biasanya akan ada error seperti berikut pada saat kita start squid:

Starting squid: /etc/init.d/squid: line 42: 17137 Aborted
$SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1 [FAILED]
dan akan terlihat gambar seperti berikut:




Setelah di cari penyebabnya di file /var/log/message, ternyata penyebabnya adalah tidak adanya visible_hostname.



Solusinya adalah menambahkan visible_hostname di file konfigurasi squid. Masuk ke file /etc/squid/squid.conf, lalu cari bagian visible_hostname dan tambahkan visible_hostname di bagian tersebut. Di squid penulis, penulis menambahkan visible_hostname sebagai berikut:
visible_hostname proxy.catatanlepas.com
Setelah itu, start kembali squidnya dan seharusnya squid sudah bisa berjalan dengan baik.

0 komentar:

Posting Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews