永久静态路由必须写入系统网络配置文件,centos/rhel用/etc/sysconfig/network-scripts/route-接口名,ubuntu/debian用/etc/netplan/*.yaml配置routes字段,禁用rc.local等临时方式。

添加永久静态路由不能只靠命令行,必须写入系统网络配置文件,否则重启就失效。不同发行版机制差异大,不能套用同一套操作。
CentOS/RHEL 系统:用 route-iface 文件
这是最标准、最可靠的方式,适用于使用 network-scripts 的系统(如 CentOS 7/8、RHEL 7/8)。
- 创建或编辑对应网卡的路由文件,路径为 /etc/sysconfig/network-scripts/route-接口名(例如
route-ens33) - 文件内容按纯文本格式写,不加命令前缀,每行一条路由:
10.20.30.0/24 via 192.168.1.254 dev ens33 - 保存后执行
sudo systemctl restart network生效(不是networking) - 验证:运行
ip route show,确认目标路由已出现且未被覆盖
Ubuntu/Debian(Netplan 管理):改 YAML 配置
Ubuntu 17.10+ 默认用 Netplan,/etc/network/interfaces 和 rc.local 不再生效。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 编辑
/etc/netplan/*.yaml(如01-network-manager-all.yaml) - 在对应网口配置块下缩进两个空格,添加
routes字段:routes:<br> - to: 10.20.30.0/24<br> via: 192.168.1.254<br> on-link: true
- 保存后运行
sudo netplan apply;报错时加--debug查 YAML 格式问题
通用备选方案:static-routes(仅限 RHEL/CentOS)
适用于需要兼容旧脚本或 network 服务管理的场景,但不如 route-iface 推荐。
- 创建
/etc/sysconfig/static-routes(若不存在) - 写入格式为:
any net 10.20.30.0/24 gw 192.168.1.254 - 该文件由
/etc/init.d/network启动时自动读取,优先级高于rc.local - 注意:
any表示不限定接口;若需指定设备,可换为接口名(如ens33)
别踩坑:这些方式不推荐
以下方法看似简单,实际隐患多,容易导致启动失败、NFS 挂载异常或路由冲突:
-
往
/etc/rc.local里写route add或ip route add:它在所有服务启动完才执行,NFS、Docker 等依赖网络的服务可能已初始化失败 -
直接改
/etc/sysconfig/network加GATEWAY=:这只影响默认网关,不能设非默认静态路由 -
用废弃的
route命令配永久路由:现代系统中route已被标记为过时,ip route才是标准工具










