route命令添加的静态路由重启即失效,永久生效需依赖配置文件:centos/rhel用/etc/sysconfig/static-routes,ubuntu/debian用netplan yaml;ip route更现代但同样临时。

route 命令添加的静态路由重启即失效,不是永久配置;真正能持久生效的,得靠配置文件或系统级网络管理机制,而不是命令行临时操作。
route 命令只管当前会话,别指望它永久保存
route 是传统工具,语法直观但功能受限,仅作用于内核路由表,不参与系统启动流程。你执行 route add -net 10.20.0.0/16 gw 10.10.1.1 后,route -n 能立刻看到,但只要 systemctl restart network 或机器重启,这条就没了。
常见错误现象包括:
- 明明加了路由,
ping 10.20.0.1却不通——可能网关本身不可达,route不校验网关连通性 - 加完路由后
ssh断连——因为默认路由被覆盖或冲突,route没有优先级提示 - 用
route del删除失败,报SIOCDELRT: No such process——目标条目格式不匹配(比如用了-net却没带netmask)
参数差异要点:
-
-host和-net必须显式指定,不能省略;route add 10.20.0.0/16会报错 -
gw和dev不能同时省略,至少填一个;若只写dev eth0,表示直连子网,不走网关 -
-n不是可选,而是必须加——否则 DNS 反查会卡住,尤其在无 DNS 环境下
ip route 更推荐用于临时操作,兼容性与语义更清晰
ip route 属于 iproute2 套件,比 route 更现代、参数更统一。例如添加同一条路由:ip route add 10.20.0.0/16 via 10.10.1.1 dev eth0,不需要 -net 或 netmask,CIDR 格式直接支持。
它解决了一些 route 的痛点:
- 删除时更宽松:
ip route del 10.20.0.0/16即可,不用重复写via和dev - 支持更细粒度控制:比如
ip route add ... metric 100设置优先级,ip route replace替换已存在条目 - 对 IPv6 原生支持:
ip -6 route,而route -6在多数老发行版里压根不可用
但注意:ip route 同样是临时的——它和 route 一样,只改运行时路由表,不写入任何配置文件。
CentOS/RHEL 系统永久路由靠 /etc/sysconfig/static-routes
在 CentOS 6/7(使用 network-scripts)中,唯一被 network 服务原生识别的永久路由方式是 /etc/sysconfig/static-routes 文件。它不是脚本,是纯文本规则集,由 /etc/sysconfig/network-scripts/ifup-routes 在接口 up 时自动加载。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
正确写法示例:
any net 10.20.0.0/16 gw 10.10.1.1 any net 192.168.5.0/24 dev eth1
关键点:
- 必须以
any开头,不能写eth0或其他接口名(那是旧版写法,已弃用) - 不支持 CIDR 写法以外的掩码表达,
net 10.20.0.0 netmask 255.255.0.0也合法,但推荐统一用/16 - 每行只能一条路由;空行或注释(
#)会被忽略 - 修改后需
systemctl restart network(RHEL7)或service network restart(RHEL6)才生效,不是 reload
不要往 /etc/rc.local 里塞 route add——NFS 挂载、容器网络等依赖早于 rc.local 执行的服务会找不到路由。
Ubuntu/Debian 系统永久路由必须走 Netplan YAML
Ubuntu 18.04+ 和 Debian 10+ 默认用 Netplan 管理网络,静态路由必须写进 /etc/netplan/*.yaml,不能用 static-routes 或 rc.local。
典型配置片段:
network:
version: 2
ethernets:
eth0:
addresses: [10.10.1.10/24]
routes:
- to: 10.20.0.0/16
via: 10.10.1.1
on-link: true
注意:
-
on-link: true表示网关与本机在同一子网,不查 ARP 缓存直接发包;若网关跨子网,此项必须删掉或设为false - Netplan 不支持“默认路由 + 静态路由”混用时的 metric 自动调整,多条默认路由需手动设
metric避免冲突 - 改完必须执行
sudo netplan apply,且该命令会重置所有接口——正在 SSH 的连接大概率中断
Netplan 的 YAML 缩进极其敏感,少一个空格就会 Invalid YAML 报错,建议先用 netplan try 验证。
永久路由最易被忽略的点:网关可达性验证不在配置阶段发生。哪怕你把 gw 192.168.99.1 写进 static-routes 或 Netplan,只要该 IP 当前 ping 不通,路由条目照常加入,但实际转发失败——得靠 ip route get 10.20.0.5 查真实下一跳,而不是只看 ip route show 有没有那行。










