在 CentOS 系统的网络管理中,路由策略是实现复杂网络需求(如多出口、基于源地址的路由等)的关键技术,随着网络拓扑的变更或策略的失效,正确地删除不再需要的路由策略同样重要,这不仅能够清理系统配置,避免潜在的路由冲突,还能确保网络行为的可预测性,本文将详细介绍在 CentOS 中如何查看、删除路由策略,并确保配置的持久化。

理解路由策略与路由表
在深入删除操作之前,必须清晰地理解两个核心概念:路由策略和路由表。
路由表:这是一个简单的路由规则集合,包含了目的地、网关、子网掩码和出口设备等信息,系统默认拥有多个路由表,其中最主要的是
main表(ID为254)和default表(ID为253),我们可以创建自定义的路由表来隔离不同场景下的路由规则。路由策略:路由策略本身不包含具体的路由信息,它的作用是“决策”,它根据数据包的某些属性(如源IP地址、目标IP地址、入站接口等),来决定应该使用哪个路由表来查找转发路径,每个策略都有一个唯一的优先级(pref),数值越小,优先级越高。
当一个数据包进入系统时,内核会:
- 遍历路由策略列表,找到第一个匹配该数据包的策略。
- 根据该策略的指示,去指定的路由表中查找具体的路由条目。
- 找到匹配的路由后,进行转发。
“删除路由策略”指的是删除这个决策规则,而“删除路由”则是指删除某个具体路由表中的条目,两者操作对象不同,但通常需要协同进行。
删除路由策略的详细步骤
删除路由策略是一个需要谨慎操作的过程,遵循“先查看,再删除”的原则是明智之举。
第一步:查看当前的路由策略
使用 ip rule 命令可以查看当前系统中所有的路由策略。
ip rule show # 或者使用缩写 ip ru list
输出结果可能如下所示:
0: from all lookup local
32765: from 192.168.10.0/24 lookup 100
32766: from all lookup main
32767: from all lookup default 这里的每一行代表一个策略,我们来解读一下:
0:和32766:、32767:是系统默认的策略,通常不建议手动删除。32765:是我们可能添加的自定义策略,它的含义是:所有源IP地址属于168.10.0/24网段的数据包,都去查找ID为100的路由表。
第二步:查看指定路由表的内容
在删除策略前,了解它所指向的路由表内容是很有帮助的,这可以帮助我们确认该策略是否确实已不再需要。
# 查看ID为100的路由表内容 ip route show table 100
输出可能如下:

default via 10.0.0.1 dev eth1 这表明,匹配该策略的流量默认通过 eth1 网卡,经由网关 0.0.1 发送。
第三步:删除路由策略
删除路由策略最精确、最安全的方式是使用其优先级(pref)作为标识。
# 语法:ip rule del [ pref NUMBER ] # 示例:删除优先级为 32765 的策略 sudo ip rule del pref 32765
执行后,可以再次使用 ip rule show 来验证该策略是否已被成功删除。
你也可以尝试通过策略的完整内容来删除,sudo ip rule del from 192.168.10.0/24 table 100,但如果存在多条相似的策略,这种方式可能会产生歧义或失败,强烈推荐使用优先级进行删除。
第四步:删除路由表中的路由条目(可选但推荐)
如果一个路由表(如上面的 table 100)是专门为某个策略创建的,那么在删除策略后,该表内的路由条目通常也不再需要了,为了保持系统的整洁,应该一并清理。
# 语法:ip route del [ ROUTE ] table TABLE_ID # 示例:删除表100中的默认路由 sudo ip route del default via 10.0.0.1 dev eth1 table 100
执行完毕后,可以再次检查 ip route show table 100,确认该表是否已清空。
为了方便查阅,下表小编总结了核心命令:
| 操作目的 | 命令 | 示例 |
|---|---|---|
| 查看所有策略 | ip rule show | ip rule show |
| 查看指定路由表 | ip route show table [ID/Name] | ip route show table 100 |
| 删除指定策略 | ip rule del pref [Priority] | ip rule del pref 32765 |
| 删除表内路由 | ip route del [Route] table [ID/Name] | ip route del default via 10.0.0.1 table 100 |
确保删除操作的持久化
使用 ip 命令所做的修改是临时的,在系统重启后会失效,要使删除操作永久生效,需要修改相关的网络配置文件,在 CentOS 7/8 中,通常通过 NetworkManager 的脚本文件来管理。
假设策略和路由是与 eth1 接口关联的,相关的配置文件位于 /etc/sysconfig/network-scripts/ 目录下。
删除策略规则:
编辑或删除rule-eth1文件,该文件内容可能如下:from 192.168.10.0/24 lookup 100要永久删除此策略,可以直接删除这个文件,或者清空其内容。

删除路由规则:
编辑或删除route-eth1文件,该文件内容可能如下:default via 10.0.0.1 dev eth1 table 100同样,删除该文件或清空其内容即可。
修改完成后,重启网络服务以使配置生效:
sudo systemctl restart network # 或者在 CentOS 8/RHEL 8 中 # sudo nmcli connection reload # sudo nmcli connection down eth1 && sudo nmcli connection up eth1
通过以上步骤,您就可以干净、彻底地在 CentOS 系统中删除不再需要的路由策略和相关的路由规则,并确保系统重启后配置依然有效。
相关问答FAQs
问题1:删除路由策略和删除路由有什么根本区别?我该先操作哪个?
解答:这是一个非常关键的区别。路由策略是“决策者”,它决定一个数据包应该去哪个“地图”(路由表)查找路径,而路由是“地图”上的具体路径信息。 两者的关系是“策略指向表,表内含路由”。
正确的操作顺序通常是:先删除路由策略,再删除路由表中的路由条目。
因为只要策略存在,即使你删除了路由表里的所有路由,匹配该策略的流量仍然会尝试去查找那个(现在是空的)路由表,可能导致连接失败,先删除策略,相当于切断了流量到这张表的入口,然后再清理表内不再使用的路径,这样逻辑更清晰,也更安全。
问题2:我使用 ip rule del 命令成功删除了策略,为什么服务器重启后策略又恢复了?
解答:这是因为 ip 命令的修改是运行时生效的,它只修改了内核当前内存中的路由策略数据库,并没有写入到任何持久化的配置文件中,当系统重启时,网络服务会根据磁盘上的配置文件(如 /etc/sysconfig/network-scripts/rule-<interface>)来重新构建路由规则,所以被删除的策略会“复活”。
要永久删除,你必须找到并修改创建该策略的配置文件,通常在 /etc/sysconfig/network-scripts/ 目录下,查找名为 rule-<interface_name> 的文件,删除或注释掉对应的规则行,然后重启网络服务,这样,在下次启动时,系统就不会再加载这个策略了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复