Où la table de routage est-elle stockée en interne dans le noyau Linux?

11

Lorsque j'exécute route -n, d'où exactement (à partir de quelles structinformations les informations affichées sont-elles récupérées?

J'ai essayé de l'exécuter strace route -nmais je ne m'a pas aidé à trouver le bon endroit où il est stocké.

syntagme
la source
Il est stocké en mémoire. Recherchez-vous l'adresse mémoire à laquelle il se trouve?
Bandrami
@Bandrami Je voudrais voir ce qui structest responsable de la conservation des informations.
syntagma
Pour tous ceux qui recherchent le fichier sur le disque, il est soit construit à partir de tout ce que le serveur DHCP donne, soit à partir de ce qui peut être trouvé /etc/sysconfig/network-scripts/ifcfg-${DEV}dans des cas simples et / ou de ce qui peut être trouvé dans /etc/sysconfig/network-scripts/route-${DEV}des cas plus compliqués (cas de Red Hat / CentOS 7). Ce dernier fichier contient la sortie de ip -r. Voir Ajouter une route statique sur CentOS .
David Tonhofer

Réponses:

16

L' utilitaire routeou ipobtient ses informations d'un pseudo-système de fichiers appelé procfs. Il est normalement monté sous /proc. Il existe un fichier appelé /proc/net/route, où vous pouvez voir la table de routage IP du noyau. Vous pouvez imprimer la table de routage avec à la catplace, mais l'utilitaire de route formate la sortie lisible par l'homme, car les adresses IP sont stockées en hexadécimal.

Ce fichier n'est pas seulement un fichier normal. Il est toujours généré exactement au moment de son ouverture avec une tentative de lecture, comme tous les fichiers du système de fichiers proc.

Si vous êtes intéressé par la façon dont ce fichier est écrit, alors vous devez regarder les sources du noyau: Cette fonction génère la table de routage. Vous voyez à la ligne 2510 , l'en-tête de la table de routage est imprimé. La table de routage semble se trouver principalement dans la structure fib_infodéfinie dans le fichier d'en-tête ip_fib.h, ligne 98 .

le chaos
la source