静态路由重启后丢失的本质是未写入系统识别的持久化配置文件;必须将CIDR格式路由(如10.20.0.0/16 via 10.10.1.1)严格写入/etc/sysconfig/network-scripts/route-接口名文件,接口名需与ip link show结果完全一致,并通过systemctl restart network或ifdown/ifup生效,否则仍为临时路由。

静态路由重启后丢失,本质是配置没落盘到持久化位置,系统启动时根本没读它。临时命令加的路由只存在内存里,一重启就清空。
确认路由文件名和网卡名是否严格匹配
系统不会自动猜你用的是哪个网卡,必须手动核对:
- 运行 ip link show 或 nmcli device status 查真实接口名(比如 ens33、enp0s3,不是 eth0)
- 对应创建文件:/etc/sysconfig/network-scripts/route-ens33(名字错一个字符都不行)
- 别把 route-eth0 文件放在 ens33 网卡上,这种错配会导致加载静默失败
检查路由条目格式是否符合系统要求
这个文件只认一种写法,其他全无效:
- 必须用 CIDR 格式 + via 网关,例如:10.20.0.0/16 via 10.10.1.1
- 支持主机路由:192.168.100.52/32 via 10.10.1.2
- 默认路由写成:default via 10.10.1.254
- 不能出现 ip route add、route add -net 这类命令,系统直接跳过
- 不支持 netmask 写法,如 10.20.0.0 netmask 255.255.0.0 via 10.10.1.1 是无效的
验证配置是否被网络服务真正加载
改完文件不等于生效,得让 network 服务重新读取:
- 执行 sudo systemctl restart network(CentOS/RHEL 7+)
- 或针对单个接口:sudo ifdown ens33 && sudo ifup ens33
- 生效后立即检查:ip route show dev ens33,看到刚写的条目才算成功
- 重启机器再跑一遍 ip route show,确认条目还在
避开高风险的“伪持久化”做法
这些方法看似能用,但容易在特定时机失败:
- /etc/rc.local 里写 ip route add:执行太晚,网卡可能还没 ready,报 “Network is unreachable”
- 把 route -n > /etc/routes:这只是导出快照,系统根本不读这个文件
- /etc/sysconfig/static-routes:RHEL/CentOS 7+ 已弃用,配置了也无效
- 用 NetworkManager 管理的系统,别混用 systemd-networkd 的配置方式



















