Kiedy wykonuję route -n
, skąd dokładnie (z którego struct
) są pobierane wyświetlane informacje?
Próbowałem wykonać, strace route -n
ale nie pomogłem znaleźć właściwego miejsca, w którym jest przechowywane.
linux
networking
kernel
linux-kernel
route
syntagma
źródło
źródło
struct
jest odpowiedzialne za przechowywanie informacji./etc/sysconfig/network-scripts/ifcfg-${DEV}
w prostych przypadkach i / lub na podstawie tego, co można znaleźć/etc/sysconfig/network-scripts/route-${DEV}
w bardziej skomplikowanych przypadkach (przypadek Red Hat / CentOS 7). Ten ostatni plik zawiera dane wyjścioweip -r
. Zobacz Dodawanie trasy statycznej w CentOS .Odpowiedzi:
Narzędzie
route
lubip
pobiera informacje z pseudo systemu plików o nazwieprocfs
. Zwykle jest montowany pod/proc
. Istnieje plik o nazwie/proc/net/route
, w którym można zobaczyć tabelę routingu IP jądra. Zamiast tego możesz wydrukować tabelę routingucat
, ale narzędzie trasy formatuje dane wyjściowe jako czytelne dla człowieka, ponieważ adresy IP są przechowywane w postaci szesnastkowej.Ten plik nie jest zwykłym plikiem. Jest zawsze generowany dokładnie w momencie otwierania go przy próbie odczytu, tak jak wszystkie pliki w systemie plików proc.
I jesteś interessted jak plik jest napisane, to trzeba szukać w źródłach jądra: To funkcja wyświetla tabelę wyznaczanie trasy. Widzisz w linii 2510 , nagłówek tabeli routingu jest drukowany. Wygląda na to, że tabela routingu znajduje się głównie w strukturze
fib_info
zdefiniowanej w pliku nagłówkowym ip_fib.h, linia 98 .źródło