Tutorial Squid Tproxy mode Bridge

Squid tproxy mode bridge
Minimum requirements:
  • Linux kernel 26.30 / 31 ( versi ini sudah tidak perlu patching kernel untuk menduking tproxy lagi, dan di sini saya menggunakan karmic ubuntu server).
  • Squid 3.1
  • Ebtables
  • Libcap-dev or Libcap2-dev untuk build squid
  • Libcap 2.09
Tahap pertama adalah membuat ubuntu server menjadi mode bridge, disini saya menggunakan 2 lan card, dimana card yang pertama nantinya akan terhubung ke local dan yang lainnya akan terhubung ke gateway/publik.

Install paket yang dibutuhkan untuk mendukung mode bridge
root@dian:~#apt-get install bridge-utils
Buat file rc.bridge dan isinya seperti di bawah ini, lalu sesuaikan interface local dan publiknya, kemudian letakkan di /etc/rc.d/rc.bridge, jangan lupa untuk di chmod 755.
#!/bin/sh
###############################################
IPT="/sbin/iptables"
EBT="/sbin/ebtables"
#local interfaces
LOCAL_IFACE1="eth0"
LOCAL_IFACE2="eth1"
#bridge interface br0
BRIDGE_IP="192.168.0.1"
BRIDGE_NET="255.255.255.0"
BRIDGE_GW="192.168.0.2"
###############################################
# Flush any existing rules or chains
echo "Flushing Tables ..."
#Reset Default Policies
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
#Flush all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
#Erase all non-default chains
$IPT -X
$IPT -t nat -X
$IPT -t mangle -T
#making bridge
ifconfig $LOCAL_IFACE1 0.0.0.0 promisc up
ifconfig @LOCAL_IFACE2 0.0.0.0 promisc up
brctl addif br0 $LOCAL_IFACE1
brctl addif br0 $LOCAL_IFACE2
ifconfig br0 $BRIGDE_IP netmask $BRIDGE_NET up
route add default gw $BRIDGE_GW dev br0
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
echo 0>/proc/sys/net/ipv4/conf/lo/rp_filter
echo 1>/proc/sys/net/ipv4/ip_forward
$IPT -t mangle -N DIVERT
$IPT -t mangle -A DIVERT -j MARK --set-mark 1
$IPT -t mangle -A DIVERT -j ACCEPT
$IPT -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
$IPT -t mangle -A PREROUTING -p --dport 80 -j TPROXY --tproxy-mark0x1/0x1 --on-port 3129
$ETB -t broute -A BROUTING -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target ACCEPT
$EBT -t broute -A BROUTING -ip ipv4 --ip-proto tcp --ip-sport 80 -j redirect --redirect-target ACCEPT
cd /proc/sys/net/bridge/
for i in *
do echo 0>$i
done
unset
echo "Firewall completely flushed! Now running beidge mode."
###############################################
# .o0 End of File 0o.
#Skrip for bridge mode by Apistech IT Development
#Modification for support squid skrip by Dian
###############################################
Setelah itu edit file /etc/network/interfaces sehingga menjadi hanya seperti ini:
Auto lo
Iface lo inet loopback
Kemudian load modul-modul berikut dan sertakan juga di rc.local
modprobe xt_TPROXY
modprobe xt_socket
modprobe nf_tproxy_core
modprobe xt_MARK
modprobe nf_nat
modprobe nf_conntrack_ipv4
modprobe nf_conntrack
modprobe nf_defrag_ipv4
modprobe ipt_REDIRECT
modprobe iptable_nat
/etc/rc.d/rc.bridge
Reboot system
Jika semua berjalan benar, dengan perintah ifconfig maka akan ada interfaces aktif bernama br0

Install squid
Setelah tahap mode bridge selesai, sekarang saatnya menginstall squid
root#dian:~#cd /usr/src && wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.6.tar.bz2
root@dian:~/usr/src#tar xjvf squid-3.1.6.tar.bz2
root@dian:~/usr/src#cd squid-3.1.6
root@dian:~/usr/src/ squid-3.1.6# ./configure --enable-linux-netfilter
root@dian:~/usr/src/ squid-3.1.6#make && make install
periksa apakah squid telah terinstall dengan perintah
root@dian:~#squid –v
kemudian edit file squid.conf sesuai kebutuhan, tambahkan baris berikut ke dalam squid.conf lalu reconfigure
http_port 3129 transparent tproxy
dan jalankan squid dengan perintah squid start.

0 comments:

Post a Comment