路由表在 Linux 内核内部存储在哪里?

syn*_*gma 12 linux networking kernel linux-kernel route

当我执行时route -n,从哪里(从哪个structs)检索显示的信息?

我尝试执行,strace route -n但没有帮助我找到正确的存储位置。

cha*_*aos 18

routeip工具得到称为伪文件系统的信息procfs。它通常安装在/proc. 有一个名为 的文件/proc/net/route,您可以在其中查看内核的 IP 路由表。您可以cat改为打印路由表,但路由实用程序将输出格式化为人类可读的,因为 IP 地址以十六进制存储。

该文件不仅仅是一个普通文件。它总是在打开它并尝试读取的那一刻生成,就像 proc 文件系统中的所有文件一样。

如果您对该文件的编写方式感兴趣,那么您需要查看内核源代码:该函数输出路由表。您会在第 2510 行看到,打印了路由表的标题。路由表似乎主要位于fib_info头文件ip_fib.h 第 98 行中定义的结构中。