route -n
Wo genau (von welchen struct
s) werden die angezeigten Informationen abgerufen, wenn ich sie ausführe ?
Ich habe versucht, es auszuführen, strace route -n
aber ich habe mir nicht geholfen, den richtigen Speicherort zu finden.
linux
networking
kernel
linux-kernel
route
Syntagma
quelle
quelle
struct
für das Speichern der Informationen verantwortlich ist./etc/sysconfig/network-scripts/ifcfg-${DEV}
in einfachen Fällen und / oder aus dem, was/etc/sysconfig/network-scripts/route-${DEV}
in komplizierteren Fällen zu finden ist (im Fall von Red Hat / CentOS) 7). Die letztere Datei enthält die Ausgabe vonip -r
. Siehe Hinzufügen einer statischen Route unter CentOS .Antworten:
Das
route
oder dasip
Dienstprogramm erhalten ihre Informationen von einem Pseudo-Dateisystem namensprocfs
. Es wird normalerweise unter montiert/proc
. Es gibt eine Datei namens/proc/net/route
, in der Sie die IP-Routing-Tabelle des Kernels sehen können. Sie könnencat
stattdessen die Routing-Tabelle mit drucken, aber das Routing- Dienstprogramm formatiert die vom Menschen lesbare Ausgabe, da die IP-Adressen in hexadezimaler Form gespeichert sind.Diese Datei ist nicht nur eine normale Datei. Es wird immer genau zu dem Zeitpunkt generiert, zu dem es geöffnet wird, um zu versuchen, alle Dateien im proc-Dateisystem zu lesen.
Wenn Sie interessiert sind, wie diese Datei geschrieben wird, müssen Sie sich die Kernelquellen ansehen: Diese Funktion gibt die Routing-Tabelle aus. Sie sehen in Zeile 2510 , dass die Kopfzeile der Routing-Tabelle gedruckt wird. Die Routing-Tabelle scheint sich hauptsächlich in der Struktur zu befinden
fib_info
, die in der Header-Datei ip_fib.h, Zeile 98 definiert ist .quelle