服务器测评网
我们一直在努力

Linux路由怎么保存?Linux路由配置如何永久生效

在 Linux 系统运维中,实现路由规则的永久保存是确保网络连接稳定性的关键环节。核心上文归纳是:Linux 系统中使用 ip routeroute 命令添加的路由规则默认仅临时存放在内核内存中,系统重启后会自动失效;要实现路由的永久保存,必须根据发行版的不同,将路由配置写入网络管理服务的配置文件中(如 Netplan、NetworkManager 或传统 rc.local),并确保配置文件语法正确且服务生效。

Linux路由怎么保存?Linux路由配置如何永久生效

临时路由与永久路由的区别

在深入配置之前,必须理解 Linux 路由的工作机制,当管理员在命令行执行 ip route add 指令时,该规则直接被写入内核的路由表中,这种操作的优势是即时生效,便于调试,但缺点是易失性,一旦服务器重启或网络服务重启,内存中的数据会被清空,网络通信将因此中断,生产环境中的路由配置必须“持久化”,即把配置逻辑固化到磁盘文件中,由系统在启动过程中自动读取并加载。

基于 Netplan 的配置方案(Ubuntu 18.04+)

对于使用现代 Netplan 架构的 Ubuntu 版本,网络配置文件通常位于 /etc/netplan/ 目录下,后缀为 .yaml,这是目前最推荐的配置方式,因为它具有声明式和易于版本控制的特性。

配置步骤如下:

  1. 查找配置文件:使用 ls /etc/netplan/ 找到对应的 YAML 文件,01-netcfg.yaml

  2. 编辑文件:使用 root 权限打开文件,在对应的网络接口下添加 routes 字段,注意 YAML 对缩进极其敏感,必须使用空格而非 Tab 键。

    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: no
          addresses: [192.168.1.100/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
          routes:
            to: 10.0.0.0/16
              via: 192.168.1.254
              table: main

    在上述配置中,to 指定目标网段,via 指定下一跳网关。

  3. 应用配置:编辑完成后,执行 sudo netplan apply,该命令会立即验证语法并应用路由,无需重启,若配置有误,命令会报错并回滚,保证了系统的安全性。

基于 NetworkManager (nmcli) 的配置方案(CentOS 8+/RHEL 8+/Fedora)

在 RedHat 系的新版本中,传统的 network-scripts 已被弃用,NetworkManager 成为标准,使用 nmcli 工具修改连接配置是专业且高效的做法,它避免了直接编辑复杂配置文件可能带来的语法错误。

操作指令如下:

  1. 查看当前连接名称:执行 nmcli connection show,找到需要修改的网卡对应的 NAME(System eth0)。

    Linux路由怎么保存?Linux路由配置如何永久生效

  2. 添加静态路由:使用 nmcli connection modify 命令,语法格式为 ipv4.routes "目标网段 下一跳"

    sudo nmcli connection modify "System eth0" +ipv4.routes "192.168.2.0/24 192.168.1.254"

    注意命令中的 号,表示追加路由,如果使用 ipv4.routes(不带加号),则会覆盖现有的路由列表。

  3. 设置手动模式:如果接口原本是 DHCP,可能需要确保路由不会冲突,通常建议将接口设为静态,或在 DHCP 模式下谨慎使用。

  4. 重载连接:配置写入后,需要重启连接使其生效。

    sudo nmcli connection up "System eth0"

    此方法将路由信息保存在 /etc/NetworkManager/system-connections/ 目录下的对应文件中,重启后依然有效。

传统配置文件方案(CentOS 7/老版本 Debian)

对于较旧的系统或特定的运维环境,可能仍需使用传统的静态路由文件。

在 CentOS/RHEL 7 中:
路由配置通常保存在 /etc/sysconfig/network-scripts/route-<接口名> 文件中,针对 eth0 的路由文件为 route-eth0
格式如下:

168.2.0/24 via 192.168.1.254 dev eth0
10.0.0.0/8 via 192.168.1.1 dev eth0

编辑保存后,重启网络服务 systemctl restart network 即可。

在老版本 Ubuntu/Debian 中:
通过编辑 /etc/network/interfaces 文件,在接口定义块末尾添加 up ip route add ... 指令,虽然这种方法可行,但在现代系统中已不推荐,因为它依赖于脚本执行的顺序,不如 Netplan 规范。

通用方案:使用 /etc/rc.local

对于不熟悉特定发行版配置工具的管理员,或者在一些嵌入式、精简版的 Linux 系统中,rc.local 是一个“万能”的兜底方案,该脚本在系统启动过程的最后阶段执行。

Linux路由怎么保存?Linux路由配置如何永久生效

实现步骤:

  1. 确保 rc.local 服务开启:在现代 Systemd 系统中,rc-local.service 默认可能被禁用或文件不存在,需要手动创建 /etc/rc.local 文件并赋予执行权限 chmod +x /etc/rc.local

  2. 写入路由命令:在文件中添加 ip route add 命令。

    #!/bin/bash
    ip route add 192.168.2.0/24 via 192.168.1.254
    exit 0

虽然此方法简单直接,但不推荐作为生产环境的首选方案,因为它缺乏依赖检查(可能在网卡未 UP 时就执行了),且难以进行集中化管理,它仅作为在其他配置方法均无效时的备选手段。

验证与故障排查

配置完成后,必须进行严格的验证,首先使用 ip route showroute -n 查看当前内核路由表,确认目标路由是否存在,使用 ping 命令测试目标网段的连通性,如果路由未生效,应检查以下几点:

  1. 配置文件语法:特别是 YAML 的缩进和 nmcli 的引号使用。
  2. 网关可达性:确保配置的下一跳网关地址是当前直连网络可达的。
  3. 系统日志:使用 journalctl -xe 查看网络服务的报错信息,这通常是解决问题的关键线索。

相关问答

Q1:在 Linux 中配置静态路由时,如何指定路由的优先级(Metric 值)?
A: 路由的优先级由 Metric 值决定,数值越小优先级越高,在使用 ip route add 命令时,可以添加 metric 参数,ip route add 192.168.2.0/24 via 192.168.1.254 metric 100,在 Netplan 配置中,可以在 routes 字段下添加 metric: 100,在 NetworkManager (nmcli) 中,可以在路由字符串后添加 metric,如 "192.168.2.0/24 192.168.1.254 100",如果不指定,系统会根据内核算法自动分配一个默认值。

Q2:为什么我修改了配置文件并重启了网络服务,但使用 ip route 依然看不到新路由?
A: 这通常由三个原因导致,第一,配置文件语法错误导致服务未能成功加载,建议查看系统日志(如 journalctl -u NetworkManager/var/log/messages);第二,配置修改了错误的网卡接口,确保路由配置绑定在正在 UP 状态的接口上;第三,DHCP 覆盖了静态配置,如果接口同时开启了 DHCP 且 DHCP 服务器下发了同类路由,它可能会覆盖手动配置的静态路由,此时需要设置 DHCP 不会覆盖路由或关闭该接口的 DHCP。

希望以上关于 Linux 保存路由的详细方案能解决您的网络配置问题,如果您在具体的发行版操作中遇到报错,欢迎在评论区留言,我们可以进一步探讨具体的日志分析。

赞(0)
未经允许不得转载:好主机测评网 » Linux路由怎么保存?Linux路由配置如何永久生效