Transparent Proxy Menggunakan Squid dan IPTables

Disclaimer: Saya mohon maaf kalau tulisan ini menjurus ke arah teknis, dan mungkin amat sangat membosankan… :D

Squid merupakan aplikasi Proxy Server yang cukup tangguh dan dapat berjalan di platform UNIX maupun Windows. Kelebihan yang ditawarkan aplikasi ini adalah Delay Pools, Cache, Access Control List, dan lain sebagainya. Dan pada kali ini, saya akan membahas tentang cara Mengonfigurasi Transparent Proxy menggunakan Squid sebagai aplikasi proxy server.

Sebelumnya Apa itu Transparent Proxy? Transparent proxy adalah fasilitas dimana router/proxy akan melakukan forward port. Oke, kita ambil contoh seperti ini, hampir setiap proxy server mempunyai port sendiri yang dapat diatur oleh kita sendiri, contohnya 3128, tentunya setiap client yang terhubung ke proxy server harus melakukan konfigurasi port di mesin client itu sendiri. Akan terasa repot jika client yang terhubung itu banyak sekali, maka dari itu, Transparent akan melakukannya secara otomatis, dimana port 80(port standar WWW) akan di-redirect secara otomatis oleh transparent proxy tadi.

Lalu apa yang harus dilakukan pertama kali? Install Squid sebagai proxy servernya. Squid dapat di-download di situs resminya. Saya tidak akan membahas bagaimana cara menginstall Squid, karena cara instalasi berbeda di setiap platform. Pada kali ini penulis menggunakan Squid versi 2.6 STABLE 18 dengan sistem operasi Ubuntu Server 7.04.

Setelah instalasi selesai, sekarang buka file “squid.conf” file ini bisa ditemukan di folder /etc/squid (bisa berbeda, tergantung distro linux yang digunakan). Dan isi dengan script dibawah ini. Anda tentunya dengan bebas dapat memodifikasi script ini.

# Tentukan port yang akan digunakan, dan tambahkan tulisan transparent karena transparent proxy akan diaktifkan
http_port 3128 transparent

# Tentukan memory untuk cache yang akan digunakan, banyak yang bilang 2 kali lipat dari RAM router, tapi itu terserah anda.
cache_mem 100 MB

# Untuk ini sifatnya opsional, aktifkan script ini jika anda ingin mengaktifkan fungsi log.
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_log /var/log/squid/cache.log

# Untuk yang ini, pengaturan Access Control List, pada contoh kasus kali ini saya menggunakan 1 ethernet interface untuk Internet, dan 2 Ethernet Interface untuk jaringan LAN dan Wireless LAN.
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lokal src 172.22.0.0/255.255.0.0
acl hotspot src 192.168.0.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 5050 # YahooMessenger
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT
http_access allow manager
http_access allow localhost
http_access allow lokal
http_access allow hotspot
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
#http_access deny !lokal
icp_access allow localhost
icp_access allow lokal
icp_access allow hotspot
icp_access deny all
# Avoid caching cgi scripts
acl QUERY urlpath_regex cgi-bin
no_cache deny QUERY

# akses snmp, silahkan isikan string snmp community.
acl snmppublic snmp_community public
snmp_access allow snmppublic localhost
snmp_access deny all
#silahkan ganti visible hostname dengan domain yang dikehendaki dan
visible_hostname localhost.localdomain
cache_mgr [email protected]

# Isikan dengan DNS server yang diberikan ISP, jika DNS bersifat dynamic tidak perlu diisi.
dns_nameservers 202.46.82.97 202.46.81.88

Simpan file “squid.conf” diatas. Jika anda baru pertama kali menginstall squid, gunakan perintah berikut untuk membuat direktori cache dan swap.

[email protected]~$ squid -z

Setelah itu, aktifkan Squid dengan menggunakan perintah…

[email protected]~$ /etc/init.d/squid start

Jika tidak ada pesan error satupun, aplikasi squid sudah berjalan sebagaimana mestinya.

Membuat Transparent Proxy dengan IPTables

Nah, setelah squid berjalan, sekarang kita tinggal aktifkan fungsi redirect port menggunakan IPTables dengan mengetikkan perintah ini di shell.

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

Note: ganti alamat 192.168.0.0/24 dengan subnet yang akan digunakan pada jaringan LAN anda.

Berjalan? Terkadang bisa berjalan, tapi kalau masih tidak berfungsi Transparent Proxy-nya, ada 2 cara, buat DNS Server di mesin proxy itu sendiri dan redirect DNS Record dari ISP ke DNS Server lokal, atau gunakan NAT untuk me-redirect DNS Record dari ISP dengan cara.

iptables –table nat -A POSTROUTING -o eth0 -j MASQUERADE

Note: eth0 pada contoh diatas dapat diganti dan diarahkan ke interface yang terhubung langsung ke jaringan internet.

Simpan kedua perintah tersebut di file /etc/rc.local agar tidak perlu mengetikkan perintah ini setiap kali mesin di restart.

Selamat Mencoba :)

31 thoughts on “Transparent Proxy Menggunakan Squid dan IPTables”

  1. maap lagi bingung ni, mau buat transparant kok gagal
    bgm seting iptables pada kondisi ada 3 nic dalam komputer(gateway), 2 nic mengarah ke modem (eth1&eth2) dan 1 megarah ke lan(eth0).
    o..iya saya memakai shorewall untuk load balancer dan distro yang saya pakai centos 5

  2. Waaaaah ini yang saya cari2x mas…. banyak tutor tentang prox squid ubuntu tp tidak memberikan penjelasan mengenai proxy tersebut…. Akhirnya saya mulai budeng sedikit setelah membaca artikel di blog anda ini… terima kasih sekali…. maklum newbie… numpang copy artikelnya mas mau di pampang di blog saya… tp tetep sumbernya http://anggiemaya.net/
    Biar kagak lupa.

  3. Mas Anggi sy mau memasang squid di mesin ubuntu 8.04 desktop (fungsi sebagai server) dan clientnya ada 5 dengan distro yang sama.

    dari tutorial diatas seandainya komputer kita cuma memiliki 2 lan satu eth0 yang menuju ke internet dengan ip 192.168.1.2 dan gatewaynya 192.168.1.1 sedangkan eth1 yang ke lokal dengan ip 192.168.0.1 nah untuk klient 1 ipnya 192.168.0.2.

    pertanyaan saya dari tutorial diatas bagian mana yang harus saya hapus dan edit.

    terima kasih

  4. oh iya, klo xp kan ada alternative jg buat squid. overall untuk cachenya lumayan
    cmn yg jd pertanyaan sy skrg ini. apa squid pada xp bisa transparent ga mas??
    coz yg sy dengar klo squid over xp untuk transparent proxynya doesn’t work.
    thx,

  5. Transparent Proxy Menggunakan Squid dan IPTables | I'm Anggie I was recommended this website by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my trouble. You’re incredible! Thanks! your article about Transparent Proxy Menggunakan Squid dan IPTables | I'm AnggieBest Regards Yoder

  6. I simply fill my own baby bottles together with normal water and then add a number of granules of granular pool area swimming pool water — leave on an hr, go up along with you’re able to package

  7. Kalau ngasih tutorial yang bener .. cobain dulu dong itu perintah iptables .. jangan main posting aja .. dodol luh .. !

  8. *galak mode on*
    Buat dua komentar di atas sayah
    yang pertama *ehem*
    Sayah udah coba semua perintah iptables, dan jalan dengan normal se normal-normalnya makanya sayah posting disinih, cobak sampeyan yang komentarnya ajah anonim udah coba sendiri belon? ;)

    Yang kedua
    Ga jelas? Ilmu sampeyan udah sampe belom? Artikel ini saya buat waktu masih kelas 1 TKJ looh, better daripada sampeyan yang isi postingnya donlot sopwear bajakan semua :D

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.