
一、概述
在 CentOS 8 系统中,配置静态路由可以让网络流量按照指定路径转发。
然而与旧版本不同,在 rc.local 文件中配置静态路由已不再生效。
若要实现 系统重启后仍然生效的永久静态路由,必须在/etc/sysconfig/network-scripts/route-<接口名> 文件中进行配置。
本文将详细讲解配置步骤、语法说明、示例及验证方法。
二、配置文件路径
静态路由配置文件的位置:
/etc/sysconfig/network-scripts/route-eth0
⚠️ 注意:
eth0是网卡名称,请根据实际网卡名称修改,例如ens33、eno1等。如果该文件不存在,可以手动创建。
三、静态路由语法格式
在该文件中,每一行代表一条路由规则,格式如下:
[$Destination]/[$Subnet_Mask] via [$Next_Hop] dev [$Interface]
参数说明
四、配置示例
假设服务器网卡为 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
⚠️ 注意:此方式在重启后会失效,仅适用于临时测试。
九、总结
十、常见问题(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文件并重启网络。
❓7. 配置后提示“RTNETLINK answers: File exists”?
说明该路由已经存在。可先删除旧路由:
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 命令进行路由配置。
评论区