Transparent Proxy

Seperti telah kita ketahui bersama bahwa proxy mempunyai fungsi untuk menyimpan cache. Apabila sebuah LAN menggunakan proxy untuk terhubung ke internet, maka yang dilakukan oleh browser ketika user mengakses sebuah url yaitu mengambil request tersebut pada proxy server sedangkan jika tidak terdapat pada proxy server maka oleh proxy diambilkan langsung dari webserver. Kemudian request tersebut disimpan di cache proxy yang kemudian nanti jika client melakukan request yang sama akan di ambilkan dari cache tadi.

Nah intinya ialah tergantung dari browser. Kenapa dari browser? Karena setting proxy itu letaknya pada browser. Dengan melakukan konfigurasi pada browser maka client dapat dengan mudah mengubah IP address proxy. Apalagi jika di sebuah warnet, semua komputer di deepfreeze, maka dengan mudah orang bisa mengganti IP proxy karena hal tersebut dapat dilakukan tanpa restart komputer.

Namun dengan cara apa pertanyaan seperti berikut ini dapat di jawab?
Admin jaringan menghendaki semua komputer ketika terhubung ke internet mau atau tidak mau harus melewati proxy.
Sungguh tidak mengenakkan jika di satu komputer terdapat lebih dari satu macam browser dan kita harus setting IP proxy satu persatu.

Nah, untuk mengatasi hal tersebut ada satu cara yang dinamakan transparent proxy. Dengan transparent proxy kita memaksa setiap request ke port http di-redirect ke port proxy.

Kebutuhan
Linux dengan squid yang sudah terinstall. Port proxy 8080.
Iptables.
Program bernama transproxy (ftp://ftp.nlc.net.au/pub/unix/transproxy/). Sifat program ini optional.

Terdapat 2 metode dalam membuat transparan proxy yaitu tidak menggunakan program bantu seperti transproxy dan menggunakan transproxy tentunya.

Tidak menggunakan transproxy
Jika anda tidak menggunakan program bantu apapun, maka silahkan edit file squid.conf. Tambahkan baris berikut atau uncomment dari file tersebut.

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

kemudian di shell ketikkan

#echo 1 > /proc/sys/net/ipv4/ip_forward

#/sbin/iptables –t nat –A PREROUTING –i eth0 –p tcp –-dport 80 –j REDIRECT –-to-port 8080

Baris perintah terakhir di atas, request yang masuk ke port 80 akan di redirect ke port 8080. Kasus ini jika gateway dan proxy menjadi satu.

Menggunakan transproxy
Install transparent proxy

# tar zxvf transproxy_1.4.orig.tar.gz
transproxy-1.4/
transproxy-1.4/tproxy.c
transproxy-1.4/README
transproxy-1.4/Makefile
transproxy-1.4/TODO
transproxy-1.4/CHANGELOG
transproxy-1.4/tproxy.8
transproxy-1.4/COPYRIGHT
transproxy-1.4/acl.c
transproxy-1.4/acl.h
transproxy-1.4/tproxywatch
transproxy-1.4/tproxyrun

# cd transproxy-1.4/

#make

#make install

Jika sudah terinstall pastikan file inti dari transproxy yaitu tproxy,tproxyrun dan tproxywatch terletak di /usr/local/sbin.
Konfigurasi transproxy
Untuk konfigurasi berikut anda dapat menyimpannya dalam file *.sh dan mengeksekusinya pada awal linux booting. Misalkan disimpan dengan nama tproxy.sh.

#!/bin/sh
/usr/local/sbin/tproxy –s 81 –r nobody 192.168.0.1 8080

#echo 1 > /proc/sys/net/ipv4/ip_forward

#/sbin/iptables –t nat –A PREROUTING –i eth0 –p tcp –-dport 80 –j REDIRECT –-to-port 81

Baris kedua script di atas menyatakan bahwa transproxy bekerja pada prot 81 dan akan meneruskan request yang masuk langsung ke proxy server dengan IP address 192.168.0.1 port 8080 (IP address dari proxy server). Request yang masuk ke port 81 diperoleh dari baris perintah terakhir. Dimana setiap request yang masuk ke gateway di redirect (diteruskan) ke port 81.

Simpan file tproxy.sh ke direktori /usr/local/sbin/. Tambahkan juga chmod 700. kemudian untuk dapat dieksekusi setiap sistem di booting, buka file /etc/rc.local tambahkan:

/usr/local/sbin/tproxy.sh

Cek konfigurasi
# netstat -an | grep 81
tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN
# /sbin/iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp — anywhere anywhere tcp dpt:http redir ports 81

Nah dengan begini anda tidak perlu lagi susah-susah untuk mengeset IP address proxy pada masing-masing browser karena setiap request ke port 80 gateway akan di redirect ke port 81. Dengan cara ini client tidak tahu bahwa sebenarnya mau atau tidak mau setiap request dilayani ke proxy.

Artikel ini pernah dimuat di Majalah Infolinux Bulan Januari 2005.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: