Routage linux

De Linux Server Wiki
Aller à la navigation Aller à la recherche


Ordre d'une décision de routage sous linux (dans l'ordre de décision) :

  • Most specific route
  • Lowest administrative distance
  • lowest metric (ou preference sous linux, a ne pas confondre avec le champ 'pref' pour les routes ipv6)


Les paquets sont considérés individuellement pour les décisions de routage. La décision de routage ne prend donc pas en considération qu'un paquet puisse être la réponse à un autre paquet. Cela peut poser soucis dans les installations avec plusieurs interfaces réseaux et générer un routage asymétrique (paquet entrant par un couple interface/gateway et sortant par un autre couple interface/gateway suite à une décision de routage (et uniquement suite à une décision de routage).
On peut cependant créer des tables de routages indépendantes dans cette situation :

echo '252 T1' >> /etc/iproute2/rt_tables
echo '251 T2' >> /etc/iproute2/rt_tables
# notez que les numéros ici ne sont PAS une priorité. C'est un identifiant numérique de la table (de 0 à 255, sachant que 0, 253, 254 et 255 sont réservés)

ip rule add from 10.0.0.100 table T1
ip route add 10.0.0.0/24 dev eth0 src 10.0.0.100 table T1
ip route add default via 10.0.0.2 dev eth0 src 10.0.0.100 table T1

ip rule add from 10.0.0.200 table T2
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.200 table T2
ip route add default via 10.0.0.2 dev eth1 src 10.10.0.200 table T2

A noter que cette solution :

  • ne nécessite aucun marquage des paquets avec ipfilter/netfilter
  • fonctionne car le paquet dit sortant (=la réponse) aura le champ ip-src défini à la valeur du ip-dst du paquet entrant initial (=la requête) :
    • Paquet entrant (initial) ip-src=IP-AAAA ip-dst=IP-BBBB
    • Paquet sortant (réponse) ip-src=IP-BBBB ip-dst=IP-AAAA


Vous pouvez voir les rules par défaut avec ip rule show (ici la table de rule par défaut) :

0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Ici nous avons :

  • Priority 0 sans selecteur (from all) -> lookup sur la table de routage 'local' (ID 255) (table local / broadcast)
  • Priority 32766 sans selecteur (from all) -> lookup sur la table de routage 'main' (ID 254) (table par défaut)
  • Priority 32767 sans selecteur (from all) -> lookup sur la table de routage 'default' (ID 255) (table vide réservée)