侧边栏壁纸
  • 累计撰写 27 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

CentOS 8 设置永久静态路由的方法详解

陳小航
2025-10-25 / 0 评论 / 0 点赞 / 2 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

扫码_搜索联合传播样式-标准色版.png
一、概述

CentOS 8 系统中,配置静态路由可以让网络流量按照指定路径转发。
然而与旧版本不同,在 rc.local 文件中配置静态路由已不再生效
若要实现 系统重启后仍然生效的永久静态路由,必须在
/etc/sysconfig/network-scripts/route-<接口名> 文件中进行配置。

本文将详细讲解配置步骤、语法说明、示例及验证方法。


二、配置文件路径

静态路由配置文件的位置:

/etc/sysconfig/network-scripts/route-eth0

⚠️ 注意:

  • eth0 是网卡名称,请根据实际网卡名称修改,例如 ens33eno1 等。

  • 如果该文件不存在,可以手动创建。


三、静态路由语法格式

在该文件中,每一行代表一条路由规则,格式如下:

[$Destination]/[$Subnet_Mask] via [$Next_Hop] dev [$Interface]

参数说明

参数

含义

示例

[$Destination]

目标网段

192.168.10.0

[$Subnet_Mask]

子网掩码(CIDR 格式)

24(即 255.255.255.0)

[$Next_Hop]

下一跳地址(网关或路由器)

192.168.1.1

[$Interface]

对应网卡接口

eth0


四、配置示例

假设服务器网卡为 eth0,需要添加如下静态路由:

  • 192.168.10.0/24 网段的流量通过 192.168.1.1 转发

  • 172.16.5.0/24 网段的流量通过 192.168.1.2 转发

则编辑文件:

vi /etc/sysconfig/network-scripts/route-eth0

添加内容如下:

192.168.10.0/24 via 192.168.1.1 dev eth0
172.16.5.0/24 via 192.168.1.2 dev eth0

保存并退出。


五、应用配置

运行以下命令重新加载网络服务:

nmcli connection reload
systemctl restart network

如果使用的是 NetworkManager 管理网络,也可以使用:

nmcli connection up eth0

或者直接重启系统让配置自动生效:

reboot

六、验证静态路由

重启或重载后,可通过以下命令验证:

ip route show

或简写:

ip r

输出示例:

default via 192.168.1.1 dev eth0 proto static metric 100
192.168.10.0/24 via 192.168.1.1 dev eth0
172.16.5.0/24 via 192.168.1.2 dev eth0

若路由表中出现刚添加的网段,即表示配置成功。


七、删除或修改路由

  • 删除:直接在 route-eth0 文件中删除对应行,然后重启网络服务。

  • 修改:更新目标或下一跳后保存,再执行

    systemctl restart network
    

八、临时路由(非永久)

如果仅希望临时添加一条路由,可使用命令:

ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0

⚠️ 注意:此方式在重启后会失效,仅适用于临时测试。


九、总结

场景

配置文件路径

特点

永久静态路由

/etc/sysconfig/network-scripts/route-ethX

开机自动加载,推荐使用

临时路由

命令行 ip route add

重启失效,仅测试使用

NetworkManager 管理

nmcli connection modify

更灵活但操作更复杂

十、常见问题(FAQ)

❓1. 为什么重启后静态路由没有生效?

常见原因如下:

  • 配置文件命名错误(应为 route-<网卡名>,如 route-ens33)。

  • 网卡名称写错,系统启动时无法加载对应配置。

  • 文件格式或语法错误(多余空格、缺少 via、拼写错误等)。

  • 使用 NetworkManager 管理网络但未重载连接,可尝试:

    nmcli connection reload
    nmcli connection up <连接名>
    

❓2. 如何确定我的网卡名称?

执行以下命令查看:

ip link show

输出示例:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...

说明网卡名为 ens33,则应编辑文件:

/etc/sysconfig/network-scripts/route-ens33

❓3. 如何为多个网卡配置路由?

每个网卡单独一个路由配置文件,例如:

  • /etc/sysconfig/network-scripts/route-eth0

  • /etc/sysconfig/network-scripts/route-eth1

系统启动时会自动分别加载。


❓4. 如何添加默认路由(Default Gateway)?

如果希望通过指定网关转发所有外网流量,可以添加:

default via 192.168.1.1 dev eth0

⚠️ 建议仅在主网卡配置默认路由,否则可能导致路由冲突。


❓5. 如何验证路由是否真正生效?

执行:

ip route show

或查看具体路由匹配情况:

ip route get 8.8.8.8

如果输出中包含期望的 via 网关地址,说明路由生效。


❓6. 如何删除一条临时路由?

使用:

ip route del 192.168.10.0/24 via 192.168.1.1 dev eth0

删除永久路由则需手动编辑 route-eth0 文件并重启网络。


说明该路由已经存在。可先删除旧路由:

ip route del 192.168.10.0/24

然后重新添加。


❓8. 我用的是 Cloud-init 的云服务器,为什么 route 文件不起作用?

部分云镜像(如阿里云、AWS、OpenStack)由 cloud-init 管理网络配置。
解决方案:

  • 禁用 cloud-init 网络管理功能:

    touch /etc/cloud/cloud-init.disabled
    
  • 或使用 NetworkManager / nmcli 命令进行路由配置。

0

评论区