Dans quel ordre la table de routage est-elle analysée?


19

Sur mon PC, je dois suivre le tableau de routage:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

Je ne comprends pas comment cela est analysé, je veux dire de haut en bas ou de bas en haut?

S'il est analysé de haut en bas, tout sera toujours envoyé au routeur de ma maison, même si la destination IP était 192.168.1.15; mais ce que je savais (à tort?), c'est que si un PC est à l'intérieur de mon même réseau local, une fois que j'ai récupéré la destination MAC via un message de diffusion, mon PC pourrait envoyer directement le message à la destination.

Réponses:


19

La table de routage est utilisée dans l'ordre du plus spécifique au moins spécifique.

Cependant, sous Linux, c'est un peu plus compliqué que vous ne le pensez. Premièrement, il existe plusieurs tables de routage et le moment où la table de routage utilisée dépend d'un certain nombre de règles.

Pour obtenir l'image complète:

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

$ ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

La localtable est la table de routage spéciale contenant des routes de contrôle de haute priorité pour les adresses locales et de diffusion.

La maintable est la table de routage normale contenant toutes les routes non liées aux règles. C'est également le tableau que vous obtenez pour voir si vous exécutez simplement ip route show(ou ip ropour faire court). Je recommande de ne plus utiliser l'ancienne routecommande, car elle ne montre que le maintableau et son format de sortie est quelque peu archaïque.

La table defaultest vide et réservée au post-traitement si les règles par défaut précédentes n'ont pas sélectionné le paquet.

Vous pouvez ajouter vos propres tables et ajouter des règles pour les utiliser dans des cas spécifiques. Par exemple, si vous avez deux connexions Internet, mais qu'un hôte ou un sous-réseau doit toujours être acheminé via une connexion Internet particulière.

Le livre Policy Routing with Linux explique tout cela dans des détails exquis.


existe-t-il un moyen de changer cette priorité?
Mheni

4

La table de routage est généralement appliquée dans l'ordre "du plus spécifique" au "moins spécifique". Une destination 0.0.0.0avec un masque de réseau 0.0.0.0, c'est-à-dire votre itinéraire par défaut , est la moins spécifique possible et sera donc toujours appliquée en dernier.

Si vous aviez l'adresse MAC d'un autre PC sur votre réseau local, mais que c'était sur un sous-réseau différent, vous pourriez ajouter une route d'hôte spécifique pour ce PC et vous obtiendriez probablement une communication.


s / habituellement / toujours /. C'est assez fondamental pour le fonctionnement des tables de routage.
Celada

1
@Celada J'ai omis de mentionner les mesures pour les itinéraires "mêmes spécifiques". Et puis il y a le routage des politiques. Pour le moment du moins, je me tiens habituellement de côté .
roaima
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.