在CentOS系统中添加路由是网络管理中常见的重要操作,无论是临时解决网络连通性问题,还是为服务器配置静态路由以优化网络路径,都需要掌握正确的方法,本文将详细介绍在CentOS系统中添加路由的多种方式,包括临时添加和永久添加,并针对不同场景提供具体操作步骤和注意事项,帮助读者全面掌握路由配置技能。

理解路由表的基本概念
在开始操作前,首先需要明确路由表的作用,路由表是操作系统网络层的核心组件,它记录了数据包的转发路径,决定了当目标地址不在本地网络时,数据包应该通过哪个网关发送,查看当前系统的路由表,可以使用ip route show或route -n命令。ip route show会显示目标网络、网关、接口、跃点数等信息,而route -n则以数字形式展示更简洁的路由条目,了解现有路由表结构,有助于正确判断是否需要添加新路由以及如何避免路由冲突。
临时添加路由的方法
临时添加路由适用于测试、故障排查或短期网络调整,其特点是重启网络服务或系统后路由条目会自动失效,这种方法无需修改配置文件,操作简单快捷,适合临时性需求。
添加默认路由
默认路由是当目标地址不在任何已知网络时使用的最后路径,通常指向网关,使用ip route add命令添加默认路由,语法为:
sudo ip route add default via <网关IP> dev <网络接口>
若网关IP为168.1.1,网络接口为eth0,则执行:
sudo ip route add default via 192.168.1.1 dev eth0
添加后可通过ip route show验证,若需删除临时默认路由,使用sudo ip route del default via 192.168.1.1 dev eth0。
添加静态路由
静态路由用于指定特定目标网络的固定路径,适用于多网关环境或特殊网络访问需求,语法为:
sudo ip route add <目标网络/子网掩码> via <下一跳IP> dev <网络接口>
为目标网络0.0.0/24添加路由,下一跳IP为168.1.254,接口为eth0:
sudo ip route add 10.0.0.0/24 via 192.168.1.254 dev eth0
若需添加路由表项(多路由场景),可添加table参数,如sudo ip route add 10.0.0.0/24 via 192.168.2.254 dev eth1 table 100,并通过ip route show table 100查看。
注意事项
临时路由仅在当前会话有效,重启网络或系统后即丢失,若需长期生效,必须采用永久配置方法,添加路由时需确保目标网络与接口IP网段不冲突,避免形成路由环路。
永久添加路由的方法
永久添加路由需要修改系统配置文件,使路由在重启网络服务或系统后依然保留,CentOS 7及以上版本推荐使用NetworkManager或ifcfg配置文件方式,而CentOS 6及更早版本多使用route命令或/etc/sysconfig/network-scripts/下的路由配置文件。

使用NetworkManager(CentOS 7/8/9)
对于使用NetworkManager管理的网络接口,可以通过修改接口配置文件添加静态路由,以eth0为例,首先定位配置文件路径(通常为/etc/sysconfig/network-scripts/route-eth0),若不存在则创建,文件格式如下:
# 目标网络/子网掩码 via 下一跳IP dev 网络接口
10.0.0.0/24 via 192.168.1.254 dev eth0
# 多条路由可分行添加
172.16.0.0/16 via 192.168.1.253 dev eth0
保存后重启网络服务:sudo systemctl restart NetworkManager,或重启接口:sudo nmcli con down eth0 && sudo nmcli con up eth0,使用ip route show验证路由是否永久生效。
使用ifcfg配置文件(CentOS 6/7)
传统ifcfg方式通过在接口配置文件中添加ROUTE参数实现,编辑/etc/sysconfig/network-scripts/ifcfg-eth0,添加以下内容:
ROUTE1="10.0.0.0/24 via 192.168.1.254 dev eth0"
ROUTE2="172.16.0.0/16 via 192.168.1.253 dev eth0"
其中ROUTE1、ROUTE2表示多条路由,格式为目标网络/子网掩码 via 下一跳IP dev 接口,保存后执行sudo ifdown eth0 && sudo ifup eth0重启接口,路由将永久生效。
使用/etc/sysconfig/network-scripts/route-<接口>文件
此方法与NetworkManager方式类似,但更通用,在/etc/sysconfig/network-scripts/目录下创建route-<接口>文件(如route-eth0为:
# 静态路由配置
ADDRESS0=10.0.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.254
这种方式通过ADDRESS、NETMASK、GATEWAY参数定义路由,每条路由对应一组编号(如0、1、2),保存后重启网络服务即可生效。

路由管理的高级技巧
路由优先级与跃点数
跃点数(Metric)决定路由的优先级,数值越小优先级越高,添加路由时可指定跃点数,语法为:
sudo ip route add <目标网络> via <下一跳> dev <接口> metric <跃点数>
sudo ip route add 10.0.0.0/24 via 192.168.1.254 dev eth0 metric 100,永久配置时,在ifcfg文件中添加METRIC=100,或在route-<接口>文件中通过METRIC0=100指定。
删除路由
无论是临时路由还是永久路由,删除操作均需与添加方式对应,临时路由使用ip route del,语法与add一致;永久路由需删除配置文件中的对应条目并重启网络服务,删除ifcfg-eth0中的ROUTE1后,重启接口使配置生效。
路由故障排查
添加路由后若无法访问目标网络,可通过以下步骤排查:
- 使用
ping和traceroute测试连通性; - 检查路由表是否正确:
ip route show | grep <目标网络>; - 验证网关可达性:
ping <下一跳IP>; - 检查防火墙规则是否阻止流量:
sudo firewall-cmd --list-all。
相关问答FAQs
Q1:添加路由后无法访问目标网络,可能的原因有哪些?
A:可能原因包括:目标网络与本地IP网段冲突导致路由环路;下一跳网关不可达(如网关故障或防火墙拦截);路由跃点数过高导致未被优先使用;防火墙规则阻止了目标端口的流量;配置文件语法错误(如永久路由中格式错误),建议通过traceroute跟踪路径,检查网关连通性,并验证配置文件语法。
Q2:如何为CentOS系统添加多个网关并实现负载均衡?
A:CentOS系统可通过多路由表策略实现多网关负载均衡,首先添加多条路由并指定不同路由表,
sudo ip route add default via 192.168.1.1 dev eth0 table 1
sudo ip route add default via 192.168.1.2 dev eth1 table 2
然后配置策略路由,根据源IP选择路由表:
sudo ip rule add from 192.168.1.10 table 1
sudo ip rule add from 192.168.1.20 table 2
最后将策略路由保存为永久配置(如写入/etc/sysconfig/network-scripts/下的规则文件),实现基于源IP的负载均衡。