Squid Cache, Tproxy, dan Mikrotik + IP Bright
December 25, 2007
Akhirnya, gw sampe juga ngoprek Transparant Proxy walau harus tanya sana sini, browsing itu ini, dan di dampingi sama teman yang udah biasa ngoprek ini. TProxy ini selesai juga dibuat, walau terkadang ada beberapa error. Coba lagi.. coba lagi.
Langsung aza deh share dengan temen2, langkah-langkahnya sebagai berikut :
1. Insatalasi Standart Linux, OS yang digunakan adalah Debian etch, Kernel 2.6.18-4 (Saya gunakan Debian 4)
Lakukan instalasi biasa (base), dapatkan ISO Debian Etch-netinstall di mirror-mirror lokal yang banyak terdapat, salah satunya. Banyak ko di Internet, tanya aza paman Google, salah satunya ini juga bisa :
http://ftp.softnet.tuc.gr/ftp/linux/debian-cd/4.0_r1/ia64/iso-cd/
Atur skema partisi HDD sesuai selera anda, berikut skema partisi saya;
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 14G 1.2G 12G 9% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 48K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sda2 19G 278M 19G 2% /cache1
/dev/sda3 19G 278M 19G 2% /cache2
/dev/sda6 24G 223M 22G 1% /home
2. Membuat IP brigde
Untuk membuat bridge saya pake Linux debian 2.6.18-4-alpha-generic, jagan lupa kalo pake linux dengan kernel 2.4 harus di patch duluw. Package yang diperluin adalah ebtables, iptables dan bridge-utils. Kalo gak mo susah2, tinggal pake apt-get :
debian:~# apt-get install ebtables bridge-utils
setelah diinstall, mari kita coba jalanin si ebtables :
debian:~# ebtables
ebtables v2.0.6 (November 2003)
….
Kayanya dah bisa tuh si ebtablesnya, sekarang kita konfigurasi buat bridge-nya. Jagan lupa, bridge memerlukan 2 atau lebih NIC yang terpasang di PC. Kita akan menghubungkan 2 segmen network dgn skema :
modem internet (192.168.1.1) ===[eth0] bridge [eth1]=== LAN (192.168.1.x)
Kita buat dulu interface buat si bridge :
debian:~# brctl addbr br0
trus kita buat si eth0 dan eth1 tidak memiliki IP address :
debian:~# ifconfig eth0 0.0.0.0 promisc up
debian:~# ifconfig eth1 0.0.0.0 promisc up
Walah, promisc apaan tuh? promiscuous adalah mode dimana NIC akan mendengarkan dan menerima semua jenis frame yang masuk kedalamnya. Hal ini penting karena si bridge perlu mendegarkan semua frame yang akan masuk. Setelah itu kita tambahin si eth0 dan eht1 ke interface br0 :
debian:~# brctl addif br0 eth0
debian:~# brctl addif br0 eth1
Mari kita UP si br0 :
debian:~# ip link set br0 up
Nah, lalu gimana kita ingin akses PC bridge ini secara remote? Untuk itu kita tambahin IP buat si br0, misalnya kita kasih aza IP seperti dibawah ini:
debian:~# ip addr add 192.168.1.254/24 brd + dev br0
Jangan lupa tambahin gateway buat si br0 biar gak bingung nyari “gerbang keluar” :
debian:~# route add default gw 192.168.1.1 dev br0
Jangan lupa juga enable kan ip_forwarding dan ip_nonlocal_bind dalam kernel.
#/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind=1
atau lakukan;
#echo 1 > /proc/sys/net/ipv4/ip_forward
#echo 1 > /proc/sys/ipv4/ip_nonlocal_bind
Nah sampai disini buat ip bright udah selesai, qta bisa lanjut ke tahapan selanjutnya.
3. Melakukan Patching Kernel cttproxy
Baca informasi untuk melakukan kompilasi kernel debian di howtoforge, saya menggunakan metoda pertama (Building A Kernel .deb Package) yang kurang lebih langkahnya sebagai berikut ;
Instal paket-paket yang diperlukan untuk kompilasi kernel;
#apt-get update
#apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Download source kernel, dalam hal ini tetap kernel yang sama, karena kompilasi kernel bukan untuk melakukan upgrade kernel;
#cd /usr/src/
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.4.tar.gz
#tar -xzvf linux-2.6.18.4.tar.gz
#ln -s linux-2.6.18.4 linux
Download dan Apply patch dari cttproxy
Keterangan mengenai tata cara melakukan patching ada di dalam paket cttproxy
#cd /usr/src/
#wget http://www.balabit.com/downloads/files/tproxy/obsolete/linux-2.6/cttproxy-2.6.18-2.0.6.tar.gz
#cd /usr/src/linux
for i in <pathtocttproxy>/patch_tree/0{1,2,3}*.patch; do cat $i | patch -p1; done
Lakukan kompilasi kernel, aktifkan conntrack, NAT dan TPROXY support (ada di dalam Netfilter Configuration)
#make clean && make mrproper
#cp /boot/config-`uname -r` ./.config
#make menuconfig
Anda akan masuk ke dalam menu kompilasi kernel, pilih Load an Alternate Configuration File dan pilih .config
![]()
![]()
Untuk mengaktifkan conntrack, NAT dan TPROXY support (ada di dalam Netfilter Configuration), pilih menu networking dan seterusnya seperti posisi di bawah ini, lalu aktifkan conntrack, NAT dan TPROXY support.
Posisi di menuconfig
-> Networking
—> Networking support
—–> Networking options
——-> Network packet filtering
———-> IP: Netfilter Configuration
Setelah selesai mengaktifkan, ketika keluar dari menuconfig, jawab Yes terhadap pertanyaan Do you wish to save your new kernel configuration?
Build Kernel
#make-kpkg clean
#fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers
Tunggu agak lama, (kalau kasus saya sekitar satu jam atau lebih)
Install Kernel baru
#cd /usr/src/
#ls -l<
akan terlihat kedua file berikut;
linux-headers-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
linux-image-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
lakukan instalasi file deb tersebut;
#dpkg -i linux-headers-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
#dpkg -i linux-image-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
konfigurasi GRUB bootloader di /boot/grub/menu.lst telah dimodifikasi secara otomatis, anda tinggal melakukan restart sistem, dan pilihan booting default menjadi kernel yang baru kita modifikasi.
#shutdown -r now
4. Melakukan patching userspace iptables TPROXY
Download source iptables dari situs ftp://ftp.netfilter.org/pub/iptables/iptables-1.3.6.tar.bz2, karena source iptables dari situs debian tidak bisa. (hasil uji coba…)
#cd /usr/src/
#wget ftp://ftp.netfilter.org/pub/iptables/iptables-1.3.6.tar.bz2
Ekstrak source iptables tersebut, lalu masuk dalam folder iptables-1.3.6
#tar -xjvf iptables-1.3.6.tar.bz2
patch iptables (informasi lengkap ada di README cttproxy)
#cd iptables-1.3.6/iptables
#cat /usr/src/cttproxy-2.6.18-2.0.6/iptables/iptables-1.3-cttproxy.diff | patch -p1
#chmod +x extensions/.tproxy-test
#make KERNELDIR=/usr/src/linux
buat paket debnya dan lakukan instalasi
#cd /usr/src/iptables-1.3.6.0debian1
#dpkg-buildpackage -b -rfakeroot
#cd /usr/src/
#dpkg -i iptables_1.3.6.0debian1-5_i386.deb
Masukkan rule TPROXY untuk melakukan intersepsi terhadap request http (port 80)
#iptables -t tproxy -A PREROUTING -i eth0 -p tcp –dport 80 -j TPROXY –on-port 3128
Pada debian, letakkan perintah ini di /etc/rc.local agar terload ketika sistem di restart, asumsinya user terhubung melalui eth0 (interface Local).
5. Install Squid dari Source (Ambil binary Squid 2.6.STABLE14)
Paket squid yang digunakan adalah 2.6.STABLE14, ambil langsung source codenya dari situs squid-cache karena paket squid dari debian tidak mendukung tproxy.
#cd /usr/src/
wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE14.tar.gz
#tar -xzvf squid-2.6.STABLE14.tar.gz
kompilasi dilakukan sama dengan kompilasi standard debian dengan tambahan opsi -enable-linux-tproxy, apabila ingin melihat standar kompilasi squid pada debian silahkan instal terlebih dahulu squid dan jalankan dengan -v.
apt-get install squid
squid -v
Lakukan copy file berikut;
#cp /usr/src/linux/include/linux/netfilter_ipv4/ip_tproxy.h /usr/include/linux/netfilter_ipv4
#cp /usr/include/linux/capability.h /usr/include/sys
Instal squid dari source, Jalankan perintah ./configure dalam satu baris.
#cd /usr/src/squid-2.6.STABLE14/
#./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-linux-netfilter –enable-storeio=ufs,aufs,diskd,null –enable-arp-acl –enable-removal-policies=lru,heap –enable-snmp –enable-delay-pools –enable-htcp –enable-poll –enable-cache-digests –enable-underscores –enable-referer-log –enable-useragent-log –enable-auth=”basic,digest,ntlm” –enable-carp –enable-large-files –enable-linux-tproxy
#make all
#make install
Selanjutnya, jangan lupa tambahkan dua baris ini dalam file squid.conf , karena ini merupakan bagian terpenting.
http_port 3128 tproxy transparent
tcp_outgoing_address 192.168.1.1
Kayanya sih sampe sini udah selesai, bisa di coba… !!
.
Trackback this post | Subscribe to the comments via RSS Feed