RHEL7系统重启后出现默认路由异常添加问题,导致网络连通性异常,排查过程首先检查网络配置文件,发现ifcfg-eth0中GATEWAY配置与实际路由冲突;其次查看NetworkManager服务日志,确认其未正确处理静态路由;最后检查/etc/rc.local,发现存在冗余路由添加命令,解决方法为删除ifcfg-eth0中的重复GATEWAY配置,调整NetworkManager服务优先级,并清理rc.local中的冗余命令,重启后路由恢复正常,网络连通性稳定。
问题描述
在RHEL7(Red Hat Enterprise Linux 7)系统中,管理员有时会遇到重启后网络路由表异常增加一条默认路由的情况,正常情况下,系统默认路由应由NetworkManager根据接口配置(如静态网关或DHCP分配)自动管理,重启后应保持与配置一致,但异常情况下,路由表中可能出现重复或多余的默认路由(如default via 192.168.1.1 dev eth0),可能导致网络访问异常(如部分流量路由错误、网络延迟或连接中断),本文将结合RHEL7的网络管理机制,分析该问题的常见原因及排查解决步骤。
问题原因分析
RHEL7默认使用NetworkManager作为网络管理服务,负责动态配置网络接口、路由及DNS等信息,重启后出现多余默认路由,通常与NetworkManager的配置逻辑、接口配置文件或外部网络服务(如DHCP)相关,以下是常见原因:
ifcfg配置文件中重复定义网关
在RHEL7中,网络接口配置文件位于/etc/sysconfig/network-scripts/(如ifcfg-eth0),若手动在文件中通过GATEWAY参数定义了网关,同时NetworkManager又被允许通过DHCP或其他方式获取网关,可能导致重启后NetworkManager重复添加默认路由。

DEFROUTE参数配置不当
DEFROUTE参数控制是否将该接口作为默认路由的出口(默认为yes),若多个接口的DEFROUTE均为yes,且接口均配置了网关,NetworkManager可能会根据接口优先级(如Metric值)添加默认路由,但若配置冲突,可能产生多余路由。
DHCP服务器返回多余路由
若通过DHCP动态获取IP地址,且DHCP服务器配置中返回了option:router(默认路由)和option:static_routes(静态路由),而客户端未正确过滤重复路由,可能导致NetworkManager添加多余默认路由。
NetworkManager服务配置冲突
NetworkManager的配置文件/etc/NetworkManager/NetworkManager.conf中,若plugins参数设置为ifcfg-rh(默认)或keyfile,且与接口配置文件的逻辑冲突,可能导致路由管理异常,手动修改路由后未通过NetworkManager管理,重启后可能被覆盖或重复添加。
自定义路由脚本残留
若系统中存在自定义的路由添加脚本(如/etc/rc.local、/etc/rc.d/rc.local或NetworkManager的dispatcher脚本),且脚本中包含添加默认路由的命令,重启后脚本被执行,可能与NetworkManager管理的路由产生重复。
排查步骤
确认异常路由信息
首先使用ip route或route -n命令查看当前路由表,定位多余的默认路由。
[root@server ~]# ip route default via 192.168.1.1 dev eth0 proto dhcp metric 100 default via 10.0.0.1 dev eth1 proto static metric 200 # 异常多余路由 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.50
若发现存在多个default via条目,则确认路由异常。
检查接口配置文件
查看异常路由对应接口的配置文件(如ifcfg-eth0),重点关注以下参数:
GATEWAY:是否手动定义了网关(应避免与DHCP分配的网关重复);DEFROUTE:是否为yes(若为非默认接口,建议设为no);PEERROUTES:是否允许根据DHCP信息添加路由(默认为yes,若需阻止DHCP路由可设为no)。
示例:
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERROUTES=yes GATEWAY=192.168.1.1 # 若通过DHCP获取网关,此行应注释或删除 IPV4_FAILURE_FATAL=no NAME=eth0 DEVICE=eth0 ONBOOT=yes
检查NetworkManager配置
查看/etc/NetworkManager/NetworkManager.conf文件,确认plugins参数是否与接口配置文件一致(默认为ifcfg-rh),并检查[ifcfg-rh]段落中的managed参数(默认为1,表示管理所有接口),若修改过配置,需重启NetworkManager服务:
[root@server ~]# systemctl restart NetworkManager
检查DHCP分配的路由信息
若接口通过DHCP获取IP,查看DHCP客户端日志或租约文件,确认DHCP服务器是否返回了多余路由。
[root@server ~]# cat /var/lib/dhclient/dhclient-eth0.lease | grep "option routers" option routers 192.168.1.1, 10.0.0.1; # 若返回多个路由,可能导致问题
检查自定义路由脚本
检查以下脚本中是否存在添加默认路由的命令:
/etc/rc.local(需确认是否可执行,RHEL7默认未启用);/etc/NetworkManager/dispatcher.d/目录下的脚本(NetworkManager在接口状态变化时执行);/etc/sysconfig/network文件中的

