Linux持久化静态路由核心是将规则写入系统网络服务可识别的配置文件:CentOS/RHEL用/etc/sysconfig/static-routes(全局)或route-接口名(接口级),Ubuntu/Debian 18.04+用Netplan YAML,旧版Debian改/etc/network/interfaces,禁用rc.local等非标准方式。

Linux中设置持久化静态路由,核心是把路由规则写进系统网络服务能自动识别的配置文件,而不是只用ip route或route命令临时添加。不同发行版加载机制不同,硬套一种方法容易重启后失效,甚至影响NFS挂载或SSH连接。
CentOS/RHEL 系统:用 static-routes 或 route-接口名
推荐优先使用/etc/sysconfig/static-routes(全局路由),它被network服务原生支持,启动早、无竞态。
- 文件不存在就手动创建,权限保持644即可
- 每行格式必须为:
any net 目标网段/前缀 gw 下一跳,any不能省略或替换 - 主机路由写法:
any host 192.168.30.5 gw 192.168.1.254 - 改完后执行:
systemctl restart network(RHEL 7+)或service network restart(旧版)
若路由需绑定特定网卡(如多网卡服务器),改用/etc/sysconfig/network-scripts/route-ens33(文件名必须匹配实际接口):
- 每行一条,推荐CIDR格式:
10.20.0.0/16 via 10.10.1.1 - 可写默认路由:
default via 10.10.1.254 - 生效命令同上,或直接
ifdown ens33 && ifup ens33
Ubuntu/Debian 18.04+:用 Netplan YAML
Netplan 是默认网络管理器,/etc/sysconfig/static-routes完全不被读取,混用会失效。
- 编辑
/etc/netplan/*.yaml(如01-netcfg.yaml) - 在对应网卡配置下添加
routes块,注意缩进和冒号后空格:
- to: 192.168.50.0/24
via: 192.168.1.254
metric: 100
- 保存后运行
netplan apply,无需重启服务或机器
Debian 旧版或非 Netplan 环境:改 /etc/network/interfaces
适用于仍用ifupdown的 Debian 系统或定制环境。
- 在目标接口配置块末尾添加
up和down指令:
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
up ip route add 192.168.60.0/24 via 192.168.1.254
down ip route del 192.168.60.0/24 via 192.168.1.254
- 执行
ifdown eth0 && ifup eth0即可加载或卸载路由 -
务必同时写
up和down,否则重启网络时旧路由残留,易引发冲突
别踩坑:这些方式不推荐
/etc/rc.local看似简单,但问题明显:
- 执行太晚,NFS挂载、systemd服务可能已失败
- 网卡还没up,
ip route add会报“Network is unreachable” - 没有自动清理逻辑,
systemctl restart network后新旧路由并存 - 在 cloud-init 或 NetworkManager 环境下基本不可靠
临时命令如ip route add本身不提供持久能力,也不能直接把命令行抄进配置文件——要转成对应发行版认可的格式再写入。



















