我在生产环境中运行 SLES 12 SP3。在两个独立的网络上配置了多个接口。一段时间内(几天一次),一切都运行正常,但不知何故,1 或 2 个网关会从路由表中删除。任何日志(/var/log/messages)中均未显示原因。ARP 表仍显示从相关接口到路由器 IP 地址的条目。
我知道 Linux 内核会进行路由表垃圾收集,并且有与此相关的可调参数。但路由表似乎并没有快满,其中的条目不到 50 个。还有其他事件导致 Linux 内核从路由表中删除网关吗?我是否应该在系统中的其他地方查找有关路由器被删除原因的线索?
提前致谢。
答案1
Linux 在内核 3.6 中仅针对 IPv4 删除了路由缓存。例如,下面描述了这一点:David Miller:路由缓存已死,现在怎么办?。它现在只依赖于LPC字典树为了提高性能。据我所知,SLES12 上没有针对 IPv4 进行路由垃圾收集,其内核版本至少应为 3.12,甚至更高。
你可以保留命令ip -ts monitor
运行并记录其输出以供日后分析以找出发生了什么,尤其是路线消失时的情况。例如,也许某个地址也消失了,然后又重新出现,而路线却丢失了?