Search squid archive

Re: Tproxy Syn/Ack Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



if you have  a Thread you better stick to it.

my tproxy setup on ubunutu 11.10 amd64
i'm using one script to start the tproxy services on this machine.
i have seen things about the ebtables should be on DROP but the only way i could make it work was to accept the connections with EBTABLES. as i remember you might need to add a "ACCEPT" rules before the "DROP" ones in the ebtables.

this script is from couple of month ago but it worked perfectly.
hope it will help you.

#!/bin/sh -x
#turning iptables modules on
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe xt_mark
modprobe xt_socket
modprobe nf_tproxy_core
modprobe xt_TPROXY
modprobe xt_tcpudp
modprobe nf_conntrack
modprobe nf_conntrack_ipv4

#building bridge
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
pkill dhc

ifconfig eth0 up
ifconfig eth1 up

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig br0 192.168.10.119
#adding route for bridge
route add default gw 192.168.10.201
#
echo "nameserver 192.168.10.201">/etc/resolv.conf

#tproxy settings
ip route flush table 100
ip rule del fwmark 1 lookup 100
ip rule add fwmark 1 lookup 100
ip -f inet route add local 0.0.0.0/0 dev lo table 100

iptables -t mangle -F
iptables -t mangle -X DIVERT
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129

##!/bin/sh
CLIENT_IFACE="eth1"
INET_IFACE="eth0"

ebtables -t broute -F

ebtables -t broute -A BROUTING -i $CLIENT_IFACE -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target ACCEPT

ebtables -t broute -A BROUTING -i $CLIENT_IFACE -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP

ebtables -t broute -A BROUTING -i $INET_IFACE -p ipv4 --ip-proto tcp --ip-sport 80 -j redirect --redirect-target ACCEPT

ebtables -t broute -A BROUTING -i $INET_IFACE -p ipv4 --ip-proto tcp --ip-sport 80 -j redirect --redirect-target DROP


cd /proc/sys/net/bridge/

for i in *
 do
   echo 0 > $i
 done
unset i


#Changes in /etc/sysctl.conf \ sysctl

sysctl net.ipv4.ip_forward=1
sysctl net.netfilter.nf_conntrack_acct=1
sysctl net.ipv4.conf.lo.rp_filter=0



On 03/05/2012 04:32, Daniel Echizen wrote:
Hi list..

A already hav posted my problem in the list before, but i'll try to
put more detail after alot of research.

My problem is, i have a squidbox working as a tproxy, all work fine
except some clients that have wireless router (tplink and another
brand) sharing their connection.
my topology is internet<---->  squidbox (bridge)<---->  mikrotik
(pppoe-server)<----->  clients

squidbox under debian lenny 5.0, kernel version 3.3.4, iptables
1.4.13, ebtables 2.0.10-4, squid 3.1

squidbox is the gateway but i have tested without too.

in tcpdump i can see that connection from the problematic client dies
after syn/ack like above:

  06:17:49.782874 IP 177.x.x.182.41375>  177.43.198.34.80: S
2780380743:2780380743(0) win 8192<mss 1440,nop,nop,sackOK>
06:17:49.782898 IP 177.43.198.34.80>  177.x.x.182.41375: S
4043086738:4043086738(0) ack 2780380744 win 14600<mss
1460,nop,nop,sackOK>
06:17:50.815675 IP 177.x.x.182.41372>  74.125.234.73.80: S
3452097232:3452097232(0) win 8192<mss 1440,nop,wscale
2,nop,nop,sackOK>
06:17:50.815690 IP 74.125.234.73.80>  177.x.x.182.41372: S
3646761972:3646761972(0) ack 3452097233 win 14600<mss
1460,nop,nop,sackOK,nop,wscale 7>
06:17:50.929351 IP 177.43.198.34.80>  177.x.x.182.41375: S
4043086738:4043086738(0) ack 2780380744 win 14600<mss
1460,nop,nop,sackOK>
06:17:51.085337 arp who-has 177.x.x.182 tell 177.x.x.11
06:17:51.086195 arp reply 177.x.x.182 is-at 00:27:19:d4:b4:27
06:17:51.329317 IP 74.125.234.73.80>  177.x.x.182.41372: S
3646761972:3646761972(0) ack 3452097233 win 14600<mss
1460,nop,nop,sackOK,nop,wscale 7>
06:17:52.776117 IP 177.x.x.182.41375>  177.43.198.34.80: S
2780380743:2780380743(0) win 8192<mss 1440,nop,nop,sackOK>
06:17:52.776130 IP 177.43.198.34.80>  177.x.x.182.41375: S
4043086738:4043086738(0) ack 2780380744 win 14600<mss
1460,nop,nop,sackOK>
06:17:52.929358 IP 177.43.198.34.80>  177.x.x.182.41375: S
4043086738:4043086738(0) ack 2780380744 win 14600<mss
1460,nop,nop,sackOK>

177.x.x.182 is client IP
177.x.x.11 is squidbox IP

my config is:

ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

/sbin/iptables -v -t mangle -N DIVERT
/sbin/iptables -v -t mangle -A DIVERT -j MARK --set-mark 1
/sbin/iptables -v -t mangle -A DIVERT -j ACCEPT
/sbin/iptables -v -t mangle -A PREROUTING -p tcp --dport 80  -j TPROXY
--tproxy-mark 0x1/0x1 --on-port 5128

/usr/local/sbin/ebtables -t broute -A BROUTING -i eth4 -p ipv4
--ip-proto tcp --ip-sport 80 -j redirect --redirect-target DROP
/usr/local/sbin/ebtables -t broute -A BROUTING -i eth3 -p ipv4
--ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP

cd /proc/sys/net/bridge/
for i in *
do
echo 0>  $i
done
unset i

echo 0>   /proc/sys/net/ipv4/conf/lo/rp_filter
echo 0>   /proc/sys/net/ipv4/conf/all/rp_filter
echo 1>   /proc/sys/net/ipv4/ip_forward

hope someone help.. dont know how to track where syn/ack is dying or
getting drop


--
Eliezer Croitoru
https://www1.ngtech.co.il
IT consulting for Nonprofit organizations
eliezer <at> ngtech.co.il


[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux