Routage IProute 2

http://irp.nain-t.net/doku.php/100iproute:020_iproute2

Mise en place d’une règle de routage

Dans ce qui suit, la machine qui va servir de passerelle miroir s’appelle « saturne x.

La liste des tables qui existent sur votre machine se trouve dans le fichier /etc/iproute2/rt_tables. Vous ne pourrez pas créer de règles (rules) associées à une table qui n’est pas référencée dans ce fichier. Comme nous aurons besoin d’une table de routage spécifique pour le protocole POP3, nous allons créer une entrée supplémentaire dans ce fichier qui, après modification, aura l’allure suivante :

saturne:~# cat /etc/iproute2/rt_tables
#
# reserved values
#

200 pop3
255 local
254 main
253 default
0 unspec
#
# local
#
1 inr.ruhep

Cette manipulation, en elle même n’apporte rien aux règles en vigueur :

saturne:~# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default

Si nous voulons ajouter une règle, il faudra le dire explicitement de la façon suivante (prenez-le comme une recette pour le moment) :

saturne:~# ip rule add fwmark 6e table pop3

Ceci a pour effet d’ajouter une règle, que nous comprendrons mieux par la suite. Disons pour le moment que, lorsqu’un paquet contient la marque 0x6e (valeur hexadécimale), il devra être routé en fonction des informations contenues dans la table de routage pop3.

saturne:~# ip rule list
0: from all lookup local
32765: from all fwmark 6e lookup pop3
32766: from all lookup main
32767: from all lookup default

Nous voyons effectivement apparaitre une ligne supplémentaire dans la liste des règles.

Mais la table de routage pop3 est vide. Il faut la peupler un petit peu. En réalité, qu’avons-nous besoin de faire, en fonction de la topologie donnée ? Il nous suffit de dire que pour ces paquets, la route par défaut n’est pas 192.168.0.1, mais 192.168.0.3, adresse ip du serveur mandataire. Faisons le :

ip route add default via 192.168.0.3 dev eth0 table pop3

Bien. Pour vérifier :

saturne:~# ip route list table pop3
default via 192.168.0.3 dev eth0

Et si nous regardons la table de routage principale :

saturne:~# ip route list table main
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
default via 192.168.0.1 dev eth0

Autrement dit, si tout se passe comme prévu, tous les paquets sortant du poste de travail (qui est configuré pour voir 192.168.0.2 comme passerelle par défaut) seront aiguillés vers 192.168.0.1 (la vraie passerelle vers l’internet), sauf les paquets marqués “6e”, qui, eux, seront aiguillés vers 192.168.0.3 (le futur proxy transparent POP3).

Pour pouvoir vérifier si tout ça fonctionne, il faut commencer par pouvoir marquer ces paquets avec le label 6e, ce que nous n’avons pas encore fait.

Pour réaliser cette opération, nous aurons recours à Netfilter, avec IPtables.