在网络管理中,路由是决定数据包从源头到目的地的路径的过程,对于大多数连接到互联网的设备,系统会自动配置一个默认路由,即所有未知目标网络的流量都通过一个默认网关发送,在更复杂的网络环境中,例如企业内网、数据中心或连接到特定“旧”网络段时,我们常常需要手动添加静态路由,以确保数据能够准确、高效地到达特定目的地,本文将详细介绍在 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
网络进行通信了,你可以使用 ping
或 traceroute
命令进行测试。
永久添加静态路由(重启后依然有效)
对于服务器而言,配置必须是持久的,根据 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
的文件。
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 show 或 ip r 或 route -n |
相关问答 (FAQs)
问题 1:我如何检查我的 CentOS 系统当前所有的路由表?
解答: 你可以使用以下几个命令来查看系统的路由表,最推荐的是使用 ip
命令集,因为它是现代 Linux 系统的标准工具。
ip route show
:这是最完整的命令,会以易读的格式显示所有路由条目。ip r
:是ip route show
的简写形式,功能完全相同,更快捷。route -n
:这是使用较老的route
命令。-n
参数的作用是不将 IP 地址解析为主机名,从而显示得更快更直接。
问题 2:添加路由时,提示 ‘SIOCADDRT: No such process’ 错误是什么意思?
解答: 这个错误通常表示你指定的网关地址是“不可达的”,系统无法找到通往这个网关的路径,最常见的原因是:
- 网关 IP 地址错误:你输入的网关 IP 有拼写错误。
- 网关不在同一子网:你指定的网关(如
168.1.254
)与你服务器的 IP 地址(如168.1.10
)不在同一个局域网子网内,服务器无法直接与它通信。 - 没有到网关的路由:在没有默认路由的情况下,如果网关本身不在服务器直接连接的网络上,就会发生此错误。
解决方法:请首先使用 ping
命令测试你指定的网关 IP 是否可以 ping 通,如果不能,请检查网关 IP 地址是否正确,并确保它在你的服务器可以直接访问的网络上。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复