I want to route packets coming in on eth0 back over eth0 and the ones coming in to eth1 back over eth1. I don't care which gateway is used for outgoing connections.

If i just enter two gateways in /etc/network/interfaces then the kernel routes packets out on both interfaces.

I remember it has something to do with routing tables but I don't know how to do it/where can I read more about it.

link|improve this question

67% accept rate
feedback

3 Answers

up vote 3 down vote accepted

What you want to achieve is multi-homing, not bonding or load-balancing.

To do this you'll need to implement what is known as "policy" or "source based" routing.

Which you can do in Linux by using the iproute2 package.

There is a good article that explains how to, here.

link|improve this answer
This just solved about 3 hrs of banging my head against a brick wall. "Why arn't packets coming back...... disable rp_filter" Thanks a bunch! :) – Jason Mar 1 '10 at 23:38
feedback

I have implemented a working MultiISP setup using shorewall based on this answer: http://serverfault.com/questions/30549/nic-bonding-with-two-uplinks/30602#30602

It easy to implement and manage, works well in a "load balancing" configuration, where packets are evenly distributed between uplinks if no cached routes are found.

Read more about it here: http://www.shorewall.net/MultiISP.html

link|improve this answer
1  
Ok, thanks I don't need load balancing but it should work so I'll try that. – Jure1873 Jul 23 '09 at 8:52
No problem. Although raw iproute2 solutions are ok, having shorewall gives you a very nice abstraction and less maintenance problems for acomplishing the same task. – Karolis T. Jul 23 '09 at 13:10
feedback

I found this web page describing exactly how to achieve this using iptables2.

I found it using google and "linux 2 default gateways"

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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