Monday, December 19, 2016
Install Proxy Squid Lusca di Linux Ubuntu Server 14 04 dengan Mikrotik
Install Proxy Squid Lusca di Linux Ubuntu Server 14 04 dengan Mikrotik
ketoprakdjawir. - Pada kali ini saya akan berbagi cara menginstall Proxy Squid Lusca pada ubuntu server 14.04 yang disandingkan dengan mikrotik. Sebelumnya kita baca terlebih dahulu pengertian dari Squid, Web Proxy, dan Lusca.
Squid
Squid adalah sebuah daemon yang digunakan sebagai proxy server dan web cache. Squid memiliki banyak jenis penggunaan, mulai dari mempercepat server web dengan melakukan caching permintaan yang berulang-ulang, caching DNS, caching situs web, dan caching pencarian komputer di dalam jaringan untuk sekelompok komputer yang menggunakan sumber daya jaringan yang sama, hingga pada membantu keamanan dengan cara melakukan penyaringan (filter) lalu lintas. Meskipun seringnya digunakan untuk protokol HTTP dan FTP, Squid juga menawarkan dukungan terbatas untuk beberapa protokol lainnya termasuk Transport Layer Security (TLS), Secure Socket Layer (SSL), Internet Gopher, dan HTTPS. Versi Squid 3.1 mencakup dukungan protokol IPv6 dan Internet Content Adaptation Protocol (ICAP).
Squid pada awalnya dikembangkan oleh Duane Wessels sebagai "Harvest object cache", yang merupakan bagian dari proyek Harvest yang dikembangkan di University of Colorado at Boulder. Pekerjaan selanjutnya dilakukan hingga selesai di University of California, San Diego dan didanai melalui National Science Foundation. Squid kini hampir secara eksklusif dikembangkan dengan cara usaha sukarela.
Squid umumnya didesain untuk berjalan di atas sistem operasi mirip UNIX, meski Squid juga bisa berjalan di atas sistem operasi Windows. Karena dirilis di bawah lisensi GNU General Public License, maka Squid merupakan perangkat lunak bebas.
Web Proxy
Caching merupakan sebuah cara untuk menyimpan objek-objek Internet yang diminta (seperti halnya data halaman web) yang bisa diakses melalui HTTP, FTP dan Gopher di dalam sebuah sistem yang lebih dekat dengan situs yang memintanya. Beberapa penjelajah web dapat menggunakan cache Squid lokal untuk sebagai server proxy HTTP, sehingga dapat mengurangi waktu akses dan juga tentu saja konsumsi bandwidth. Hal ini sering berguna bagi para penyedia layanan Internet untuk meningkatkan kecepatan kepada para pelanggannya, dan LAN yang membagi saluran Internet. Karena memang bentuknya sebagai proxy (ia berlaku sebagaimana layaknya klien, sesuai dengan permintaan klien), web cache bisa menyediakan anonimitas dan keamanan. Tapi, web cache juga bisa menjadi masalah yang signifikan bila melihat masalah privasi, karena memang ia dapat mencatat banyak data, termasuk URL yang diminta oleh klien, kapan hal itu terjadi, nama dan versi penjelajah web yang digunakan klien serta sistem operasinya, dan dari mana ia mengakses situs itu.
Selanjutnya, sebuah program klien (sebagai contoh adalah penjelajah web) bisa menentukan secara ekplisit proxy server yang digunakan bila memang hendak menggunakan proxy (umumnya bagi para pelanggan ISP) atau bisa juga menggunakan proxy tanpa konfigurasi ekstra, yang sering disebut sebagai "Transparent Caching", di mana semua permintaan HTTP ke jaringan luar akan diolah oleh proxy server dan semua respons disimpan di dalam cache. Kasus kedua umumnya dilakukan di dalam perusahaan dan korporasi (semua klien berada di dalam LAN yang sama) dan sering memiliki masalah privasi yang disebutkan di atas.
Squid memiliki banyak fitur yang bisa membantu melakukan koneksi secara anonim, seperti memodifikasi atau mematikan beberapa field header tertentu dalam sebuah permintaan HTTP yang diajukan oleh klien. Saat itu terpenuhi, apa yang akan dilakukan oleh Squid adalah tergantung orang yang menangani komputer yang menjalankan Squid. Orang yang meminta halaman web melalui sebuah jaringan yang secara transparan yang menggunakan biasanya tidak mengetahui bahwa informasi semua permintaan HTTP yang mereka ajukan dicatat oleh Squid.
Lusca
Sama seperti Squid, hanya saja Lusca merupakan cabang dari squid-2 development tree. Proyek Lusca bertujuan untuk memperbaiki kekurangan dalam basis kode squid-2, sementara tetap mempertahankan fungsi Squid-2 dan stabilitasnya. Proyek ini menyediakan jalur migrasi untuk pengguna squid-2 ke basis kode aktif, yang dikembangkan oleh pengembang dan penggunanya, perangkat lunak yang stabil dan disarankan untuk menyebarkannya.
Mengapa Menggunakan Lusca?
Seperti pendahulunya, Lusca mendukung mayoritas HTTP/1.1 HTTP/1.0 dan protokol dan caching konstruksi termasuk ETag / Varian entitas. Antara lain, mendukung HTTP balancing konten beban, kegagalan, cerdas permintaan / jawaban routing, memori kinerja tinggi dan disk caching, sistem kontrol akses terlalu fleksibel, dukungan untuk kedua kinerja tinggi maju dan mundur mode proxy. Hal ini mendukung berbagai protokol clustering, termasuk ICPv2,, ICPv3 Carp dan HTCP baik untuk clustering dan kontrol. Lusca mendukung Cisco intersepsi WCCPv2 di kedua perangkat lunak dan perangkat keras forwarding mode.
Pengguna, Administrator dan Pengembang sama-sama diundang untuk berpartisipasi dalam komunitas kecil tapi semakin banyak pengguna yang ingin terus menggunakan dipahami dengan baik, web proxy stabil / platform Cache tetapi membutuhkan sesuatu dengan kinerja yang lebih, fitur dan skalabilitas.
Lusca terus meliputi perbaikan dan perkembangan dari proyek squid mana yang tepat bersama daftar sendiri tumbuh perbaikan.
Tahap Penginstallan
- Topologi yang saya gunakan seperti dibawah ini.
IP Internet : xxx.xxx.xxx.xxx
IP Proxy : 192.168.3.2
IP Client 1 : 10.10.8.0/22
IP Client 2 : 192.168.4.0/24
IP Client 3 : 192.168.5.0/24
IP Client 4 : 192.168.6.0/24 - Pastikan Ubuntu Server sudah bisa ping ke gateway, client, dan internet.
- Masuk sebagai root.
$ sudo su
- Lakukan Update terlebih dahulu.
# apt-get update
- Lakukan penginstallan Squid dan kawan-kawan.
# apt-get install apache2 php5 squid squidclient squid-cgi gcc build-essential sharutils ccze libzip-dev automake1.9 libfile-readbackwards-perl -y
- Download paket LUSCA nya.
# wget https://dl.dropboxusercontent.com/s/rj083vnq9sc3aye/LUSCA_HEAD-r14809-patch.tar.bz2
Mirror# wget http://backcode.googlecode.com/files/LUSCA_HEAD-r14809-patch.tar.bz2
- Setelah selesai lakukan ekstrak.
# tar -xvjf LUSCA_HEAD-r14809-patch.tar.bz2
- Masuk ke tahap pengkonfigurasian. Sebelumnya kita harus tau kode CFLAG dari tipe prosessor yang akan di pasang Lusca dengan cara lihat CPU info.
# cat /proc/cpuinfo
Amati bagian yang seperti ini.
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @1.80GHz
Setelah mengetahui tipe processor cari CFLAG dari link berikut: Link1 dan Link2 khusus intel XEON tidak menutup kemungkinan bisa mencari di mesin pencari.
maka akan mendapatkan kode CFLAG sebagai berikut:
CHOST="i686-pc-linux-gnu" CFLAGS="-march=atom -O2 -fomit-frame-pointer -pipe" CXXFLAGS="${CFLAGS}"
Copy kemudian simpan sementara di text editor dan ditambahkan
./configure -prefix=/usr -exec-prefix=/usr -bindir=/usr/sbin -sbindir=/usr/sbin -libexecdir=/usr/lib/squid -sysconfdir=/etc/squid -localstatedir=/var/spool/squid -datadir=/usr/share/squid --enable-gnuregex --enable-async-io=24 --with-aufs-threads=24 --with-pthreads --with-aio --with-dl --enable-storeio=aufs,null --enable-removal-policies=heap --enable-icmp --enable-delay-pools --disable-wccp --enable-snmp --enable-cache-digests --enable-default-err-language=English --enable-err-languages=English --enable-linux-netfilter --disable-ident-lookups --with-maxfd=65535 --enable-follow-x-forwarded-for --enable-large-cache-files --with-large-files --enable-referer-log
Sehingga menjadi
CHOST="i686-pc-linux-gnu" CFLAGS="-march=atom -O2 -fomit-frame-pointer -pipe" CXXFLAGS="${CFLAGS}" ./configure -prefix=/usr -exec-prefix=/usr -bindir=/usr/sbin -sbindir=/usr/sbin -libexecdir=/usr/lib/squid -sysconfdir=/etc/squid -localstatedir=/var/spool/squid -datadir=/usr/share/squid --enable-gnuregex --enable-async-io=24 --with-aufs-threads=24 --with-pthreads --with-aio --with-dl --enable-storeio=aufs,null --enable-removal-policies=heap --enable-icmp --enable-delay-pools --disable-wccp --enable-snmp --enable-cache-digests --enable-default-err-language=English --enable-err-languages=English --enable-linux-netfilter --disable-ident-lookups --with-maxfd=65535 --enable-follow-x-forwarded-for --enable-large-cache-files --with-large-files --enable-referer-log - Pindah ke directory LUSCA dilanjut Compile LUSC
# cd LUSCA_HEAD-r14809
# make clean
# CHOST="i686-pc-linux-gnu"CFLAGS="-march=atom -O2 -fomit-frame-pointer -pipe"CXXFLAGS="${CFLAGS}"./configure -prefix=/usr -exec-prefix=/usr -bindir=/usr/sbin -sbindir=/usr/sbin -libexecdir=/usr/lib/squid -sysconfdir=/etc/squid -localstatedir=/var/spool/squid -datadir=/usr/share/squid --enable-gnuregex --enable-async-io=24 --with-aufs-threads=24 --with-pthreads --with-aio --with-dl --enable-storeio=aufs,null --enable-removal-policies=heap --enable-icmp --enable-delay-pools --disable-wccp --enable-snmp --enable-cache-digests --enable-default-err-language=English --enable-err-languages=English --enable-linux-netfilter --disable-ident-lookups --with-maxfd=65535 --enable-follow-x-forwarded-for --enable-large-cache-files --with-large-files --enable-referer-log
# make
# make install - Buat directory proxy untuk cache nya, dan dilanjut merubah hak akses dari directory tersebut menjadi hak akses proxy.
# mkdir /proxy
# chown -R proxy:proxy /proxy
# chmod -R 777 /proxy - Buat directory penyimpanan Log cache nya, dan dilanjut merubah hak akses dari directory tersebut menjadi hak akses proxy.
# mkdir /var/log/squid
# chown -R proxy:proxy /var/log/squid - Download konfigurasi squid. Namun konfigurasi ini hanya HTTP saja yang bisa ter cache, untuk yang lain bisa mencari konfigurasi sendiri.
# wget https://dl.dropboxusercontent.com/s/wp4qv6yh80z0b62/fileconfig.tar.gz
Mirror# wget https://dl.dropboxusercontent.com/u/64064946/fileconfig.tar.gz
- Ekstrak dan copykan file konfigurasi tersebut ke dalam file /etc/squid
# tar -xvf fileconfig.tar.gz
# cp fileconf/* /etc/squid - Beri hak akses dan eksekusi semua file berekstensi .pl
# chmod 0755 /etc/squid/*.pl
- Lakukan konfigurasi sesuai topologi.
# nano /etc/squid/acl.conf
cari baris acl localnet src 192.168.1.0/24. Lalu ganti bagian 192.168.5.0/24 dan tambahkan dibawahnya IP yang dapat berhubungan dengan proxy, sebagai contoh :
acl localnet src 10.10.8.0/22
acl localnet src 192.168.4.0/24
acl localnet src 192.168.5.0/24
acl localnet src 192.168.6.0/24
sesuai dengan topologi yang anda gunakan. Jika sudah simpan dengan menekan tombol CTRL+ X dilanjut tombol Y kemudian ENTER . - Lakukan konfigurasi untuk merubah directory cache proxy
# nano /etc/squid/squid.conf
Cari bagian cache_dir aufs /proxy 16000 37 256 , lalu ganti bagian /proxy menjadi directory disk cache sesuai tempat cache tersimpan.
angka 16000 (satuannya megabyte) merupakan besaran penyimpanan cache. untuk normalnya ukuran cache sebesar 80% dari total hardisk
Angka 37 diperoleh dari rumus : ukuran 80% disk cache dalam satuan byte/13/256/256 X 2.
Kira-kira cara menghitungnya seperti ini : 16000000/13/256/256 X 2 = 37.5. Dibulatkan saja menjadi 37. - Lakukan konfigurasi untuk merubah RAM
# nano /etc/squid/tune.conf
Cari bagian ipcache_size 4096 lalu ganti angka 4096 dengan 2X ukuran RAM dalam satuan Megabyte. Sebagai contoh, tertulis 4096. karena hasil dari 2 X ukuran ram yaitu 2048.
Setelah itu cari lagi bagian fqdncache_size 2048 lalu ganti angka 2048 dengan ukuran RAM dalam satuan Megabyte - Hentikan service Squid3 pada server agar tidak terjadi bentrok dengan squid lusca.
# service squid3 stop
- Lalu ketikkan perintah
# squid -f /etc/squid/squid.conf -z
- Jalankan Squid
# squid -NDd1 &
- Buat autorun pada squid apabila server restart bisa jalan dengan otomatis
# nano /etc/init.d/squid
Copykan script dibawah ini#! /bin/sh
Jika sudah simpan dengan menekan tombol CTRL + X dilanjut tombol Y kemudian ENTER.
#
# squid Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid.rc 2.20 01-Oct-2001 miquels@cistron.nl
#
### BEGIN INIT INFO
# Provides: squid
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Squid HTTP Proxy
### END INIT INFO
# suffield: jhealy: All local modifications commented with "suffield"
NAME=squid
DAEMON=/usr/sbin/squid
LIB=/usr/lib/squid
PIDFILE=/var/run/$NAME.pid
# suffield: jhealy: added -F to wait for full rebuild before serving requests
SQUID_ARGS="-D -sYCF"
[ ! -f /etc/default/squid ] || . /etc/default/squid
. /lib/lsb/init-functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin
[ -x $DAEMON ] || exit 0
grepconf () {
w=" " # space tab
sq=/etc/squid/squid.conf
# sed is cool.
res=`sed -ne
s/^$1["$w"]+([^"$w"]+).*$/1/p;
t end;
d;
:end q < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
grepconf2 () {
w=" " # space tab
sq=/etc/squid/$NAME.conf
# sed is cool.
res=`sed -ne
s/^$1["$w"]+[^"$w"]+["$w"]+([^"$w"]+).*$/1/p;
t end;
d;
:end q < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
#
# Try to increase the # of filedescriptors we can open.
#
maxfds () {
[ -n "$SQUID_MAXFD" ] || return
[ -f /proc/sys/fs/file-max ] || return 0
[ $SQUID_MAXFD -le 4096 ] || SQUID_MAXFD=4096
global_file_max=`cat /proc/sys/fs/file-max`
minimal_file_max=$(($SQUID_MAXFD + 4096))
if [ "$global_file_max" -lt $minimal_file_max ]
then
echo $minimal_file_max > /proc/sys/fs/file-max
fi
ulimit -n $SQUID_MAXFD
}
start () {
cdr=`grepconf2 cache_dir /var/spool/$NAME`
case "$cdr" in
[0-9]*)
log_failure_msg "squid: squid.conf contains 2.2.5 syntax - not starting!"
log_end_msg 1
exit 1
;;
esac
#
# Create spool dirs if they dont exist.
#
if [ -d "$cdr" -a ! -d "$cdr/00" ]
then
log_warning_msg "Creating squid spool directory structure"
$DAEMON -z
fi
if [ "$CHUID" = "" ]; then
CHUID=root
fi
maxfds
umask 027
cd $cdr
start-stop-daemon --quiet --start
--pidfile $PIDFILE
--chuid $CHUID
--exec $DAEMON -- $SQUID_ARGS < /dev/null
return $?
}
stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon --stop --quiet --pidfile $PIDFILE --name squid
#
# Now we have to wait until squid has _really_ stopped.
#
sleep 2
if test -n "$PID" && kill -0 $PID 2>/dev/null
then
log_action_begin_msg " Waiting"
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 24 ]
then
log_action_end_msg 1
return 1
fi
sleep 5
log_action_cont_msg ""
done
log_action_end_msg 0
return 0
else
return 0
fi
}
case "$1" in
start)
log_daemon_msg "Starting Squid HTTP proxy" "squid"
if start ; then
log_end_msg $?
# suffield: jhealy: enable interception via tproxy
/usr/local/bin/squid-watcher start
else
log_end_msg $?
fi
;;
stop)
log_daemon_msg "Stopping Squid HTTP proxy" "squid"
# suffield: jhealy: disable interception via tproxy
/usr/local/bin/squid-watcher stop
if stop ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
reload|force-reload)
log_action_msg "Reloading Squid configuration files"
start-stop-daemon --stop --signal 1
--pidfile $PIDFILE --quiet --exec $DAEMON
log_action_end_msg 0
;;
restart)
log_daemon_msg "Restarting Squid HTTP proxy" "squid"
stop
if start ; then
log_end_msg $?
# suffield: jhealy: enable interception via tproxy
/usr/local/bin/squid-watcher start
else
log_end_msg $?
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
exit 3
;;
esac
exit 0
Mirror Link - Berikan hak akses dan buat file autorun
# chmod 755 /etc/init.d/squid
# update-rc.d squid defaults - Hentikan secara autostart squid3
# nano /etc/rc.local
- Isikan
service squid3 stop
- Konfigurasi MikroTik supaya client dipaksa untuk berbelok ke Proxy Squid. Ketikkan di terminal seperti di bawah ini:
ip firewall nat add action=dst-nat chain=dstnat comment=paksa-ke-proxy src-address=!192.168.3.2 disabled=no dst-port=80 protocol=tcp to-addresses=192.168.3.2 to-ports=3128
- Untuk memantau hasil cache bisa mengetikkan sintax di bawah ini di mesin server.
# tail -f /var/log/squid/access.log | ccze
- Dan hasilnya adalah seperti dibawah ini.
Available link for download