Création ## Utiliser une table de routage secondaire

This commit is contained in:
jdubois 2021-03-15 11:19:49 +01:00
parent 0cd38b8f24
commit 0ef1d583d8

View file

@ -212,6 +212,96 @@ precedence ::ffff:0:0/96 100
# ifconfig eth0 hw ether 01:23:45:67:89:0a
~~~
## Utiliser une table de routage secondaire
Il est possible de configurer d'autres tables de routage, permettant par exemple d'utiliser plusieurs routes par défaut selon certaines conditions.
Un exemple de nécessité peut être dans le cas où un serveur possède 2 adresses IP différentes, dans 2 réseaux différents :
~~~
# ip --brief a
eth0 UP 192.0.2.1/24
eth1 UP 198.51.100.1/24
~~~
Disons que la route par défaut est 192.0.2.254 :
~~~
# ip r
default via 192.0.2.254 dev eth0
~~~
Alors tous les paquets sortiront par cette route par défaut, et cela peut être problématique si l'on souhaite joindre l'IP 198.51.100.1 dans l'autre réseau.
On peut alors créer une nouvelle table de routage en l'ajoutant dans `/etc/iproute2/rt_tables`. Ici, j'ajoute la table `secondfai` :
~~~
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
2 secondfai
~~~
On voit qu'il existe déjà plusieurs tables. La table `local` s'occupe du trafic devant rester local à la machine, ainsi que du broadcast. La table `main` est celle utilisée et affichée par défaut lorsqu'on ne précise pas de table. La table `default` est vide.
On va maintenant remplir cette nouvelle table de routage, en y spécifiant la route par défaut 198.51.100.254 du second réseau :
~~~
ip route add default via 198.51.100.254 table secondfai
~~~
On peut consulter son contenu :
~~~
# ip route show table secondfai
default via 198.51.100.254 dev eth1
~~~
Il nous reste à spécifier dans quels cas utiliser cette table. Si l'on veut que tout le trafic que la machine émet depuis ce second réseau passe forcément par son routeur 198.51.100.254, on peut spécifier cette règle :
~~~
# ip rule add from 198.51.100.0/24 lookup secondfai prio 1000
~~~
Cette règle se traduit par « pour tout trafic dont la source est dans le réseau 198.51.100.0/24, je consulte la table `secondfai` », et sa priorité est de 1000. Plus sa priorité sera basse, et plus la règle sera prioritaire.
Les règles en place peuvent être consultées de cette manière :
~~~
# ip rule
0: from all lookup local
1000: from 198.51.100.0/24 lookup secondfai
32766: from all lookup main
32767: from all lookup default
~~~
Ainsi, tout le trafic que la machine émet depuis 192.0.2.1/24 sortira par la route par défaut de la table par défaut `main`, et tout le trafic que la machine émet depuis 198.51.100.1/24 sortira par la route par défautl de la table secondaire `secondfai`.
Ne pas oublier d'ajouter cette configuration en dur pour qu'elle reste après un redémarrage du serveur, par exemple dans /etc/network/interfaces :
~~~
auto eth0
iface eth0 inet static
address 192.0.2.1/24
gateway 192.0.2.254
auto eth1
iface eth1 inet static
address 198.51.100.1/24
up /sbin/ip route add default via 198.51.100.254 table secondfai
up /sbin/ip rule add from 198.51.100.0/24 lookup secondfai prio 1000
~~~
Les règles peuvent être supprimées de la même façon qu'elles ont été ajoutées, en remplaçant le mot-clé `add` par `delete`.
## Migrer de networkd à ifup