搜索

route删除永久路由

发表于 2026-10-17 05:58:13 来源:烟消火灭网
```html route删除永久路由

有人凌晨三点在机房敲下 route del -net 10.0.0.0/8,然后重启网络,久路发现那条路由又回来了。除永他以为命令没生效,久路其实只是除永没搞懂 route 和持久化配置之间的那道缝。

Linux 里用 route 命令加的久路路由,默认都是除永临时的。你 route add 完当下能用,久路ping 也通,除永但只要重启网络服务或者机器重启,久路这条路由就没了。除永这叫运行时路由,久路活在内存里,除永不落盘。久路想让它活过重启,除永得往配置文件里写。反过来,你要删一条永久路由,光敲 route del 是不够的——你得先找到它藏在哪个文件里,把那行删掉,再让系统重新加载。否则你删了内存里的,下次启动它又从文件里爬出来。

我见过一个运维,在 CentOS 7 上折腾了半小时。他 route del -net 192.168.100.0/24,敲完 route -n 一看确实没了。然后 systemctl restart network,再一看,路由又回来了。他以为 route 命令有 bug。其实那条路由写在 /etc/sysconfig/network-scripts/route-eth0 里,格式是 192.168.100.0/24 via 10.0.0.1。你不删这个文件里的行,重启网络时脚本会重新执行 ip route add,路由自然复活。

不同发行版和网络管理工具,永久路由的存放位置不一样。这是最让人头疼的地方。RHEL/CentOS 系用 network-scripts,路由文件通常叫 route- 或者 route6-。Ubuntu 16.04 之前用 /etc/network/interfaces,里面写 up route add -net ...。到了 Netplan 时代,路由写在 YAML 里,routes: 下面。如果你用 NetworkManager,那又可能是 nmcli con mod 加 +ipv4.routes。删的时候得对应着来。

一个具体的删除流程

假设你在 CentOS 7 上,网卡是 ens33,有一条永久路由 172.16.0.0/16 via 192.168.1.254。你 route -n 能看到它,ip route show 也能看到。现在要彻底删掉。

第一步,别急着敲 route del。先去看 /etc/sysconfig/network-scripts/ 目录下有没有 route-ens33 这个文件。有的话,打开,找到那一行,删掉。如果文件里只有这一条路由,删完文件就空了,你可以直接 rm 掉整个文件,也可以留个空文件——留空文件更稳妥,免得下次有人误加。如果文件不存在,那路由可能写在 /etc/sysconfig/static-routes 里,老系统常见。那个文件格式是 any net 172.16.0.0 netmask 255.255.0.0 gw 192.168.1.254,找到对应行删掉。

第二步,如果你用的是 NetworkManager 并且路由是通过 nmcli 加的,那得用 nmcli con mod ens33 -ipv4.routes "172.16.0.0/16 192.168.1.254" 来移除。注意那个减号,是移除而不是覆盖。然后 nmcli con up ens33 重新激活。

第三步,删完配置文件,再执行 route del -net 172.16.0.0/16 gw 192.168.1.254 清掉内存里的。顺序其实可以反过来,但先删文件再删内存更保险。最后 systemctl restart network 或者 nmcli con reload,再 route -n 确认。如果那条路由没再出现,才算真删干净了。

有个坑:route del 默认只删匹配的第一条。如果有多条同目标但不同网关的路由,你得指定 gw 或者 dev 才能删对。另外,route 命令在较新的发行版里已经被 ip route 取代了,route 只是 net-tools 包里的兼容命令。有些最小化安装的系统压根没装 net-tools,你敲 route 会提示 command not found。这时候用 ip route del 172.16.0.0/16 via 192.168.1.254 更直接。

我自己的习惯是,改任何永久路由之前,先 cp 一份配置文件到 /tmp。有次手快,在 route-ens33 里多删了一行,结果一台数据库备机的跨网段复制断了。恢复花了两分钟,但心跳漏了好几拍。永久路由这东西,写进去容易,删的时候得带着点敬畏——它不像临时路由,删错了顶多重启网络,永久路由删错,可能得翻备份或者凭记忆重写。

还有一点,如果你用 ip route del 删了永久路由对应的运行时条目,但没动配置文件,那 ip route show 里确实没了。可一旦有人执行 systemctl restart network 或者机器重启,它又回来了。这时候别怀疑人生,去翻配置文件就对了。判断一条路由是不是永久的,最简单的办法:route -n 看到它,然后 grep -r "172.16.0.0" /etc/sysconfig/network-scripts/,能搜到就是永久的。

删永久路由,本质上是在删一个“会自动恢复的运行时状态”。你得同时干掉两个地方:内存里的和磁盘上的。只干一个,等于没干。

```
随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by route删除永久路由,烟消火灭网   sitemap

回顶部