Re: Slipt 2 ISP strange routing problem

Linux Advanced Routing and Traffic Control

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

 



Cytowanie guillaume <guillaume.riviere@xxxxxxxxxx>:

> Dear all Lartc,
> I try to split my Internet access to my 2 ISP with 1 linux (GNU/Debian 
> sarge) 3 NIC router,
> I want all my users conneted with ISP1 and just some IP connected with ISP2
> Here is my configuration:

[cut out a part]

I would suggest slight change in fw rules below
 
 # special rules for some IPs to go on second ISP
 iptables -t mangle -A PREROUTING -s 10.117.71.1 -j MARK --set-mark 34
 
 # SNAT RULES
 
 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 1.2.3.4
 iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 5.6.7.8

and trying the script below. It was taken from my Multipath/Policy routing case
by wipeing out a multipath part, so its is lsightly too much, but I suppose (I
didn't check) it should work. 
It is supposed to seamlesly integrate with multipath routing that's why so big,
the idea behind is:
1. remove default routing from main table,
2. take care of routing from correct interface (correctness of source IP/ source
interface pair),
3. policy routing of selected clients (table 210)
4. default routing of the others (table 211)
Of course you can leave it for the main table, but for the sake of example
i left it this way.

Hope it can help.

--- cut here ----
#!/bin/bash

# CONFIGURATION
IP=/sbin/ip
PING=/bin/ping

#--------------- LINK PART -----------------
# EXTIFn - interface name
# EXTIPn - outgoing IP
# EXTMn  - netmask length (bits)
# EXTGWn - outgoing gateway
#-------------------------------------------

# LINK 1 - 
EXTIF1=
EXTIP1=
EXTM1=
EXTGW1=

# LINK 2 - 
EXTIF2=
EXTIP2=
EXTM2=
EXTGW2=

#ROUTING PART
# removing old rules and routes

echo "removing old rules"
${IP} rule del prio 50 table main
${IP} rule del prio 201 from ${EXTIP1}/${EXTM1} table 201
${IP} rule del prio 202 from ${EXTIP2}/${EXTM2} table 202
${IP} rule del prio 210 fwmark 22 table 210
${IP} rule del prio 221 table 221
echo "flushing tables"
${IP} route flush table 201
${IP} route flush table 202
${IP} route flush table 210
${IP} route flush table 221
echo "removing tables"
${IP} route del table 201
${IP} route del table 202
${IP} route del table 210
${IP} route del table 221

case $1 in
stop) exit
      ;;
esac
      
# setting new rules
echo "Setting new routing rules"

# main table w/o default gateway here
${IP} rule add prio 50 table main
${IP} route del default table main

# identified routes here
${IP} rule add prio 201 from ${EXTIP1}/${EXTM1} table 201
${IP} rule add prio 202 from ${EXTIP2}/${EXTM2} table 202

${IP} route add default via ${EXTGW1} dev ${EXTIF1} src ${EXTIP1} proto static
table 201
${IP} route append prohibit default table 201 metric 1 proto static

${IP} route add default via ${EXTGW2} dev ${EXTIF2} src ${EXTIP2} proto static
table 202
${IP} route append prohibit default table 202 metric 1 proto static

# selected clients / select by fwmark=34

${IP} rule add prio 210 fwmark 22 table 210

# others
${IP} rule add prio 221 table 221

${IP} route add default table 210 proto static \
	    via ${EXTGW2} dev ${EXTIF2} src ${EXTIP2}

${IP} route add default table 221 proto static \
	    via ${EXTGW1} dev ${EXTIF1} src ${EXTIP1}

${IP} route flush cache




-- 
Robert Kurjata     mailto:rkurjata@xxxxxxxxxxxxx


-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/
_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux