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


11

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

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



它存储在内存中。您在寻找它的内存地址吗?
邦德拉米

@Bandrami我想看看什么struct负责保存信息。
宪法

对于任何在磁盘上查找文件的人来说,它要么是通过DHCP服务器提供的,要么是/etc/sysconfig/network-scripts/ifcfg-${DEV}在简单情况下可以找到的文件,和/或/etc/sysconfig/network-scripts/route-${DEV}在更复杂情况下可以找到的文件(Red Hat / CentOS的情况下) 7)。后一个文件包含的输出ip -r。请参阅在CentOS上添加静态路由
David Tonhofer,

Answers:


16

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.