Iptables et choix de routage

Résolu/Fermé
mayel - 19 sept. 2007 à 00:07
 mayel - 19 sept. 2007 à 16:16
Salut,

voici la configuration sur laquelle je travaille :

A----B----switch----C----D

A,B,C,D sont des machines linux.
2 vlans ont été crée entre B et C (vlan 20 et 30). B et C possèdent donc 2 interfaces virtuelles (eth0.20 et eth0.30), chacune possédant sa propre adresse IP.
En terme de routage, rien de particulier n'est mis en place. Mise à part le fait que B et C possèdent 2 routes pour joindre les réseaux d'extrémité. Par ex, pour B, il y a 2 routes pour joindre le réseau auquel apartient D : une passant par le vlan 20 et une passant par le vlan 30. Ce qui donne pour B les 2 routes suivantes :
- pour joindre le réseau de D, la passerelle est l'adresse IP de eth0.30 de C (192.168.30.2)
- pour joindre le réseau de D, la passerelle est l'adresse IP de eth0.20 de C (192.168.20.2)
idem sur C pour joindre le réseau de A.

A l'heure actuelle seule la première de ses routes est utilisée. C'est à dire que si A souhaite joindre D, et que dans la table de routage de B la première route qui apparait est celle passant par le vlan 30, les paquets passeront toujours par ce chemin !!
Ce que j'aimerais faire c'est pouvoir choisir quelle vlan va être utilisé (le 20 ou le 30).
Je pensais utiliser iptables mais je suis loin d'être un expert. Je cherche une règle que je pourrais mettre sur B, du genre :
"Si le traffic est à destination de D, alors le prochain saut est l'adresse IP de eth0.20 de C (192.168.20.2)"

Comment faire ???

un truc comme : iptables -d @IP_de_D -j nexthop_est_@IP_de_eth0.20_de_C

Je sais pas du tout ...
Quelqu'un peut il m'aider ???

Merci d'avance

6 réponses

man route

route add -net ip_de_D netmask 255.255.255.0 eth0.30

Mais dans votre probleme, il y a un probleme. le reseau est logique et jamais aleatoire. Quand vous avez 2 routes identiques pour joindre une adresse, le hasard n'a pas sa place. Comment choisir la route : metric ???
Il est peut etre possible de faire du partage de charge entre 2 routes, peut etre en comptabilisant le trafic, mais je ne sais comment.

Configuration : Debian Etch.
0
brupala Messages postés 109442 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 23 avril 2024 13 619
19 sept. 2007 à 00:34
aussi,
route add .... metric x permet de donner une priorité à la route (en nombre de sauts)
en mettant un metric identique sur les 2 routes , on doit pouvoir faire du partage de charge .
0
Je veux pas faire du partage de charge !
Le probleme qui se pose c'est qu'avec la commande route, on ne specifie que des des routes vers des reseaux. Par exemple, on va definir sur B deux routes vers le reseau de D comme cela :
route add -net 192.168.40.0/24 (reseau de D) gw 192.168.30.2 (@IP de eth0.30 sur C)
route add -net 192.168.40.0/24 (reseau de D) gw 192.168.20.2 (@IP de eth0.20 sur C)
Imaginons que je rajoute une seconde machine sur le reseau de D, appellons la E. On a maintenant D : 192.168.40.1 et E : 192.168.40.3
Ce que je souhaite faire c'est ecrire une regle sur B qui permette de faire passer systematiquement le traffic a destination de D sur le vlan 20 par exemple, et celui a destination de E sur le vlan 30.
Est il possible de faire ca avec iptables ? ou autrement ?
0
brupala Messages postés 109442 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 23 avril 2024 13 619
19 sept. 2007 à 10:30
avec iptables je ne pense pas, ce n'est pas fait pour router, mais pour filtrer .
par contre avec route add, il suffit de jouer sur le masque en précisant -net 192.168.40.1/32 gw 192.168.30.2 et -net 192.168.40.2/32 gw 192.168.20.2
par exemple .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
La solution avec le masque me parait pas mal du tout. Je vais l'essayer de suite !
Je vous tiens au courant.
Merci
0
Ca marche parfaitement !
Merci bcp pour votre aide a tous.
La discussion peut etre fermee
0