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
  1. 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
  2. Pastikan Ubuntu Server sudah bisa ping ke gateway, client, dan internet.
  3. Masuk sebagai root.
    $ sudo su
  4. Lakukan Update terlebih dahulu.
    # apt-get update
  5.  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
  6. 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
  7. Setelah selesai lakukan ekstrak.
    # tar -xvjf LUSCA_HEAD-r14809-patch.tar.bz2
  8. 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
  9.  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
  10.  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
  11. 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
  12. 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
  13. Ekstrak dan copykan file konfigurasi tersebut ke dalam file /etc/squid
    # tar -xvf fileconfig.tar.gz
    # cp fileconf/* /etc/squid
  14. Beri hak akses dan eksekusi semua file berekstensi .pl
    # chmod 0755 /etc/squid/*.pl
  15. 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.
  16. 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.
  17. 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
  18. Hentikan service Squid3 pada server agar tidak terjadi bentrok dengan squid lusca.
    # service squid3 stop
  19. Lalu ketikkan perintah
    # squid -f /etc/squid/squid.conf -z
  20. Jalankan Squid
    # squid -NDd1 &
  21. Buat autorun pada squid apabila server restart bisa jalan dengan otomatis
    # nano /etc/init.d/squid
    Copykan script dibawah ini
    #! /bin/sh
    #
    # 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 don't 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
    
    Jika sudah simpan dengan menekan tombol CTRL + X dilanjut tombol Y kemudian ENTER.
    Mirror Link
  22. Berikan hak akses dan buat file autorun
    # chmod 755 /etc/init.d/squid
    # update-rc.d squid defaults
  23. Hentikan secara autostart squid3
    # nano /etc/rc.local
  24. Isikan
    service squid3 stop
  25. 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
  26. Untuk memantau hasil cache bisa mengetikkan sintax di bawah ini di mesin server.
    # tail -f /var/log/squid/access.log | ccze
  27. Dan hasilnya adalah seperti dibawah ini.
Sumber : Pengingat Dasar
Artikel Terkait

3 komentar:

  1. Mas knp pas perintah squid -NDd1 & muncul eror, Fatal, Terminated abnormally,
    squid -z eror Failed to make swap directory /usr/local/squid/var/cache: (13) Permission denied?

    BalasHapus

Silahkan komentar dibawah ini, dan gunakan tata bahasa yang baik dan benar. Terima Kasih