Server adalah sebuah
sistem komputer yang menyediakan jenis layanan tertentu dalam sebuah Jaringan Komuter. Server didukung dengan
prosesor yang bersifat scalable dan RAM yang besar, juga
dilengkapi dengan sistem operasi khusus, yang disebut sebagai sistem operasi jaringan atau network operating system. Server juga
menjalankan perangkat lunak administratif yang mengontrol akses terhadap
jaringan dan sumber daya yang terdapat di dalamnya, seperti halnya berkas atau
alat pencetak (printer), dan memberikan akses kepada workstation anggota jaringan.
Server proxy adalah sebuah komputer yang menawarkan layanan jaringan
komputer untuk mengizinkan klien untuk membuat koneksi jaringan tidak langsung
ke layanan jaringan lainnya. Seorang klien terhubung ke server proxy, kemudian
melakukan permintaan koneksi, file, atau sumber daya lain yang tersedia pada
server yang berbeda. Proxy menyediakan sumber daya baik dengan menghubungkan ke
server tertentu atau dengan melayani dari cache. Dalam beberapa kasus, proxy
dapat mengubah permintaan klien atau respon server untuk berbagai tujuan.
Empat Jenis Server Proxy
·
Transparan Proxy
Jenis server proxy mengidentifikasi
dirinya sebagai server proxy dan juga membuat alamat IP asli tersedia melalui
http header. Ini umumnya digunakan untuk kemampuan mereka untuk website cache
dan tidak secara efektif memberikan anonimitas apapun untuk mereka yang
menggunakannya. Namun, penggunaan proxy transparan akan membuat Anda terkena IP
Banned. Ini transparan dalam hal alamat IP Anda terlihat publik, bukan
transparan dalam istilah yang Anda tidak tahu bahwa Anda menggunakannya (sistem
anda tidak secara khusus dikonfigurasi untuk menggunakannya.)
·
Anonymous Proxy
Jenis server proxy mengidentifikasi
dirinya sebagai server proxy, tetapi tidak membuat alamat IP yang asli
tersedia. Jenis server proxy terdeteksi, tetapi memberikan anonimitas wajar
bagi sebagian besar pengguna.
·
Distorting Proxy
Jenis server proxy mengidentifikasi
dirinya sebagai server proxy, tetapi membuat alamat IP yang salah asli tersedia
melalui http header.
·
High Anonymous Proxy
Jenis server proxy tidak
mengidentifikasi dirinya sebagai server proxy dan tidak menyediakan alamat IP
asli.
Proses Penginstalan
Server Proxy
PERSIAPAN
· Hardware
Untuk hardware proxy server saya kali ini menggunakan Prosesor Intel Celeron 430 (Coppermine) 1.80Ghz dengan 2 buah hardisk 80 GB SATA Seagate 7200 RPM & memori Vgen 1.5 GB DDR2. Mengapa 2 hardisk? Performa read/write Squid akan lebih optimal jika direktori cache diletakkan di hardisk terpisah. Peletakkan direktori cache di partisi yang berada dalam satu hardisk dengan system, tidak akan meningkatkan performa Squid, begitu juga dengan teknik RAID. Jika anda memiliki dana lebih, ada baiknya jika anda menggunakan beberapa hardisk untuk penyimpanan cache squid. Tidak perlu berkapasitas besar, yang penting memiliki kemampuan read/write yang baik, misalnya hardisk jenis SCSI, SAS dan sebagainya.
Untuk hardware proxy server saya kali ini menggunakan Prosesor Intel Celeron 430 (Coppermine) 1.80Ghz dengan 2 buah hardisk 80 GB SATA Seagate 7200 RPM & memori Vgen 1.5 GB DDR2. Mengapa 2 hardisk? Performa read/write Squid akan lebih optimal jika direktori cache diletakkan di hardisk terpisah. Peletakkan direktori cache di partisi yang berada dalam satu hardisk dengan system, tidak akan meningkatkan performa Squid, begitu juga dengan teknik RAID. Jika anda memiliki dana lebih, ada baiknya jika anda menggunakan beberapa hardisk untuk penyimpanan cache squid. Tidak perlu berkapasitas besar, yang penting memiliki kemampuan read/write yang baik, misalnya hardisk jenis SCSI, SAS dan sebagainya.
Untuk memori, sebenarnya squid tidak memerlukan kapasitas yang besar,
dengan 512 MB sudah cukup untuk menjalankannya. Tetapi dalam kasus proxy warnet
saya, saya ingin agar kemampuan penyimpanan cache di memori bisa lebih besar,
sehingga diharapkan squid bisa menghadirkan TCP_MEM_HIT lebih banyak.
· Software
Squid terlahir atau tercipta hanya untuk Linux seorang . Jadi, jangan sekali-kali pernah berpikir dan berusaha menjalankan Squid di mesin Mikocok (baca: microsoft), baik itu seri Desktop maupun Server. Gak nyambung bro!
Squid terlahir atau tercipta hanya untuk Linux seorang . Jadi, jangan sekali-kali pernah berpikir dan berusaha menjalankan Squid di mesin Mikocok (baca: microsoft), baik itu seri Desktop maupun Server. Gak nyambung bro!
Squid dapat berjalan sangat baik di hampir semua distro Linux. Saya
sendiri pada waktu uji coba menggunakanUbuntu Server 8.10 32-bit. Walaupun anda memiliki
komputer yang bisa menjalankan aplikasi 64-bit, disarankan untuk Squid tetap
menggunakan OS 32-bit, karena Squid belum sepenuhnya teruji di mesin 64-bit.
Untuk meningkatkan performa baca/tulis, disarankan hardisk yang akan anda
gunakan untuk menyimpan cache menggunakan format ReiserFS.
Karena, RaiserFS memiliki kemampuan baca/tulis yang lebih baik untuk file-file
ukuran kecil ketimbang format ext3.
Pada saat ujicoba, saya menggunakan Squid versi 2.7STABLE5. Untuk list
versi lain yang tersedia, silahkan kunjungi halaman ini.
· INSTALASI
Disini saya tidak akan menerangkan bagaimana cara menginstal Ubuntu Server 8.10 atau distro Linux lainnya ke komputer yang akan anda gunakan untuk proxy server. Tetapi jika anda membutuhkan tutorialnya, silahkan baca diHowToForge.
Disini saya tidak akan menerangkan bagaimana cara menginstal Ubuntu Server 8.10 atau distro Linux lainnya ke komputer yang akan anda gunakan untuk proxy server. Tetapi jika anda membutuhkan tutorialnya, silahkan baca diHowToForge.
Membuat Partisi Format ReiserFS
Setelah Server Ubuntu anda siap, ikuti langkah-langkah instalasi berikut. Yang pertama kita akan membuat hardisk kedua (tempat direktori cache) memiliki format ReiserFS. Distro Debian sudah mendukung format ReiserFS, jika anda menggunakan CentOS anda harus mengaktifkan
Setelah Server Ubuntu anda siap, ikuti langkah-langkah instalasi berikut. Yang pertama kita akan membuat hardisk kedua (tempat direktori cache) memiliki format ReiserFS. Distro Debian sudah mendukung format ReiserFS, jika anda menggunakan CentOS anda harus mengaktifkan
centosplus repo
dengan
men-setting enable=1
pada/etc/yum.repos.d/CentOS-Base.repo
kemudian
jalankan perintah yum
install reiserfs-utils
Jika anda menggunakan Ubuntu seperti saya, anda tidak perlu melakukan
setting apapun, karena Ubuntu sudah mendukung format ReiserFS. Yang perlu anda
lakukan adalah menjalankan perintah
mkfs.reiserfs
/dev/sdXX
Dimana XX adalah partisi dimana yang akan anda gunakan untuk menyimpan
cache. (Untuk melihat list hardisk, gunakan perintah
Pada kasus saya,
sudo
fdisk -l
.Pada kasus saya,
mkfs.reiserfs
/dev/sdb1
Kemudian tambahkan partisi anda ini ke /etc/fstab
/dev/sdb1
/var/spool/squid reiserfs defaults,notail,noatime 1 2
/var/spool/squid adalah direktori penyimpanan cache.
Compile Squid
Langkah kedua adalah melakukan compile source squid. Download source-nya dengan perintah
Langkah kedua adalah melakukan compile source squid. Download source-nya dengan perintah
sudo
wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE5.tar.gz
setelah itu ekstrak dengan perintah
sudo tar -zxvf
squid-2.7.STABLE5.tar.gz
kemudian kita masuk ke direktori source squid
cd
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
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 perintah
make
kemudian dilanjutkan dengan
make install
seteleah selesai ketikkan perintah
strip /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 dari OpenDNS.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 bacadisini.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 perintah
sudo netstat -pln | grep
squid
bila muncul tampilan seperti dibawah ini, berarti squid sudah berjalan
tcp
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 diblog 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 pesan
parseHttpRequest:
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
fs.file-max = 65535
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
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
No comments:
Post a Comment