当前位置: 首页
系统平台
Linux怎么配置静态路由永久生效 Linux下route与ip命令详解

Linux怎么配置静态路由永久生效 Linux下route与ip命令详解

热心网友 时间:2026-04-29
转载

Linux怎么配置静态路由永久生效 Linux下route与ip命令详解

Linux怎么配置静态路由永久生效 Linux下route与ip命令详解

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

很多朋友在配置Linux静态路由时,都踩过同一个坑:明明用route命令加得好好的,怎么一重启服务器,路由就“消失”了呢?

这里必须明确一个核心概念:无论是传统的route命令,还是更现代的ip route,它们所做的修改都仅限于当前运行的内核,属于“临时操作”。想让路由配置在系统重启后依然坚挺,必须依赖系统层面的配置文件或网络管理机制。下面,我们就来把这两类工具和不同系统的永久配置方法彻底讲清楚。

route 命令只管当前会话,别指望它永久保存

先说说这位“老前辈”。route命令语法直观,上手快,但功能也相对受限。它直接操作内核路由表,完全不参与系统的启动流程。举个例子,你执行了route add -net 10.20.0.0/16 gw 10.10.1.1,用route -n查看,条目确实立刻出现了。但只要执行一次systemctl restart network,或者干脆重启机器,这条路由就会被打回原形。

正因为这种“临时性”,一些让人头疼的错误现象就出现了:

  • 路由加上了,但ping 10.20.0.1就是不通——问题可能出在网关本身不可达,而route命令可不会帮你校验网关的连通性。
  • 添加路由后,SSH连接突然断了——这很可能是新路由覆盖或与默认路由发生了冲突,route同样不会给出任何优先级提示。
  • 想用route del删除路由,却报错SIOCDELRT: No such process——这通常是删除时指定的目标格式不匹配,比如添加时用了-net参数,删除时却没带netmask

使用route时,有几个参数细节必须留意:

  • -host(主机路由)和-net(网络路由)必须显式指定,不能省略。直接写route add 10.20.0.0/16是会报错的。
  • gw(网关)和dev(出口设备)两者不能同时省略,至少得填一个。如果只写dev eth0,意思是指向直连子网,数据包不经过网关。
  • 查看路由时,-n参数不是可选项,而是强烈建议加上。不加的话,命令会尝试进行DNS反向解析,在缺乏DNS服务的环境里,这个动作会卡住很久。

ip route 更推荐用于临时操作,兼容性与语义更清晰

如果你需要做临时路由调整,那么ip route(来自iproute2工具套件)通常是更好的选择。它比route更现代,参数设计也更统一。添加同一条路由,命令是ip route add 10.20.0.0/16 via 10.10.1.1 dev eth0,你看,不需要区分-net,也不需要写netmask,直接支持CIDR格式,清爽多了。

它确实解决了route的一些痛点:

  • 删除更宽松ip route del 10.20.0.0/16就行,不必把添加时的viadev参数再重复写一遍。
  • 控制更精细:可以方便地设置路由优先级(metric 100),或者用ip route replace直接替换已存在的条目。
  • 对IPv6原生支持:直接使用ip -6 route即可,而在很多老版本系统里,route -6这个命令根本不存在。

不过,请务必记住关键一点:ip route本质上和route一样,它只修改运行时的路由表,并不会将配置写入任何文件。所以,它依然是“临时”的。

CentOS/RHEL 系统永久路由靠 /etc/sysconfig/static-routes

那么,在CentOS或RHEL 6/7这类使用传统network-scripts的系统里,永久路由到底怎么配?答案是依靠/etc/sysconfig/static-routes这个文件。它不是脚本,而是一个纯文本的规则集,系统服务/etc/sysconfig/network-scripts/ifup-routes会在网络接口启动时自动读取并加载它。

文件内容的正确写法是这样的:

any net 10.20.0.0/16 gw 10.10.1.1
any net 192.168.5.0/24 dev eth1

这里有几个关键点需要敲黑板:

  • 每行必须以any开头,不要再写eth0之类的具体接口名(那是已经被弃用的旧版写法)。
  • 掩码推荐使用CIDR格式(/16),虽然net 10.20.0.0 netmask 255.255.0.0这种写法也合法。
  • 一行就是一条路由规则,不支持合并。空行和以#开头的注释行会被忽略。
  • 修改文件后,必须重启网络服务(RHEL7用systemctl restart network,RHEL6用service network restart)才能生效,简单的reload是不行的。

另外,千万别图省事,把route add命令塞进/etc/rc.local。因为像NFS挂载、容器网络这些服务,它们的启动顺序可能早于rc.local,届时会因为找不到路由而失败。

Ubuntu/Debian 系统永久路由必须走 Netplan YAML

如果你用的是Ubuntu 18.04以上或Debian 10以上的系统,那套方法就完全行不通了。这些系统默认使用Netplan管理网络,静态路由必须写在/etc/netplan/*.yaml配置文件里。

来看一个典型的配置片段:

network:
  version: 2
  ethernets:
    eth0:
      addresses: [10.10.1.10/24]
      routes:
        - to: 10.20.0.0/16
          via: 10.10.1.1
          on-link: true

配置Netplan时,有几个细节容易出错:

  • on-link: true这个选项表示网关与本机在同一子网,发包时不查询ARP缓存。如果网关在另一个子网,这项必须删除或设为false
  • 当配置中同时存在默认路由和其他静态路由时,Netplan不会自动调整路由优先级(metric),如果出现多条默认路由,必须手动设置metric值来避免冲突。
  • 修改YAML文件后,必须执行sudo netplan apply来应用。注意,这个命令会重新配置所有网络接口,很可能导致当前的SSH连接中断。

最后提一个通用且极易被忽略的要点:无论是static-routes还是Netplan,配置系统都不会在写入时验证网关的可达性。即使你配置的gw 192.168.99.1当前根本ping不通,路由条目依然会被成功添加到系统里,只是所有转发尝试都会失败。因此,排查路由问题时,别只看ip route show有没有那条记录,更要用ip route get 10.20.0.5这样的命令,去查看到达目标地址的真实下一跳路径。

来源:https://www.php.cn/faq/2388409.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Linux怎么查看文件的最后访问时间 Linux下stat命令参数详解

Linux怎么查看文件的最后访问时间 Linux下stat命令参数详解

Linux怎么查看文件的最后访问时间 Linux下stat命令参数详解 说起查看文件的最后访问时间,也就是 atime,很多人的第一反应就是 stat 命令。没错,它确实是默认就显示这个信息。但这里有个常见的“坑”:如果你不仔细分辨,很容易把 atime 和文件的修改时间(mtime)或状态变更时间

时间:2026-04-29 14:13
如何在 Win11 中修改默认截图保存路径 更改系统截图文件夹位置方法

如何在 Win11 中修改默认截图保存路径 更改系统截图文件夹位置方法

如何在 Windows 11 中自定义截图保存路径?五种方法全解析 用 Windows 11 截图,无论是快捷键 Win + Shift + S、Win + PrtScn,还是自带的截图工具,默认路径总是那个熟悉的 C: Users [用户名] Pictures Screenshots。但如果你想把

时间:2026-04-29 14:13
Win10怎么设置家长控制_Win10家长控制教程【避坑】

Win10怎么设置家长控制_Win10家长控制教程【避坑】

Win10家长控制功能避坑指南:云端策略是关键,本地设置不独立 想在Windows 10里管住孩子的上网时间、应用和网站?这事儿的关键,其实不在你电脑本地怎么折腾。必须明确一点:完整的家长控制功能,其核心引擎是微软的“家庭组”云端策略。本地设置只是个“操作面板”,所有限制的生效,都绑死在一个前提上—

时间:2026-04-29 14:13
Linux查看CPU和内存占用情况 top和free命令【教程】

Linux查看CPU和内存占用情况 top和free命令【教程】

别被top的“内存耗尽”骗了:看懂a vailable才是关键 在Linux系统里判断内存是否真的不够用,一个最常见的误区就是只看top命令。很多人一看到used值接近总量就慌了,其实这很可能是个假警报。真正决定系统内存余量的,是free命令输出的a vailable字段,而不是top里的used或

时间:2026-04-29 14:13
Linux下如何查看进程的系统调用耗时 Strace -c命令用法

Linux下如何查看进程的系统调用耗时 Strace -c命令用法

Linux下如何查看进程的系统调用耗时 Strace -c命令用法 strace -c 统计系统调用耗时的原理和适用场景 先明确一点:strace -c 提供的不是实时监控,而是一份“事后总结报告”。程序运行结束后,它会汇总统计每个系统调用的调用次数、总耗时、平均耗时、错误次数,以及最关键的一项——

时间:2026-04-29 14:12
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程