linux内核路由缓存(fib缓存)在5.0+版本中已被移除,需先通过grep config_ip_route_cache /boot/config-$(uname -r)确认是否启用,若为=n或无输出则功能已禁用,ip route show cache将返回空或提示“cache is disabled”。

要快速确认当前 Linux 内核是否缓存了已解析的路由路径,避免重复查找开销,需直接访问底层路由缓存接口,而不是主路由表。
查看内核路由缓存(FIB 缓存)
Linux 内核维护一个前向信息库(Forwarding Information Base, FIB)缓存,用于加速已知目标的路由决策。该缓存独立于主路由表,可通过 ip route show cache 查看。
执行命令:ip route show cache
这一步仅在内核启用了路由缓存(CONFIG_IP_ROUTE_CACHE=y)且未被禁用时返回有效条目;现代内核(5.0+)默认已移除此机制,多数发行版返回空或提示“cache is disabled”。
检查路由缓存是否启用
先确认当前内核是否编译支持并运行着路由缓存:
运行:grep CONFIG_IP_ROUTE_CACHE /boot/config-$(uname -r)
若输出为 CONFIG_IP_ROUTE_CACHE=n 或无输出,说明该功能已被彻底移除,【此时任何尝试读取缓存的操作都将失败或返回空】。
若输出为 CONFIG_IP_ROUTE_CACHE=y,继续下一步。
检查运行时是否被禁用:sysctl net.ipv4.route.flush 不能直接反映状态,但可观察 /proc/sys/net/ipv4/route/max_size 是否为 0——为 0 表示缓存已停用。
读取原始路由缓存数据(仅限旧内核)
方法一:通过 /proc 接口(适用于 2.6–3.x 内核)
执行:cat /proc/net/ip_route
该文件以十六进制格式逐行列出缓存条目,每行含目的地址、源地址、网关、接口索引等字段;字段顺序固定但无表头,需对照内核文档解析。
方法二:使用 iproute2 的兼容模式
执行:ip -4 route show cached
注意:此子命令在 iproute2 ≥ 4.10 中已被标记为废弃,部分新版系统会静默忽略或报错 “invalid argument”,不建议依赖。











