Transparent Proxy dengan Squid

12 Oktober 2006

Rasanya tidak perlu lagi dijelaskan fungsi maupun kegunaan Squid karena sudah banyak situs-situs lain yang menguraikannya secara gamblang, baik berbahasa Indonesia maupun bahasa asing.Artikel ini terfokus secara teknisnya saja, bagaimana menginstalasi Squid dan mengkonfigurasi Squid sebagai transparent proxy melalui firewall yang sudah ada di server. Berdasarkan pengalaman, metode instalasi dan konfigurasi yang saya gunakan dapat berjalan dengan baik di server dengan sistem operasi Linux maupun BSD.

Karena Squid membutuhkan memory yang cukup besar, maka untuk kebutuhan minimal memory untuk saat ini adalah 256MB. Di samping itu, Squid juga memerlukan tipe penyimpanan (disk) dengan kecepatan tinggi semacam SCSI, namun sebenarnya tipe hard disk IDE pun saat ini juga sudah mempunyai kecepatan tinggi, bahkan ada yang sudah mencapai 7200 rpm, mungkin 10000 rpm.

Di mesin dengan FreeBSD maupun OpenBSD, sebelum menginstalasi Squid sebaiknya me-recompile kernel untuk dukungan diskd dengan options tambahan berikut:

options SYSVMSG # SYSV-style message queues
options MSGMNB=32768 # jumlah maksimal byte yang disimpan di queue
options MSGMNI=164 # jumlah message queue identifiers
options MSGSEG=8196 # jumlah message segments per queue
options MSGSSZ=512 # besarnya sebuah message segment
options MSGTQL=2048 # jumlah maksimal messages pada system.

Pembahasan lebih lengkap options di atas dapat di baca di Squid FAQ

1. Download dan Instalasi Squid

Source Squid dapat diambil secara gratis di http://www.squid-cache.org. Versi stable saat artikel ini ditulis adalah squid-2.6.STABLE4

  • Download dan simpan, misalnya di /home/rp25rb.
  • Buat direktori untuk menyimpan cache dan user owner squid:
    squid# mkdir /cache1
    squid# useradd -d /cache1 -r -s /dev/null squid >/dev/null 2>&1
    Untuk penamaan direktori penyimpanan cache ini bisa apa saja, dan sebaiknya dibuat pada saat proses instalasi sistem dengan membagikan partisi secara terpisah dari filesystem. Umumnya saya membuat lebih dari satu partisi untuk cache tersebut.
  • Ubah kepemilikan dir cache yang sudah kita buat ke squid user yang baru kita buat sebelumnya.
    squid# chown -R squid:squid /cache1
    Gunakan juga command di atas untuk mengubah kepemilikan bila mempunyai lebih dari satu cache directory.
  • Decompress source file:
    squid# tar -jxf squid-2.6.STABLE4.tar.bz2
    squid# cd squid-2.6.STABLE4
  • Anda harus mengubah beberapa baris source code yang terdapat pada file src/Makefile.in untuk menyesuaikan direktori log dan cache pada saat kompilasi berikutnya. Baris-baris yang harus diubah adalah:
    DEFAULT_LOG_PREFIX = $(localstatedir)/log/squid
    DEFAULT_CACHE_LOG = $(DEFAULT_LOG_PREFIX)/cache.log
    DEFAULT_ACCESS_LOG = $(DEFAULT_LOG_PREFIX)/access.log
    DEFAULT_STORE_LOG = $(DEFAULT_LOG_PREFIX)/store.log
    DEFAULT_PID_FILE = $(DEFAULT_LOG_PREFIX)/squid.pid
    DEFAULT_SWAP_DIR = /cache1
  • Langkah berikutnya adalah meng-compile source:
    squid# ./configure \
    –prefix=/usr/local/squid \
    –enable-gnuregex \
    –enable-async-io=24 \
    –with-aufs-threads=24 \
    –with-pthreads \
    –with-aio \
    –with-dl \
    –enable-storeio=aufs,diskd \
    –enable-removal-policies=heap \
    –enable-icmp \
    –enable-delay-pools \
    –disable-wccp \
    –enable-snmp \
    –enable-cache-digests \
    –enable-default-err-languages=English \
    –enable-err-languages=English \
    –enable-linux-netfilter \
    –disable-ident-lookups \
    –disable-hostname-checks \
    –enable-underscores

    Keterangan mengenai kegunaan options di atas selengkapnya dapat dibaca di Squid FAQ.
    squid# make && make install
  • Buat direktori log, misalnya di /var/log/squid:
    squid# mkdir -p /var/log/squid
  • Ganti kepemilikan direktori log ke squid:
    squid# chown squid:squid /var/log/squid
  • Ubah permission direktori log dan cache, agar dapat ditulisi oleh user squid.
    squid# chmod 750 /cache1
    Ubah juga permission di semua direktori cache yang lain, apabila lebih dari satu direktori cache.
    squid# chmod 750 /var/log/squid

2. Konfigurasi Squid

Sampai pada langkah di atas, proses instalasi Squid sudah berhasil jika sebelumnya tidak terdapat kesalahan. Untuk membuat Squid dapat berfungsi secara optimal, kita harus mengedit file konfigurasi yang disediakan oleh Squid, umumnya file konfigurasi Squid adalah squid.conf. Bila anda butuh bantuan mengenai optimasi Squid ini, silakan kunjungi Forum Komunitas Linux Indonesia. Teman-teman di forum tersebut akan senang membantu permasalahan anda.

Tutorial ini tidak akan membahas baris per baris keterangan yang terdapat di file squid.conf. Contoh squid.conf yang biasa saya gunakan dapat anda akses di arsip File Konfigurasi Squid

3. Membuat Swap dan Menjalankan Squid

Gunakan command berikut untuk membuat swap:

squid# /usr/local/squid/sbin/squid -z

Bila tidak ada kesalahan pada file konfigurasi, lanjutkan dengan mengaktifkan daemon Squid dengan command:

squid# /usr/local/squid/sbin/squid -D

Selamat, anda sudah berhasil menginstalasi dan mengkonfigurasi Squid sebagai proxy server. Langkah selanjutnya adalah mengkonfigurasi rule firewall untuk memungsikan squid sebagai transparent proxy.

4. Transparent Proxy dengan iptables, pf, dan ipfilter

Bila menggunakan iptables untuk konfigurasi transparent proxy, sebaiknya pada saat kompilasi Squid menyertakan opsi –enable-linux-netfilter.

Pengguna iptables, jalankan command berikut:

squid# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -d 0/0 -p tcp –dport 80 -j REDIRECT –to-ports 3128

squid# iptables-save > /etc/sysconfig/iptables

Pada kebanyakan distro Linux, command kedua berfungsi untuk menyimpan command iptables sebelumnya agar saat booting, konfigurasi transparent proxy tetap aktif. Bagi pengguna Linux yang tidak menyimpan file konfigurasi firewall di direktori /etc/sysconfig silakan untuk menyesuaikan sendiri.

Bagaimana mengaktifkan transparent proxy di Platform BSD dengan menggunakan PF dan ipfilter?

Sebelum menggunakan PF dan IPF sebagai firewall, anda harus mengkompilasi ulang kernel agar mengaktifkan salah satu modul tersebut.

Bila menggunakan IPF, options yang harus ditambahkan adalah:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_DEFAULT_TO_ACCEPT

Sedangkan options untuk PF adalah:

device pf
device pflog
device pfsync

Catatan: Dari kedua firewall tersebut, pakai salah satu yang sesuai selera Anda. Saya prefer ke PF, maka saya aktifkan modul kernel untuk PF saja.

Agar PF diload saat booting, edit file /etc/rc.conf dan tambahkan baris berikut:

pf_enable=”YES”
pf_rules=”/etc/pf.conf”
pf_flags=””
pflog_enable=”YES”
pflog_logfile=”/var/log/pflog”
pflog_flags=””

Selanjutnya edit file /etc/pf.conf dan tambahkan baris berikut:

# saya asumsikan rl1 adalah interface ke LAN anda.
rdr on rl1 proto tcp from 192.168.1.0/24 to any port www -> 192.168.1.100 port 3128

Lalu aktifkan PF dengan command:

squid# pfctl -e
squid# pfctl -N -f /etc/pf.conf

Bila anda ingin menggunakan ipfilter, anda harus menambahkan baris-baris berikut ke dalam file /etc/rc.conf:

ipfilter_enable=”YES”
ipnat_enable=”YES”
ipmon_enable=”YES”
ipfs_enable=”YES”

Kemudian edit file /etc/ipnat.rules dan tambahkan baris berikut:

# saya asumsikan rl1 adalah interface ke LAN anda.
rdr rl1 0/0 port 80 -> 127.0.0.1 port 3128 tcp

5. Done

Demikian tutorial sederhana cara menginstal dan mengkonfigurasi Squid sebagai transparent proxy.

21 Responses to “Transparent Proxy dengan Squid”

  1. wadehel Says:

    Bahas POLIPO dong, sebenarnya itu layak pakai tidak sih?

  2. Asmuri Anwar Says:

    Dari informasi di webnya Polipo, dijelaskan Polipo adalah:

    “Polipo is a small and fast caching web proxy (a web cache, an HTTP proxy, a proxy server) designed to be used by one person or a small group of people. I like to think that is similar in spirit to WWWOFFLE, but the implementation techniques are more like the ones ones used by Squid.”

    Jujur saja, saya baru tahu dan dengar namanya, namun dari info di atas, implementasinya tidak jauh berbeda dengan Squid. Selama ini saya pakai Squid utk webcache karena performancenya dan sudah teruji pada jaringan besar dan load tinggi.

    Tapi dalam kesempatan lain, saya akan mencoba menguji kompabilitas dan performancenya. Kalau dilihat dari cara instalasi dan konfigurasinya sama mudahnya dengan Squid, tapi Polipo ini sepertinya hanya efektif bila dipergunakan oleh satu orang atau network yang kecil saja, semisal 5-10 client.

    Salam,

  3. akbar Says:

    makasih mas artikelnya dah membantu saya utk ngoprek server aku .,,,,,,

  4. rp25rb Says:

    Sama-sama dan met ngoprek mas 🙂

  5. juntriaji Says:

    Om…
    tentang platform mesin untuk squid ini, sekedar tips/sharing sekaligus bertanya
    1. meggunakan proccessor pentium 4 2,4G
    2. menggunakan AMD Athlon XP +3200 (sekitar 2,2G)
    lebih kenceng AMD…kenapa ya?
    3. pentium 4 2.8 GHz HT
    masih kencengan AMD sebelumnya
    adakah pendapat?
    Note: Harddisk/Memori sama
    yg beda : Mainboard+prosesor

    Salam,
    Juntriaji

  6. Ramadhian Says:

    Kalo mo nge-check Squid nya sudah support delay pool gimana caranya ?

  7. rp25rb Says:

    Buat juntriaji:

    Maaf telat ngebalesnya, pak. Mengenai perbandingan antara AMD dan Intel silakan baca di http://www.putera.com/tanya/t22772.html.

    Buat Ramadhian:

    Untuk mengecek squid support delay-pool atau tidak gunakan command “squid -v” dan lihat options-options apakah ada baris –enable-delay-pools.

  8. godril Says:

    maaf, sekedar bertanya.. untuk enable pf di kernel seperti yang ditulis di atas bukannya itu untuk ipf ya?

    kalo ndak salah untuk pf:

    device pf
    device pflog
    device pfsync

    sedangkan IPFIREWALL adalah untuk ipf. Atau saya yang salah baca?

    mohon pencerahan..

    terimakasih n salam kenal

  9. rp25rb Says:

    @godril:
    Wah salah saya pak godril :D, harusnya untuk PF dikasih opsi seperti yang pak godril kasih di atas. Maklum pengen cepat2 kelar nulisnya, hehehe…

  10. csablotron Says:

    Mas Anwar,
    Saya coba install proxy, dengan menggunakan squid stable 10 di FreeBSD 5.5. Alhamdulillah dari config yang mas berikan berjalan sukses, tapi masih ada yang kurang. ALTQ nya lom di idupin di kernel, jadi tambahin “options ALT” di kernel, lalu di compile ulang… saya menggunakan pf.

    Thanks banget Mas Anwar…

  11. rp25rb Says:

    options ALTQ hanya diperlukan bila ingin mengaktifkan bandwidth management. Defaultnya memang tidak disertakan dalam kernelnya.

    Senang bisa membantu 🙂

  12. yunan Says:

    mas Asmuri…gmn klo koneksinya dibuat secara langsung lagi(tadinya dibelokkan ke squid)?? konfigurasi iptables-nya gmn…soalnya konfigurasi squid saya suka bermasalah,dan klo udah bermasalah jadi gak bisa browsing…thanks b4….

  13. rp25rb Says:

    tinggal ketik ini aja mas,

    iptables -t nat -D PREROUTING -s LAN-IP/24 -d 0/0 -p tcp –dport 80 -j REDIRECT –to-ports 3128

  14. nana Says:

    mas,kalo ip LAN qt ada 2 kelas apa mesti mengetikkan perintah iptablesnya sebanyak 2 kali juga??
    soalnya saya ikuti langkah diatas LAN saya masih ga bisa belok ke squid juga mas…
    thank’s ilmunya mas

  15. rp25rb Says:

    @nana,
    yup betul, harus diketik 2x

  16. Radian Says:

    mas,kl saya mau bikin squid-proxy ini supaya support multi user password autenticate gmn? Saya mau kaseh akses terbatas utk bbrp level user aja utk proxy ini. bbrp user dgn password berbeda? perlu module laen?

  17. Wijaya Says:

    Mau tanya mas untuk ngeblok mac address client dengan pf bagaimana caranya ya?

    Terima Kasih
    Wijaya

  18. daniel k Says:

    Assalamu’alaikum
    Selamat sore Mas,.. ,maaf.. ada yg mo ditanyain nech ..
    Klo seandainya user sy ingin kirim or terima email pake outlook or outlook express, itu bagaimana mas ?

    Terima kasih sebelumnya
    Wassalam

  19. NAGABONAR2008 Says:

    Mas mo tny nih….server warnet saya pake Mandriva2006 utk Proxy server aq pake SQUID 2.5 Stable10….aq installnya dr CPanel-nya mandriva.yg jd mslh…kok di folder cache-nya tdk mencatat smua situs yg di buka client,hny tertentu aja….yahoo,google,bekas.com,friendster,gak ke simpan di cache.gmn dong….smua browser udah aq arahkan ke server proxy dg port 3128,trus di setting LAN pd DEFAULT GATEWAY udah aq isi dg IP server proxy jg.apakah krn Default Gatewaynya aq isi IP server yaa,khan itu lwt jalur NAT bukan proxy…jd gak tercatat di cache-ya…apa bnr begitu….klo Default Gateway di client tdk di isi maka MIRC n YM gak jln,klo diarahkan lwt proxy jg gak jln tuh YM n MIRC.
    Jdnya SQUID-ku tdk PowerFull….aq compare dg CCPROXY masih kalah jauh speednya.mgkn krn CCProxy bekerja sempurna.gmn niihhh tolongin dong….SQUID-ku blm aq rubah2…aq pake standart config/bawaan asli settingan dr mandriva aja….khan itu dah cukup mumpunin utk sebuah Proxy.mohon pencerahannya.

  20. leon Says:

    Mas mo tanya,

    Itu PF satu mesin ga dengan squid ?
    Kalo beda, PF di mesin proxy perlu aku aktifin ga ?
    Terus kalo awalnya proxy belon aku compile sebagai transparan, apakah harus aku compile ulang (aku pake openbsd 4.2)

    Mohon petunjuk dan makasih sebelumnya

    salam,


  21. […] Says: October 28th, 2006 at 7:48 pm Bahas POLIPO dong, sebenarnya itu layak pakai tidak […]


Tinggalkan komentar