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

Re: Fonctionnement du routage au niveau du noyau



Tout d'abord merci beaucoup pour ces explications sur le routage au
niveau du kernel. Comme l'OP, ce sujet m'interresse, et j'avais déjà
essayé sans succès de réaliser la même manipulation que lui (raison
donnée plus bas).

Avant tout, et puisque le sujet intéresse visiblement plusieurs
personnes, aurait tu des pointeurs ou des conseils de lecture (mis à
part le source lui même, qui est confus je trouve) sur ce sujet ?
J'ai trouvé diverses docs en ligne, j'ai parcouru divers livres
(le plus précis et complet à mon avis étant "Understanding Linux network
internals" chez O'Reilly, mais il n'est pas parfais et pas toujours
très clair), mais sans jamais trouver quelquechose de vraiment
satisfaisant...

Comme certain pensent apparement que c'est idiot de vouloir relier
directement deux interfaces réseaux, voici la raison pour laquelle je
voulais faire ça moi aussi : J'ai un module qui analyse le traffic IP
d'un bridge (grace à un hook netfilter). Pour le tester, j'utilise
actuellement 3 machines : un emméteur, un récepteur, et le bridge
modifié entre les deux. Ce n'est pas très commode, surtout pour lancer
des tests automatiques (synchronisations des commandes à lancer entre
les trois machines). J'avais pensé à lancer le bridge dans qemu, et à
transmettre les paquets grace à deux interfaces réseaux virtuelles
(tun/tap). Il fallait donc que le kernel accepte d'envoyer des paquets
qui étaient destinés à son autre interface via le bridge dans qemu.
Malheuresement je n'y était pas arrivé, mais je vais réessayer en
masqueradant.

-[ Sun, Apr 29, 2007 at 12:19:49PM +0200, Pascal Hambourg ]----
> Règle : dans Linux, le trafic émis localement à destination de n'importe 
> quelle adrese locale, ce qui inclut non seulement le bloc 127.0.0.0/8 
> mais aussi toutes les adresses des autres interfaces de la machine, 
> passe systématiquement par l'interface de loopback.

Y a t-il une raison à celà, à part simplifier la vie des administrateurs
réseau fainéants ?

> Oui, mais elle se heurte à la règle énoncée plus haut, qui a une 
> priorité supérieure. Cette règle est appliquée par une table de routage 
> spéciale appelée "local" qu'on peut afficher avec la commande suivante 
> (du paquet iproute) :
> 
> $ ip route list table local

Si on efface cette règle (ip route del ...), on peut alors apparement
(je viens de tester) envoyer sur une interface physique des paquets à
destination de l'interface (à condition de les envoyer depuis une
interface qui à une autre IP source, sinon l'adresse source sera égale à
l'adresse destination et apparement c'est invalide).

N'est-ce pas plus simple d'effacer cette règle que de masquerader les
interfaces ? Y a t-il des contre-indications ?

> $ ip rule list
> 0:      from all lookup local
> 32766:  from all lookup main
> 32767:  from all lookup default

Chez moi (debian sarge) la table "local" s'appelle apparement table "255".

> La première règle indique que la table "local" a la priorité la plus 
> haute (0). On ne peut ni la modifier ni la supprimer.

Tiens, justement (cf plus haut) j'ai réussi à la modifier...
kernel : 2.6.18-4-686 #1 SMP Mon Mar 26 17:17:36 UTC 2007 i686 GNU/Linux




Reply to: