Passerelle différente suivant la source

Bonjour à tous,

J’ai un problème à régler et je ne sais pas quelle solution utiliser… Voila j’ai 3 connexions internet , 2 ADSL et une SDSL. j’ai monté un routeur sous Debian qui gère les connexions (load-balancing, fail-over,…) mais j’aimerais définir des exceptions du genre :

“quand c’est la machine 192.168.0.6 qui veut se connecter à internet, elle utilise la passerelle 192.168.1.251”

Je pensé aux routes, mais je n’ai pas trouvé la condition de “source”, j’ai cherché du coté des iptables mais je n’ai pas le niveau… Bref j’ai besoin de vous :wink:

merci beaucoup

Installer : iproute
A lire : LARTC-howto, man ip

Pour faire du routage basé sur l’adresse source, il faut utiliser des règles de routage avancé et des tables de routage alternatives.

Règle de routage basé sur l’adresse (ou le préfixe) source

Remplir une table de routage alternative

$adresse = adresse ou préfixe source
$table = numéro de table entre 1 et 251 ou nom de table défini dans /etc/iproute2/rt_tables
$destination = adresse ou préfixe destination, ou “default” pour la route par défaut
$passerelle = adresse de passerelle
$interface = interface de sortie

Les tables de routage alternatives ne doivent pas contenir seulement une route par défaut mais les mêmes destinations que la table de routage principale (“main”). Sinon toutes les destinations utilisent la route par défaut, ce qui n’est pas forcément ce qui est voulu.

On peut aussi utiliser le marquage de paquets par iptables. C’est plus lourd mais permet d’utiliser d’autres critères de routage que l’adresse source, comme le protocole et le port destination.

iptables -t mangle -A PREROUTING $critere -j MARK --set-mark $marque ip rule add fwmark $marque table $table
$critere = options et correspondances des paquets à marquer (-i $interface, -s $source, -d $destination, -p $protocole, --dport $port…)
$marque = valeur de la marque (entier sur 32 bits)

parfait merci beaucoup de votre aide

edit : en plus ça fonctionne :wink: