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>$idoneunsetecho "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 loIface lo inet loopback
Kemudian load modul-modul berikut dan sertakan juga di rc.local
modprobe xt_TPROXYmodprobe xt_socketmodprobe nf_tproxy_coremodprobe xt_MARKmodprobe nf_natmodprobe nf_conntrack_ipv4modprobe nf_conntrackmodprobe nf_defrag_ipv4modprobe ipt_REDIRECTmodprobe 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.bz2root@dian:~/usr/src#tar xjvf squid-3.1.6.tar.bz2root@dian:~/usr/src#cd squid-3.1.6root@dian:~/usr/src/ squid-3.1.6# ./configure --enable-linux-netfilterroot@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