:::: MENU ::::

Setup multiple default routes on LinuxConfigurer plusieurs routes par défaut sur Linux

  • Apr 03 / 2014
  • 0
Linux

Setup multiple default routes on LinuxConfigurer plusieurs routes par défaut sur Linux

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

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

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:

Afterwards, you will have to configure your network cards (under /etc/network/interfaces if you’re running on a Debian-like system) as below:

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 !

Le problème ?

Votre système fonctionne sous Linux avec plusieurs cartes d’interface réseau (NIC) et chaque carte a sa propre passerelle par défaut. Seulement, par défaut, vous ne pouvez définir qu’une seule passerelle par défaut sur un système.

Dans notre exemple, nous considérerons 2 NICs (eth0 and eth1) activées avec la passerelle par défaut du système configurée sur l’interface eth0.

rt1

Selon ce schéma, on peut imaginer deux cas différents :

  1. Le flux arrivant sur eth0 sera renvoyé sur eth0 (passerelle par défaut)
  2. Le flux arrivant sur eth1 sera renvoyé sur eth0 (passerelle par défaut)

Dans le premier cas, il n’y a aucun problème, chaque NIC fonctionnera indépendamment mais dans le second, si la passerelle par défaut est configurée sur eth0, quelle que soit la carte réseau sur laquelle la requête arrive, la réponse sera renvoyée sur eth0 qui est la passerelle par défaut.

Solution

La solution sera d’utiliser un programme appelé iproute2, qui est inclus et installé dans la plupart des distributions courantes Linux. Le résultat attendu est donc :

  1. Le flux arrivant sur eth0 est renvoyé sur eth0
  2. Le flux arrivant sur eth1 est renvoyé sur eth1

On devrait donc obtenir quelque chose comme le schéma suivant :

rt2

Tout d’abord, il va falloir définir les nouvelles tables de routage dans le fichier /etc/iproute2/rt_tables en définissant vos propres tables. Ici, nous allons définir deux nouvelles tables appelées rt0 et rt1:

Après cela, vous devrez configurer vos cartes réseau (via le fichier /etc/network/interfaces si vous êtes sur un système basé Debian-like) tel que ci-dessous :

Et maintenant, redémarrer votre service réseau afin de mettre en place cette nouvelle configuration. Elle sera mise en place de manière permanente.

Vous pouvez maintenant vous connecter au serveur en utilisant les deux interfaces, et la réponse sera automatiquement redirigée sur la bonne interface via la bonne passerelle !

Leave a comment

You must be logged in to post a comment.

Question ? Contact