logo
 Accueil  Articles  Cours  Guides  Formation  Téléchargement  Source
 
Contactmail
 Carnet de bord
 Notice légale
HOWTO du routage avancé et du contrôle de trafic sous Linux: Netfilter et iproute - marquage de paquets Page suivante Page précédente Table des matières

11. Netfilter et iproute - marquage de paquets

Jusqu'à maintenant, nous avons vu comment iproute travaille, et netfilter a été mentionné plusieurs fois. Vous ne perdrez pas votre temps à consulter Rusty's Remarkably Unreliable Guides. Le logiciel Netfilter peut être trouvé ici.

Netfilter nous permet de filtrer les paquets ou de désosser leurs en-têtes. Une de ses fonctionnalités particulières est de pouvoir marquer un paquet avec un nombre, grâce à l'option --set-mark.

Comme exemple, la commande suivante marque tous les paquets destinés au port 25, en l'occurrence le courrier sortant.

# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 \
 -j MARK --set-mark 1



Disons que nous avons plusieurs connexions, une qui est rapide (et chère, au mégaoctet) et une qui est plus lente, mais avec un tarif moins élevé. Nous souhaiterions que le courrier passe par la route la moins chère.

Nous avons déjà marqué le paquet avec un "1" et nous allons maintenant renseigner la base de données de la politique de routage pour qu'elle agisse sur ces paquets marqués.

# echo 201 mail.out >> /etc/iproute2/rt_tables
# ip rule add fwmark 1 table mail.out
# ip rule ls
0:      from all lookup local 
32764:  from all fwmark        1 lookup mail.out 
32766:  from all lookup main 
32767:  from all lookup default 



Nous allons maintenant générer la table mail.out avec une route vers la ligne lente, mais peu coûteuse.

# /sbin/ip route add default via 195.96.98.253 dev ppp0 table mail.out



Voilà qui est fait. Il se peut que nous voulions mettre en place des exceptions, et il y a beaucoup de moyens de le faire. Nous pouvons modifier la configuration de netfilter pour exclure certains hôtes ou nous pouvons insérer une règle avec une priorité plus faible qui pointe sur la table principale pour nos hôtes faisant exception.

Nous pouvons aussi utiliser cette fonctionnalité pour nous conformer aux bits TOS en marquant les paquets avec différents types de service et les nombres correspondants. On crée ensuite les règles qui agissent sur ces types de service. De cette façon, on peut dédier une ligne RNIS aux connexions interactives.

Inutile de la dire, cela marche parfaitement sur un hôte qui fait de la translation d'adresse (NAT), autrement dit du "masquerading".

IMPORTANT : Nous avons reçu une information selon laquelle MASQ et SNAT entrent en conflit avec le marquage de paquets. Rusty Russell l'explique dans ce courrier.

Désactiver le filtrage de chemin inverse pour que cela fonctionne correctement.

Note : pour marquer les paquets, vous aurez besoin de valider quelques options du noyau :

IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [Y/n/?]
IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [Y/n/?]



Voir aussi Cache web transparent utilisant netfilter, iproutes2, ipchains et squid dans le chapitre "Livre de recettes".


Page suivante Page précédente Table des matières
Dernière modification le : 4 March 2002 12:04
php logo    debian logo