在管理和维护 CentOS 服务器的网络环境时,路由表的控制是一项基础且关键的任务,有时,由于网络拓扑变更、策略调整或故障排查,我们需要精确地删除不再需要的路由条目,本文将深入探讨如何在 CentOS 系统中永久删除路由,确保配置在系统重启后依然生效。

理解临时删除与永久删除
必须区分两种删除操作:临时删除和永久删除。
- 临时删除:使用
ip route del或route del命令直接操作内核路由表,这种更改立即生效,但仅限于当前运行时,一旦服务器重启或网络服务重启,被删除的路由会根据配置文件重新加载。 - 永久删除:修改系统的网络配置文件,从根本上移除路由的定义,这样,在每次系统启动或网络服务加载时,该路由都不会被添加到路由表中。
我们的目标是实现后者,即永久删除。
临时删除路由的方法(作为对比)
在介绍永久删除方法之前,我们先回顾一下临时删除的命令,这在测试和故障排除时非常有用。
# 使用 ip 命令(推荐) ip route del 192.168.100.0/24 via 192.168.1.254 dev eth0 # 使用旧的 route 命令 route del -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.254
执行上述命令后,使用 ip route show 或 route -n 可以看到该路由已消失,但请记住,这只是暂时的。
永久删除路由的核心方法
CentOS 的不同版本使用了不同的网络管理工具,因此永久删除路由的方法也有所区别,我们将主要讨论 CentOS 7/8 和更早版本(如 CentOS 6)的常见做法。
针对 CentOS 7/8 (使用 NetworkManager)
CentOS 7 及以后的版本默认使用 NetworkManager 来管理网络,最推荐的命令行工具是 nmcli。
查看当前网络连接
需要知道你要修改的是哪个网络连接(Connection)。nmcli connection show
输出会列出所有连接,
eth0或Wired connection 1,记下你要操作的连接名称。查看连接的静态路由配置
假设连接名为eth0,可以查看其当前配置的静态路由。
nmcli connection show eth0 | grep ipv4.routes
这会显示为该连接手动配置的所有路由。
删除指定的静态路由
使用nmcli connection modify命令来移除路由,语法是在ipv4.routes属性前使用减号 。# 删除一条到 192.168.100.0/24 网段,网关为 192.168.1.254 的路由 nmcli connection modify eth0 -ipv4.routes "192.168.100.0/24 192.168.1.254"
重新激活连接使配置生效
修改配置文件后,需要让连接重新加载配置。nmcli connection up eth0
路由已被永久删除,即使重启系统,它也不会再出现。
针对 CentOS 6 及更早版本(使用 network-scripts)
在较旧的 CentOS 版本中,网络配置主要通过 /etc/sysconfig/network-scripts/ 目录下的脚本文件管理,静态路由通常定义在 route-<接口名> 文件中。
编辑路由配置文件
要删除属于eth0接口的路由,需要编辑文件/etc/sysconfig/network-scripts/route-eth0。vi /etc/sysconfig/network-scripts/route-eth0
删除对应的路由行
文件内容通常如下所示:# 默认网关(通常在 ifcfg-eth0 中定义) # default via 192.168.1.1 dev eth0 # 静态路由 192.168.100.0/24 via 192.168.1.254 dev eth0 10.10.20.0/24 via 192.168.1.253 dev eth0要永久删除到
168.100.0/24的路由,只需删除或注释掉(在行首加 )对应的行即可,修改后保存文件。重启网络服务
为了让更改生效,需要重启网络服务。
service network restart
或者,在支持
systemd的 CentOS 7 中(如果使用此方法):systemctl restart network
方法对比与小编总结
为了更清晰地展示不同版本下的操作差异,下表进行了小编总结:
| CentOS 版本 | 主要管理工具 | 永久删除方法 | 核心命令/文件 |
|---|---|---|---|
| 7 / 8 | NetworkManager | 使用 nmcli 修改连接属性 | nmcli connection modify <name> -ipv4.routes "..." |
| 6 及更早 | network-scripts | 直接编辑 route-<接口> 文件 | /etc/sysconfig/network-scripts/route-eth0 |
验证路由是否已永久删除
无论采用哪种方法,验证都是最后一步,使用 ip route show 确认路由已从当前路由表中移除,最关键的一步是重启系统,再次检查路由表,确保被删除的路由没有重新出现。
# 查看当前路由表 ip route show # 重启系统 reboot # 重启后再次查看 ip route show
相关问答FAQs
Q1: 为什么我按照方法删除了路由,重启网络服务后它又出现了?
A: 这个问题通常由以下几个原因造成:
- 配置未生效:你可能只执行了临时删除命令(
ip route del),而没有修改持久化配置文件,请检查你是否正确使用了nmcli或编辑了route-<接口>文件。 - DHCP 服务器推送:如果你的网络接口是通过 DHCP 获取 IP 地址的,DHCP 服务器本身可能会配置并推送静态路由,在这种情况下,即使本地配置文件中没有该路由,网络服务重启后,DHCP 客户端会从服务器获取并重新添加它,你需要在 DHCP 服务器端移除该路由配置,或在本地接口配置中设置
PEERDNS=no和DEFROUTE=no等选项来拒绝某些 DHCP 选项。 - 其他配置源:检查是否有其他网络管理工具(如
systemd-networkd)或自定义脚本(如/etc/rc.d/rc.local)在网络启动时添加了路由。
Q2: nmcli connection modify 命令中的 +ipv4.routes 和 -ipv4.routes 有什么区别?
A: 这是 nmcli 用于管理多值属性(如路由、DNS)的语法糖:
+ipv4.routes "...":表示添加一条新的路由到现有列表中,如果已存在完全相同的路由,则此操作无效。-ipv4.routes "...":表示删除一条与指定内容完全匹配的路由,如果找不到匹配的路由,则此操作无效。ipv4.routes "...":表示覆盖整个路由列表,它会先清空所有现有的静态路由,然后将引号内的路由设置为唯一的路由。
在删除路由时,必须使用 -ipv4.routes,以确保只移除目标路由,而不影响其他已配置的静态路由。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复