Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I have two gateway to access internet, somehow I want to load balancing it, so far its working, but some connection or service need persistent gateway IP to be used, so the client should never change its gateway once it have connected to dest., my current implementation seems to be round-robin or whatever it is.

this is my iproute

...
...
default
    nexthop via 192.168.1.1 dev eth0 weight 1
    nexthop via 192.168.1.2 dev eth0 weight 1

now i want to fix it somehow the gateway the client will use is predetermined, for example by using source port, if the source port is even number we use gw.1 and odd number go through gw.1, can we do that using ip route?

*note that I only have one outbound interface : eth0 here.

share|improve this question

1 Answer 1

up vote 1 down vote accepted

Use policy routing with marking packets. I'm not sure what format of configuration it is but you should check it in your distro.

In commandline it should look like (not tested but should work)

iptables -A PREROUTING -t mangle -p tcp --dport 22 --set-mark 0x1 -j CONNMARK
echo "200 ssh" >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table ssh
ip route add default dev eth0 via 192.168.1.2 table ssh

Edit: lines

echo "200 ssh" >> /etc/iproute2/rt_tables

Names routing table 200 by name "ssh". It is preserved between boots.

share|improve this answer
    
can you explain what does this line do : cat "200 ssh" >> /etc/iproute2/rt_tables ? –  uray Aug 25 '10 at 15:03
1  
Explained in edit. /etc/iproute2/rt_tables is a file which names routing tables by user-readable names. –  Maciej Piechotka Aug 25 '10 at 16:56

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.