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.


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.

  • 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
  • This is probably what I'm looking for in serverfault.com/questions/567487/…. Unfortunately, the link is broken :-( – Daniel Alder Jan 17 '14 at 23:03

I have implemented a working MultiISP setup using shorewall based on this answer: NIC bonding with two uplinks

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

  • 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

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

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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