[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fonctionnement du routage au niveau du noyau



François TOURDE a écrit :

Je ne sais pas vraiment comment ça marche (et ce n'est pas mon souci
pour le moment ^^), mais j'ai observé que quand j'ai eu la double
liaison FAI, les réponses aux PING ne marchaient correctement que
quand je les recevais par l'interface définie par défaut dans ma table
de routage barbare :)

Quand tu recevais quoi par l'interface de la route par défaut ? Les pings ou les réponses au ping ?

Un problème courant avec le routage avancé ou lorsqu'on a plusieurs liens vers internet est la validation d'adresse source des paquets reçus par vérification du chemin inverse, contrôlée pour chaque interface par le paramètre du noyau /proc/sys/net/ipv4/conf/<interface>/rp_filter. Dans Debian, une option du fichier /etc/network/options, maintenant déclaré obsolète, permet d'activer ce réglage au démarrage. Lorsque ce paramètre est activé pour une interface, le noyau jette un paquet entrant par une interface avec une adresse source donnée s'il n'aurait pas routé un paquet vers cette adresse via la même interface. L'ennui, c'est que cette vérification ne prend pas en compte le routage avancé. Cela peut expliquer que les paquets entrants n'étaient acceptés que lorsqu'ils arrivaient par l'interface de la route par défaut.

Un autre problème potentiel lorsqu'on a plusieurs liens est le filtrage d'adresse source des paquets sortants qui peut être effectué par les opérateurs des liens (les FAI). Ta machine a deux liens avec deux adresses IP, et en théorie rien n'interdit d'émettre des paquets sur un lien avec l'adresse IP de l'autre. Mais en pratique il arrive que les FAI bloquent ces paquets pour éviter les attaques avec usurpation d'adresse IP source (IP spoofing). Ce filtrage du FAI a le même effet que rp_filter, mais en sortie cette fois. Le routage avancé permet de forcer le routage par le lien correspondant à l'adresse source.

Mes soucis se sont résolus après l'utilisation de l'iprouting,
permettant (je ne sais pas comment) de répondre à un paquet au travers
de l'interface ayant reçu la requête.

Je soupçonne que cela permettait plutôt d'envoyer un paquet par l'interface en fonction de son adresse source, ce qui est légèrement différent dans l'absolu. C'est beaucoup plus facile que de router la réponse par l'interface ayant reçu la requête.

C'est pour cela que j'ai utilisé l'expression "source routing", et je
m'en excuse si elle a pû prêter à confusion ou erreur.

Bah, c'est une confusion courante parce que d'une part presque personne ne connaît l'existence de l'option "source routing" du protocole IP étant donné sa faible utilisation, et d'autre part "source based routing policy" ça fait vachement long pour des feignasses d'unixiens habitués aux sigles à 3 ou 4 lettres et aux commandes à 2 lettres. ;-) Alors on a facilement la tentation d'abréger en "source routing", sans savoir que ça désigne déjà autre chose.

Je suis d'ailleurs preneur d'explications sur ce mécanisme ...

Quel mécanisme ? L'option "source routing" du protocole IP ou le routage avancé basé sur l'adresse source de Linux ?



Reply to: