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

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

当我执行时,显示的信息route -n到底是从哪里(从哪个s)检索的?struct

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

答案1

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

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

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

相关内容