> ## Content Index
> Fetch the complete content index at: https://www.bagz.fr/llms.txt
> Use this file to discover other available public pages before exploring further.

# Setup multiple default routes on Linux
- URL: https://www.bagz.fr/setup-multiple-default-routes-on-linux/
- Published: 2014-04-03T19:16:35.000Z
- Updated: 2026-09-29T09:14:00.000Z
- Author: bgazui
- Tags: Linux, #Migrated-1790668826633, #wp, #wp-post, #Import 2026-09-29 08:00

### The problem ?

Your system is running on Linux with multiple physical network interface cards (NIC) and each card has its own default gateway. By default, you can only set up a single default gateway on a system.

In our example, we will consider 2 NICs (*eth0* and *eth1*) enabled with default gateway configured on *eth0* interface.

![rt1](https://www.bagz.fr/content/images/rt1.png)

On this scheme, we can imagine two different cases:

1. The flow coming into *eth0* will be returned through *eth0* (default gateway)
2. The flow coming into *eth1* will be returned through *eth0* (default gateway)

In the first case, there is no problem, each NIC will work independently but in the second case, if you configured default gateway on *eth0*, whatever the network card receiving the request, it will answer through *eth0* which is the default gateway.

### Solution

The solution will be to use a program called *iproute2*, which is included and installed in all current Linux distributions. The expected result is:

1. The flow coming into *eth0* is returned through *eth0*
2. The flow coming into *eth1* is returned through *eth1*

It should so look like the following scheme:

![rt2](https://www.bagz.fr/content/images/rt2.png)

First of all, you will have to define new routing tables in the file */etc/iproute2/rt\_tables* by defining your own tables. Here, we are defining two new tables called *rt0* and *rt1*: 

\# reserved values  
#  
255 local  
254 main  
253 default  
0 unspec  
\# local  
#  
125 rt0  
225 rt1

Afterwards, you will have to configure your network cards (under 

*/etc/network/interfaces* 

if you're running on a Debian-like system) as below: 

auto eth0  
iface eth0 inet static  
 address 192.168.50.250  
 netmask 255.255.255.0  
 network 192.168.50.0  
 gateway 192.168.50.254  
 broadcast 192.168.50.255  
 post-up /sbin/ip route add default via 192.168.50.254 dev eth0 table rt0  
 post-up /sbin/ip rule add from 192.168.50.0/24 table rt0  
 pre-down /sbin/ip route del default via 192.168.50.254 dev eth0 table rt0  
 pre-down /sbin/ip rule del from 192.168.50.0/24 table rt0  

auto eth1  
  
iface eth1 inet static  
  
address 10.0.10.10  
  
netmask 255.255.0.0  
  
network 10.0.0.0  
  
broadcast 10.0.255.255  
  
post-up /sbin/ip route add default via 10.0.255.254 dev eth1 table rt1  
  
post-up /sbin/ip rule add from 10.0.0.0/16 table rt1  
  
pre-down /sbin/ip route del default via 10.0.255.254 dev eth1 table rt1  
  
pre-down /sbin/ip rule del from 10.0.0.0/16 table rt1

And now, restart your networking service to set this new configuration up. This will be permanent.

You can now connect to your server using both interfaces, and it will automatically answer correctly through the good gateway !