J'ai trouvé moi-même la solution à ce problème : Routage pour des liaisons montantes/fournisseurs multiples
Une configuration courante est la suivante, dans laquelle il y a deux fournisseurs qui connectent un réseau local (ou même une seule machine) au grand Internet.
________
+------------+ /
| | |
+-------------+ Provider 1 +-------
__ | | | /
___/ \_ +------+-------+ +------------+ |
_/ \__ | if1 | /
/ \ | | |
| Local network -----+ Linux router | | Internet
\_ __/ | | |
\__ __/ | if2 | \
\___/ +------+-------+ +------------+ |
| | | \
+-------------+ Provider 2 +-------
| | |
+------------+ \________
comment acheminer les réponses aux paquets qui arrivent par un fournisseur particulier, disons le fournisseur 1, et qui repartent par ce même fournisseur.
Fixons d'abord quelques noms symboliques. Soit $IF1 le nom de la première interface (if1 dans l'image ci-dessus) et $IF2 le nom de la seconde interface. Ensuite, laissez $IP1 être l'adresse IP associée à $IF1 et $IP2 l'adresse IP associée à $IF2. Ensuite, laissez $P1 être l'adresse IP de la passerelle du fournisseur 1, et $P2 l'adresse IP de la passerelle du fournisseur 2. Enfin, laissez $P1_NET être le réseau IP dans lequel se trouve $P1, et $P2_NET le réseau IP dans lequel se trouve $P2.
On crée deux tables de routage supplémentaires, dites T1 et T2. Elles sont ajoutées dans /etc/iproute2/rt_tables. Ensuite, vous configurez le routage dans ces tables comme suit :
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
Rien de spectaculaire, il suffit de construire une route vers la passerelle et de construire une route par défaut via cette passerelle, comme vous le feriez dans le cas d'un seul fournisseur en amont, mais en mettant les routes dans une table séparée par fournisseur. Notez que la route réseau suffit, car elle vous indique comment trouver n'importe quel hôte dans ce réseau, ce qui inclut la passerelle, comme spécifié ci-dessus. Ensuite, vous configurez la table de routage principale. C'est une bonne idée de router les choses vers le voisin direct à travers l'interface connectée à ce voisin. Notez les arguments `src', ils permettent de s'assurer que la bonne adresse IP sortante est choisie.
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
Ensuite, votre préférence pour le défaut de paiement ip route add default via $P1
Ensuite, vous configurez les règles de routage. Celles-ci choisissent en fait la table de routage à utiliser pour le routage. Vous voulez vous assurer que vous roulez vers une interface donnée si vous avez déjà l'adresse source correspondante : ip rule add from $IP1 table T1 ip rule add from $IP2 table T2