Différences entre les versions de « Multi route »
| Ligne 16 : | Ligne 16 : | ||
=== Mise en pratique === | === Mise en pratique === | ||
Fichier /etc/network/interface : | * Fichier /etc/network/interface : | ||
<pre> | <pre> | ||
# This file describes the network interfaces available on your system | # This file describes the network interfaces available on your system | ||
| Ligne 64 : | Ligne 64 : | ||
</pre> | </pre> | ||
* cat /etc/iproute2/rt_tables | |||
<pre> | |||
201 vl7 | 201 vl7 | ||
202 vl401 | 202 vl401 | ||
| Ligne 70 : | Ligne 71 : | ||
204 vl403 | 204 vl403 | ||
205 vl404 | 205 vl404 | ||
</pre> | |||
* # ip route | |||
217.174.195.128/28 dev eth0.403 proto kernel scope link src 217.174.195.129 | 217.174.195.128/28 dev eth0.403 proto kernel scope link src 217.174.195.129 | ||
217.174.194.128/28 dev eth0.402 proto kernel scope link src 217.174.194.129 | 217.174.194.128/28 dev eth0.402 proto kernel scope link src 217.174.194.129 | ||
Version du 16 mars 2011 à 17:31
Problématique
Ce que j'appéle le multihoming / multi route est le fait qu'une machine appartienne à plusieurs réseaux et qu'elle ait des gateway par default sur plusieurs d'entre eux. L'idée c'est que les packets qui partent de l'interface if1 doivent sortir par la gateway définie pour cette interface et que les packets qui partent de l'interface if2 doivent eux sortir par la gateway définie pour celle-ci.
Explication
Pour ce faire, Linux nous fourni l'outil iproute2. Pour l'utiliser, cela consiste à créer des tables de routage différentes pour chaque interface et d'utiliser la bonne table au bon moment. Donc, tout d'abord on définit nos diffèrentes tables dans un fichier de lookup (à la /etc/hosts), il permet d'associer un nom à un numéro de table. On ne peut avoir que de 0 à 255 tables dont un certain nombre sont prédéfinies :
Mise en pratique
- Fichier /etc/network/interface :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
up ethtool -s eth0 duplex full speed 100 autoneg off
auto eth0.401
iface eth0.401 inet static
address 217.174.193.129
netmask 255.255.255.240
up ip route add default via 217.174.193.142 table vl401
up ip rule add from 217.174.193.129 table vl401
auto eth0.402
iface eth0.402 inet static
address 217.174.194.129
netmask 255.255.255.240
up ip route add default via 217.174.194.142 table vl402
up ip rule add from 217.174.194.129 table vl402
auto eth0.403
iface eth0.403 inet static
address 217.174.195.129
netmask 255.255.255.240
up ip route add default via 217.174.195.142 table vl403
up ip rule add from 217.174.195.129 table vl403
auto eth0.404
iface eth0.404 inet static
address 217.174.202.145
netmask 255.255.255.240
gateway 217.174.202.158
auto eth0.7
iface eth0.7 inet static
address 217.174.210.80
netmask 255.255.255.192
up ip route add default via 217.174.210.126 table vl7
up ip rule add from 217.174.210.80 table vl7
- cat /etc/iproute2/rt_tables
201 vl7 202 vl401 203 vl402 204 vl403 205 vl404
- # ip route
217.174.195.128/28 dev eth0.403 proto kernel scope link src 217.174.195.129 217.174.194.128/28 dev eth0.402 proto kernel scope link src 217.174.194.129 217.174.193.128/28 dev eth0.401 proto kernel scope link src 217.174.193.129 217.174.202.144/28 dev eth0.404 proto kernel scope link src 217.174.202.145 217.174.210.64/26 dev eth0.7 proto kernel scope link src 217.174.210.80 default via 217.174.202.158 dev eth0.404
root@indom120:~# ip rule
0: from all lookup local
32760: from 217.174.195.129 lookup vl403
32761: from 217.174.194.129 lookup vl402
32762: from 217.174.193.129 lookup vl401
32763: from 217.174.193.129 lookup vl401
32764: from 217.174.210.81 lookup vl7
32765: from 217.174.210.80 lookup vl7
32766: from all lookup main
32767: from all lookup default