RHEL7系统重启后异常添加默认路由问题排查与解决

admin
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重复添加默认路由。

RHEL7系统重启后异常添加默认路由问题排查与解决

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 routeroute -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文件中的
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码