在CentOS系统中配置路由是网络管理中的核心技能,其核心上文归纳在于:必须明确区分临时路由用于即时测试与故障排查,而永久路由则用于确保服务器重启或网络服务重启后业务连接的稳定性,在实际生产环境中,推荐优先使用ip route命令进行操作,并根据CentOS版本的不同,分别采用/etc/sysconfig/networkscripts/下的路由文件或nmcli工具进行持久化配置,以确保系统的高可用性与网络的可维护性。
理解Linux路由表与数据包转发原理
在深入操作之前,需要理解路由表的工作机制,Linux内核维护着多张路由表,其中最主要的是主路由表,当数据包到达服务器时,内核会根据最长匹配原则查找路由表,决定数据包的下一跳地址,如果目标IP地址在本地局域网内,系统会直接发送;如果不在,系统会查看默认网关,在CentOS中增加路由,本质上就是告诉内核:“对于前往特定网段(如192.168.20.0/24)的数据包,不要走默认网关,而是通过指定的网关(如192.168.1.254)转发。”


这种配置在多网卡环境、跨网段通信、VPN连接以及构建复杂的网络拓扑时尤为常见,错误的路由配置可能导致网络中断或路由环路,因此操作的精准性至关重要。
临时路由配置:使用ip命令
ip命令是现代Linux发行版(包括CentOS 7及以后版本)中管理网络的标准工具,它取代了老旧的route命令,临时路由的优势在于立即生效,且无需重启网络服务,非常适合用于验证路由策略的正确性。
添加一条静态路由的语法如下:
ip route add <目标网段> via <网关IP> dev <网卡名称>
服务器有两张网卡,eth0连接外网,eth1连接内网,现需要访问内网中的0.0.0/8网段,网关为168.1.1,该网关连接在eth1上,命令如下:
ip route add 10.0.0.0/8 via 192.168.1.1 dev eth1
执行后,可以使用ip route show或route n查看当前路由表,确认新增条目是否位于列表中,需要注意的是,这种添加方式仅在系统运行期间有效,一旦服务器重启或执行systemctl restart network,该路由条目将会丢失。
删除临时路由的命令为:
ip route del 10.0.0.0/8 via 192.168.1.1 dev eth1
CentOS 7永久路由配置:修改网卡配置文件
对于CentOS 7而言,传统的网络脚本管理方式依然主流,要实现路由的持久化,需要在/etc/sysconfig/networkscripts/目录下创建与网卡对应的路由文件。
假设网卡配置文件名为ifcfgeth1,则路由文件应命名为routeeth1,在该文件中,每一行代表一条路由规则,格式非常严格:
目标网段/掩码长度 via 网关IP
沿用上述例子,routeeth1应如下:
0.0.0/8 via 192.168.1.1
如果需要添加多条路由,只需换行继续添加,再添加一条指向16.0.0/12的路由:
0.0.0/8 via 192.168.1.1 172.16.0.0/12 via 192.168.1.1
编写完成后,保存文件并重启网络服务使配置生效:

systemctl restart network
即使服务器重启,这些路由规则也会在系统启动时自动加载,这种方法稳定可靠,是CentOS 7生产环境的首选方案。
CentOS 8及以上永久路由配置:利用nmcli工具
从CentOS 8开始,系统默认使用NetworkManager管理网络,传统的networkscripts逐渐被弃用,推荐使用nmcli命令行工具来管理持久化路由,这符合现代Linux系统的管理规范,且能更好地与NetworkManager的交互逻辑兼容。
使用nmcli connection show查看网卡的连接名称(通常为System eth1或类似名称),假设连接名称为eth1,添加静态路由的命令如下:
nmcli connection modify eth1 +ipv4.routes "10.0.0.0/8 192.168.1.1"
这里的+ipv4.routes表示追加一条路由,如果需要替换所有现有路由,可以使用ipv4.routes(不带加号),如果有多条路由,可以重复执行命令,或者用引号将多个路由规则括起来,用逗号分隔(尽管分步执行更清晰且不易出错)。
配置完成后,需要重新加载连接或重启网卡使配置生效:
nmcli connection up eth1
验证配置是否成功写入,可以使用nmcli connection show eth1查看详细信息,在ipv4.routes字段中应当能看到刚才添加的规则,这种方式不仅符合CentOS 8/9/Stream的最佳实践,还能确保配置在NetworkManager重启后依然有效。
多网卡场景下的路由策略与排错
在多网卡环境中,增加路由往往伴随着源地址策略路由的需求,服务器有两个公网出口,希望来自网卡A的流量回复时也走网卡A,虽然基本的ip route add可以解决下一跳问题,但在复杂场景下可能需要配置ip rule。
常见的排错思路包括:
- 检查连通性:使用
ping命令测试目标网段的网关是否可达,如果网关不可达,添加路由将失败或无效。 - 检查路由表:确认添加的路由是否生效,且优先级(Metric)是否合理,如果存在两条到达同一网段的路由,内核会选择Metric值较小的那条。
- 查看日志:使用
journalctl u NetworkManager查看网络服务日志,排查配置文件语法错误或IP冲突问题。
相关问答
Q1:在CentOS中添加了路由后无法访问目标网络,是什么原因? A1:这通常由三个原因导致,指定的“下一跳”网关IP地址必须与当前服务器在同一个局域网段内,且是可达的,如果网关不通,路由无效,目标网关服务器可能开启了防火墙,禁止了转发或ICMP回显,检查是否发生了路由冲突,例如存在更宽泛的默认路由覆盖了刚添加的特定路由。
Q2:如何查看当前系统所有的路由表信息? A2:可以使用ip route show命令查看主路由表,这是最常用的方式,如果需要查看所有路由表(包括本地路由表等),可以使用ip route show table all,对于更详细的统计信息,可以使用ip s route show,这有助于分析数据包的流量走向。 能帮助您在CentOS系统中熟练配置路由,如果您在实施过程中遇到特殊的网络拓扑问题,欢迎在评论区分享您的具体环境,我们可以共同探讨更优的解决方案。
