5154

Good Luck To You!

CentOS系统下如何使用旧命令添加静态路由并生效?

在网络管理中,路由是决定数据包从源头到目的地的路径的过程,对于大多数连接到互联网的设备,系统会自动配置一个默认路由,即所有未知目标网络的流量都通过一个默认网关发送,在更复杂的网络环境中,例如企业内网、数据中心或连接到特定“旧”网络段时,我们常常需要手动添加静态路由,以确保数据能够准确、高效地到达特定目的地,本文将详细介绍在 CentOS 系统中,如何通过命令行和配置文件两种方式添加静态路由,以满足访问特定网络(如“旧”路由或遗留网络)的需求。

CentOS系统下如何使用旧命令添加静态路由并生效?

理解路由基础

在开始操作之前,理解两个基本概念至关重要:默认路由和静态路由。

  • 默认路由:这是路由表中的“最后手段”,当一个数据包的目标地址在路由表中没有更具体的匹配项时,系统就会将其发送到默认网关,这是你的路由器或防火墙的 IP 地址。
  • 静态路由:这是由管理员手动配置的路由条目,它明确告诉系统:“要到达网络 A,请将数据包发送给网关 B”,这在需要通过特定路径访问某个网络段时非常有用,比如访问一个不通过默认网关的“旧”办公网络或一个专用的服务器集群。

在 CentOS 中,我们主要使用 ip 命令集来管理路由,它取代了较旧的 route 命令。

临时添加静态路由(重启后失效)

临时路由非常适合用于快速测试或临时调整,它的优点是立即生效,但缺点是系统重启后会自动丢失。

假设我们的 CentOS 服务器 IP 地址为 168.1.10,默认网关为 168.1.1,现在我们需要访问一个“旧”网络 16.50.0/24,而通往这个网络的网关是 168.1.254

查看当前路由表

我们可以使用以下命令查看当前的路由表:

ip route show
# 或者使用简写
ip r

输出可能类似于:

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10

添加临时路由

使用 ip route add 命令来添加新的路由条目,语法结构为:ip route add <目标网络> via <网关地址> dev <网络接口>

根据我们的假设,命令如下:

sudo ip route add 172.16.50.0/24 via 192.168.1.254 dev eth0
  • 16.50.0/24:我们想要访问的目标网络。
  • via 192.168.1.254:指定到达该网络必须经过的下一跳网关。
  • dev eth0:指定数据包从哪个网络接口发出(eth0 需替换为你的实际网卡名称,可通过 ip addr 命令查看)。

验证路由

再次运行 ip route show,你应该能看到新添加的路由条目:

default via 192.168.1.1 dev eth0
172.16.50.0/24 via 192.168.1.254 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10

服务器就可以通过 168.1.254 这个网关与 16.50.0/24 网络进行通信了,你可以使用 pingtraceroute 命令进行测试。

永久添加静态路由(重启后依然有效)

对于服务器而言,配置必须是持久的,根据 CentOS 的版本,永久配置的方法有所不同。

CentOS系统下如何使用旧命令添加静态路由并生效?

适用于 CentOS 7 / 8 / 9 (使用 NetworkManager)

现代的 CentOS 版本普遍使用 NetworkManager 来管理网络,我们可以使用 nmcli(NetworkManager Command-Line Interface)工具来永久添加路由。

确定网络连接名称

找到你正在使用的网络连接的名称,它不一定是网卡名称。

nmcli connection show

输出可能如下,NAME 列就是连接名称:

NAME    UUID                                  TYPE      DEVICE
eth0    5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0

这里我们的连接名称是 eth0

添加静态路由

使用 nmcli connection modify 命令,注意 +ipv4.routes 前面的 号,它表示添加一条新路由,而不是覆盖现有路由。

sudo nmcli con modify "eth0" +ipv4.routes "172.16.50.0/24 192.168.1.254"

重新激活网络连接

配置修改后,需要重新启动网络连接使其生效。

sudo nmcli con down "eth0" && sudo nmcli con up "eth0"

验证

再次使用 ip route show 命令验证路由是否已成功添加,此方法配置的路由会被写入 NetworkManager 的配置文件中,因此系统重启后会自动加载。

适用于 CentOS 6 (使用网络脚本)

在较旧的 CentOS 6 系统中,网络配置主要通过 /etc/sysconfig/network-scripts/ 目录下的脚本文件完成。

创建或编辑路由文件

在该目录下,为你的网卡(eth0)创建一个名为 route-eth0 的文件。

CentOS系统下如何使用旧命令添加静态路由并生效?

sudo vi /etc/sysconfig/network-scripts/route-eth0

添加路由配置

在文件中添加如下内容:

16.50.0/24 via 192.168.1.254 dev eth0

如果你需要添加多条路由,每行写一条。

重启网络服务

保存文件后,重启网络服务以使配置生效。

sudo service network restart

路由管理命令小编总结

为了方便查阅,以下表格小编总结了常用的路由管理命令。

场景 方法 命令/文件路径
临时添加路由 命令行 sudo ip route add <目标网络> via <网关> dev <接口>
临时删除路由 命令行 sudo ip route del <目标网络>
永久添加路由 CentOS 7/8/9 (nmcli) sudo nmcli con modify "<连接名>" +ipv4.routes "<目标网络> <网关>"
永久添加路由 CentOS 6 (网络脚本) /etc/sysconfig/network-scripts/route-<接口名>
查看路由表 命令行 ip route showip rroute -n

相关问答 (FAQs)

问题 1:我如何检查我的 CentOS 系统当前所有的路由表?

解答: 你可以使用以下几个命令来查看系统的路由表,最推荐的是使用 ip 命令集,因为它是现代 Linux 系统的标准工具。

  • ip route show:这是最完整的命令,会以易读的格式显示所有路由条目。
  • ip r:是 ip route show 的简写形式,功能完全相同,更快捷。
  • route -n:这是使用较老的 route 命令。-n 参数的作用是不将 IP 地址解析为主机名,从而显示得更快更直接。

问题 2:添加路由时,提示 'SIOCADDRT: No such process' 错误是什么意思?

解答: 这个错误通常表示你指定的网关地址是“不可达的”,系统无法找到通往这个网关的路径,最常见的原因是:

  1. 网关 IP 地址错误:你输入的网关 IP 有拼写错误。
  2. 网关不在同一子网:你指定的网关(如 168.1.254)与你服务器的 IP 地址(如 168.1.10)不在同一个局域网子网内,服务器无法直接与它通信。
  3. 没有到网关的路由:在没有默认路由的情况下,如果网关本身不在服务器直接连接的网络上,就会发生此错误。

解决方法:请首先使用 ping 命令测试你指定的网关 IP 是否可以 ping 通,如果不能,请检查网关 IP 地址是否正确,并确保它在你的服务器可以直接访问的网络上。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.