apather le trafic vers différentes passerelles par réseau de destination

J'ai plusieurs passerelles et je voudrais apather du trafic de différentes passerelles en fonction de sa destination. Je suppose que je devrais utiliser une combinaison de règles iproute2 et iptables, mais je ne sais pas par où commencer.
Quelqu'un peut-il donner un exemple?

Vous pouvez probablement faire ce que vous voulez avec la ip route :

 ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8 ip route add 10.0.0.0/24 dev eth0 

La première adresse ip route add une adresse IP unique, envoie une interface Ethernet donnée (ep3s8) au routeur hop suivant, 10.0.0.1

La seconde route est pour tout un réseau, 10.xyz, envoyé une carte ethernet donnée, eth0. C'est le "réseau local", qui n'a pas de routeur suivant, tout est sur le même fil logique.

Vous voulez lire man ip-route avant de faire quoi que ce soit, cependant. Aussi, soyez prêt à devoir redémarrer, et ne le faites pas à distance. Vous pouvez très facilement créer des routes incorrects qui mettent fin à votre access distant. Je suis la voix de l'expérience dans cette dernière recommandation.

Ce que vous requestz, c'est un policy-based routing sur des policy-based routing ou un policy-based routing source-based routing . Il y a une excellente introduction de David Schwartz sur ce même site.

Je voudrais souligner qu'il existe également un petit programme soigné, que vous pouvez find ici , qui vous permet de lier des applications spécifiques à une interface donnée. Ceci est bien sûr facile avec des applications comme openssh qui ont des options pour se lier à l'adresse d'écoute désirée. Mais cette bibliothèque vous permet de lier des applications même sans ces options (comme Firefox) à une adresse IP donnée.

De cette façon, vous pouvez choisir si vous souhaitez fournir des tables de routing distinctes pour toutes les applications ou replace ces mêmes spécifications pour chaque application.

bon endroit pour lire sur le routing de base source est Linux Advanced Routing & Traffic Control
vous pouvez également lire les manuels
man ip rule
man ip route

En général, vous devez append la règle (j'ai ajouté l'interface eth1 juste à des fins de démonstration, elle peut être omise)
#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
Voici:
dev eth1 – périphérique qui sera utilisé pour envoyer des packages
à 170.10.0.10 – la destination
tableau 2 – table où vous devriez ass vos routes
priorité 20000 – priorité de la règle

vous pouvez voir votre règle par
#ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default

Ensuite, vous devez append les routes de manière habituelle, mais vous devez spécifier la table (tableau 2), où vous placerez la route
#ip route add table 2 via 170.10.0.1 default

pour voir vos routes, vous devriez courir
#ip route show ta 2