diff --git a/HowtoDebian/Reseau.md b/HowtoDebian/Reseau.md index a6108c66..1268513d 100644 --- a/HowtoDebian/Reseau.md +++ b/HowtoDebian/Reseau.md @@ -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