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

9

J'ai plusieurs passerelles et je voudrais acheminer du trafic à partir 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?

Walter
la source

Réponses:

9

Vous pouvez probablement faire ce que vous voulez avec 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

Le premier ip route addmontre une adresse IP unique, envoyée une interface Ethernet donnée (ep3s8) au routeur de saut suivant, 10.0.0.1

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

Vous voulez lire man ip-routeavant de faire quoi que ce soit. Soyez également prêt à redémarrer, et ne le faites pas à distance. Vous pouvez très facilement créer des itinéraires incorrects qui mettent fin à votre accès à distance. Je suis la voix de l'expérience dans cette dernière recommandation.

Bruce Ediger
la source
1
Notez que vous pouvez également spécifier des passerelles pour des blocs entiers, `` ip route add 10.1.0.0/16 via 192.168.0.1`
jthill
Merci pour votre réponse, cela m'aidera à me diriger dans la bonne direction. Je vais essayer ceci et vous le faire savoir.
Walter
5

Ce que vous demandez, c'est policy-based routingou 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é, qui peut être trouvé ici , qui vous permet de lier des applications spécifiques à une interface donnée. C'est bien sûr facile avec des applications comme openssh qui ont des options pour se lier à l'adresse d'écoute souhaitée. Mais cette bibliothèque vous permet de lier même des applications sans ces options (comme Firefox) à une adresse IP donnée.

De cette façon, vous pouvez choisir si vous souhaitez fournir des tables de routage distinctes pour toutes les applications, ou remplacer ces mêmes spécifications au cas par cas.

MariusMatutiae
la source
Vous n'avez pas besoin de routage de stratégie si vous souhaitez router par destination.
Diego Woitasen
Salut, c'est aussi un bon point, hmm, qui permettra une plus grande flexibilité qui est probablement plus avancée que je ne le souhaiterais à ce stade. Certainement quelque chose à apprendre.
Walter
3

un bon endroit pour lire sur le routage 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 ajouter la règle (j'ai ajouté l'interface eth1 uniquement à 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 paquets
à 170.10.0.10 - la
table de destination 2 - table où vous devez assigner vos routes
priorité 20000 - priorité de règle

vous pouvez voir votre règle en

#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 ajouter les routes de la manière habituelle, mais vous devez spécifier la table (tableau 2), où vous mettriez la route

#ip route add table 2 via 170.10.0.1 default

pour voir vos itinéraires, vous devez exécuter

#ip route show ta 2
vasily-vm
la source