Linux系统重启network服务失败

问题描述
使用KVM通过修改配置文件配置好网卡IP,使用命令行service network restart 重启网络服务失败。

如图:

Linux系统重启network服务失败

使用图形化管理工具配置IP,在系统界面右上角可以看到网卡状态为未连接,配置好IP以后使用service network restart命令时报同样的错。

如图:

Linux系统重启network服务失败

告警信息
使用ping命令查看路由是否通畅,系统提示“network is unreachable”。
处理过程
解决的方法很简单,直接将NetworkManager服务关闭即可。步骤描述如下:

步骤 1 查看NetworkManager服务是否开启。

因系统版本各异,NetworkManager服务的具体名称可以用chkconfig --list查看。

如图所示:

Linux系统重启network服务失败

从图中,可以发现NetworkManager服务已经开启了。

步骤 2 禁用NetworkManager服务。

将当前激活的服务关闭,使用下面的命令:

service NetworkManager stop

使用下面的命令禁止服务自启动。

chkconfig NetworkManager off

步骤 3 使用脚本方式配置IP地址。

根因
使用/etc/network/interfaces脚本文件配置IP信息的时候,使用的是Network服务;使用图形化界面配置IP地址的时候,使用的是NetworkManager服务。

Netwok服务和NetworkManager服务之间存在下面的关系:

  • 当系统内无NetworkManager时,系统默认使用Netwok服务进行网络配置。
  • 当系统内启用了NetworkManager之后,NetworkManager默认接管了系统的网络配置。此时需要使用NetworkManager自己的网络配置参数来进行配置。适用于桌面环境,例如使用笔记本等。

Netwok服务和NetworkManager服务之间不能同时共存,两者为了避免冲突,又能共享配置,就有下面的解决方案:

  • 当Network-Manager发现/etc/network/interfaces被改动的时候,则关闭自己(显示为未托管),除非NetworkManager的相关标志位设置成真。
  • 当NetworkManager的相关标志位设置成真时,/etc/network/interfaces,则不生效。

从Red Hat 6开始,默认是开启NetworkManager服务的,此时通过修改脚本的方式配置IP地址将无效,除非将相关标志位设置为假。例如,使用DHCP配置的IP地址,其格式如下:

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="00:1F:29:57:8B:A8"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

不同的系统中,NetworkManager服务的标志位不同。例如Ubuntu中是存放在配置文件/etc/NetworkManager/nm-system-settings.conf中,名称为managed。

配置文件修改后,需要重启NetworkManager服务。

本案例中,系统默认启用了NetworkManager服务,详细信息如下所示:

[root@localhost ~]# chkconfig|grep -i network
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost ~]#

此时再启用Network服务时是不生效的。所以重启Network服务会失败。

建议与总结
从Red Hat 6开始,默认是开启NetworkManager服务的,此时通过修改脚本的方式配置IP地址将无效。
上一篇:IOS初级:app的启动图像


下一篇:04、extern引用全局变量