linux内核自2.6.39起已移除传统路由缓存机制,改用fib高效查找;实际需管理的是邻居表(arp/ndp)、fib路由条目及conntrack连接跟踪状态。

Linux 系统中没有传统意义上的“动态路由表缓存”这一独立机制。内核自 2.6.39 起已彻底移除路由缓存(route cache)子系统,取而代之的是基于 FIB(Forwarding Information Base)的高效哈希/树结构查找,它不维护类似旧版 rt_cache 的可清除缓存表。
因此,你无法也不应执行类似 ip route flush cache 或 echo 1 > /proc/sys/net/ipv4/route/flush 这类已失效的命令——它们在现代内核中不存在或无响应。
真正需要关注和管理的,是以下三类实际存在、可操作、且可能影响路由行为的对象:
✅ 1. 清理失效或陈旧的邻居表(ARP/NDP)条目
邻居解析失败常被误认为“路由问题”,实则是下一跳 MAC 地址不可达,导致数据包发不出去。
查看当前 IPv4 邻居状态:
ip neigh show nud failed,nud stale清除所有失效(FAILED)和陈旧(STALE)条目(安全推荐):
sudo ip neigh flush nud failed,nud stale清除某网卡上全部动态邻居(保留静态绑定):
sudo ip neigh flush dev eth0强制刷新网关条目(删后立即触发新 ARP 请求):
sudo ip neigh del 192.168.1.1 dev eth0 && ping -c1 192.168.1.1
⚠️ 注意:不要盲目
ip neigh flush all,可能短暂中断所有本地通信。
✅ 2. 刷新 FIB 路由表中的“异常”或“过期”路由
虽然 FIB 本身无缓存,但某些场景会生成临时/错误路由,例如:
DHCP 获取地址后残留旧默认路由
多网卡环境下的策略路由冲突
手动添加的临时路由未清理
查看所有 IPv4 路由(含协议来源):
ip route show table all删除特定目的网络的路由(如重复或错误的默认路由):
sudo ip route del default via 192.168.1.254 dev eth0清空某张非主路由表(如
table 100):sudo ip route flush table 100重载网络配置(适用于 NetworkManager/Netplan 管理的系统):
sudo systemctl restart networking(Debian/Ubuntu)sudo nmcli connection reload && sudo nmcli connection up <connection-name></connection-name>(NM 环境)
✅ 3. 检查并清理连接跟踪(conntrack)中的异常状态
NAT、防火墙或负载均衡环境下,stale conntrack 条目可能导致“路由通但应用不通”。
查看异常连接(如 INVALID、UNREPLIED):
sudo conntrack -L | grep -E "(INVALID|UNREPLIED|ASSURED)" | head -20清除所有 INVALID 状态连接:
sudo conntrack -D --state INVALID清除指定协议+端口的连接(如清理卡死的 SSH 会话):
sudo conntrack -D -p tcp --dport 22彻底刷新(慎用,会中断所有 NAT 连接):
sudo conntrack -F
? 提示:确保
conntrack-tools已安装;若未启用 netfilter,该服务可能未运行。
不复杂但容易忽略:真正的“路由异常”往往不是缓存没清,而是邻居不可达、路由优先级错乱、或连接跟踪僵死。先 ip neigh show 和 ip route get 定位到具体环节,再针对性操作。











