* connmark and fwmark not working - just a little long
@ 2008-05-25 20:51 paulobruck1
0 siblings, 0 replies; only message in thread
From: paulobruck1 @ 2008-05-25 20:51 UTC (permalink / raw)
To: Mail List - Netfilter
Hi list
After diving in CONNMARK and FWMARK for several days and after reading
among others:
http://lists.netfilter.org/pipermail/netfilter/2007-June/069148.html
http://securepoint.com/lists/html/LARTC/2007-05/msg00057.html
http://mailman.ds9a.nl/pipermail/lartc/2006q2/018964.html
http://www.lugmen.org.ar/pipermail/lug-list/2006-April/041078.html
http://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN268
I really get confused. What I would like to do:
eth1 ( wan1)
firewall eth0 ( local)
eth2 ( wan2)
simple a load balance w/debian etch 4.0
#route
#####################
ip rule list | grep Pref0 2>&1 > /dev/null
if [ $? != 0 ] ; then
echo "200 Pref0" >> /etc/iproute2/rt_tables
echo "201 Equalize" >> /etc/iproute2/rt_tables
echo "202 Pref2" >> /etc/iproute2/rt_tables
fi
ip route flush table Pref0
ip route add table Pref0 default via 200.207.125.65
ip route flush table Equalize
ip route add table Equalize default \
nexthop via 200.207.125.76 weight 1 \
nexthop via 201.6.110.1 weight 1
ip route flush table Pref2
ip route add table Pref2 default via 201.6.110.1
#Add the rules matching marks to lookup tables
ip rule list | grep Pref0 2>&1 > /dev/null
if [ $? != 0 ] ; then
ip rule add fwmark 200 table Pref0
ip rule add fwmark 201 table Equalize
ip rule add fwmark 202 table Pref2
fi
ip route flush cache
################################
------cut----------
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 200.207.125.76
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 201.6.110.223
#first line in PREROUTING will pull out the existing mark on the
connection for the packet
iptables -t mangle -A PREROUTING -i eth0 -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 202.28.213.163
--dport 3666 -m mark --mark 0 -j MARK --set-mark 202
iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 80 -m mark --mark 0
-j MARK --set-mark 202
iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 3666 -m mark
--mark 0 -j MARK --set-mark 200
#Equalize HTTP Traffic with mark 201
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 80 -m mark
--mark 0 -j MARK --set-mark 201
#mark all packets send out an interface with the proper interface
preference mark (if it's been equalized)
iptables -t mangle -A POSTROUTING -o eth1 -m mark --mark 201 -j MARK
--set-mark 200
iptables -t mangle -A POSTROUTING -o eth2 -m mark --mark 201 -j MARK
--set-mark 202
iptables -t mangle -A POSTROUTING -o eth1 -j MARK --set-mark 200
iptables -t mangle -A POSTROUTING -o eth2 -j MARK --set-mark 202
#the last line in POSTROUTING is the magic statement that stores the
mark associated with the connection.
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark
#####################################################################
what is wrong:
a) load-balance is not working
b) when I access 202.28.213.163 it works, passed to eth2 BUT it apears
my IP looking at tcpdump....
202.28.213.163.3666 > 201.6.110.223.47466: P 2269:2333(64) ack 1573 win
9968
IP 202.6.110.223.47466 > 202.28.213.163.3666: . ack 2333 win 11520
IP 192.168.1.11.38132 > 202.28.213.163.3666: F 0:0(0) ack 1 win 11520
^^^^^^^^^^^^^^^^^^^^^ ??????
I have read that CONNMARK its used to mark CONECTIONS from/TO iptables,
and it's invisible for iproute. Correct??
That I have to use -j MARK --set-mark to mark packages that I would like
change the router decision.
But reading all the stuff above I really get confused and I'm lost
Does any of you could help or indicate a place/book where I can solve
this situations????
thanks in advanced
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-05-25 20:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-25 20:51 connmark and fwmark not working - just a little long paulobruck1
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox